[LLVMdev] git

David A. Greene greened at obbligato.org
Fri Jul 22 22:55:44 PDT 2011

Joerg Sonnenberger <joerg at britannica.bec.de> writes:

> The core issue here is that you are effectively telling us
> that the current workflow is not supported by Git.

No, it's fully supported.  We can even run things exactly the same way.
But we don't _have_ to do that.

> You are also telling us that the current workflow is in some way wrong
> or misguided or suboptimal and has to change.

I don't think anyone said that.  But git does open up a lot more
possibilities.  We don't need to explore those possibilities right away.
I would say we should not until everyone gets comfortable.

> What are the precise gains from changing the status quo? What can you
> do by moving everything to Git that you couldn't do in the current
> world with svn as master repository and the additional git mirror?

I work on a third-party branch.  I can sync with upstream and push our
changes back to upstream nearly trivially with git.  With svn it is
unpleasent, to say the least.

The centralized model is in many ways completely wrong for a codebase
like LLVM which is explicitly expected to be forked and enhanced in
proprietary ways.  By definition there will be many copies of the
repository.  A DVCS allows everyone to keep those copies in sync.

To me this is the killer feature of any DVCS.

> If the argument is better branching, I would like to see it clarified
> for how this improves the workflow.

I often come across the case where I want to share some changes with a
few colleagues but don't want to push it to "mainline" for fear of
disturbing too many people.  Local branches are great for this kind of

> Advocats of DVCS tend to ignore the cost of the move. The linear commit
> graph and associated properties is the biggest one.

I think the linear commit graph is in many ways misleading.  As has been
pointed out, it is common to think "r33423" implies every change before
that, but it does not.  It is very easy to forget to merge a change from
one branch to another.  git has some nice ways to verify that a change
has migrated from one branch to another.  That doesn't require a DVCS
but to my knowledge svn doesn't have something similar built-in.  I
don't know about other SCM systems.


More information about the llvm-dev mailing list