Boost logo

Boost :

Subject: Re: [boost] [git] Mercurial?
From: Daniel James (dnljms_at_[hidden])
Date: 2012-03-23 04:52:43


2012/3/23 Bjørn Roald <bjorn_at_[hidden]>:
>
> I have for my own boost repository used git-svn with success against
> official boost svn.  It is slow, but has worked fine for me from a kubuntu
> box.  It is slow with anything involving use of SVN, especially the clone as
> it is actually fetching all boost history (90000 + commits), but it works.

It's possible that since the point at which you created your clone,
the boost repo crossed the line where it has became too much for
git-svn to cope with. It's faster to create a shallow clone which only
contains recent commits. Something like:

    mkdir boost
    cd boost
    git svn init https://svn.boost.org/svn/boost/trunk/

    # Fetch revsion 77000, and don't try to find its history.
    # This still takes a little while (not hours) and should result
    # in a copy of the specified revision. If using a different
    # revision, pick one that actually changes trunk.
    git svn fetch --no-follow-parent -r77000

    # Bring the clone up to date, and then rebase the repo
    # on to the latest version.
    git svn rebase

This are lots of "Couldn't find revmap" errors because it's trying to
reconcile the merge meta-data with revisions it doesn't have.

>  I have really only used it to track trunk, and I have never tried to push
> as I have no boost commit access.  So as far as a two-way system I really
> have no idea how well it works except for what bold statements you can find
> on the net.

It works okay, it does occasionally break history for a moved file
when it doesn't detect the move. As you probably know, it's very bad
for collaborative work since it's constantly rebasing (rewriting
history because changes that were in git are now in subversion, and
they're not treated as the same thing). I wouldn't really recommend
using git-svn for someone new to git, it's better to first understand
how it's meant to work.

Bazaar is supposed to have smarter subversion integration, but to do
so it tracks a lot more data, so it has no chance of coping with the
boost repo.

> I find tracking multiple branches with git-svn to be somewhat
> broken, at least with regard to follow merging from trunk to release in
> boost.  I have not looked into why that is so.  It may be that I am missing
> something, but trunk fit my needs so I left it with that.

It's probably because we don't do proper merges, but cherry pick or do
sub-tree merges, or even just copy changes over. If you look at the
merge meta-data it's a real mess.

I track a few branches in a single repo, it's very useful for
comparing them. For example, to see the changes to spirit that are
currently in trunk:

    git diff release trunk -- boost/spirit libs/spirit/


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk