[LLVMdev] git-svn dcommit Question

Tobias Grosser tobias at grosser.es
Wed Jul 6 07:38:35 PDT 2011

On 07/06/2011 07:53 AM, David A. Greene wrote:
> Tobias Grosser<tobias at grosser.es>  writes:
>>> Will git-cherrypick work or is the merging process going to confuse
>>> git-svn?
>> To use git-svn you should always have a history without any git
>> merges. Just commit after commit after commit. I do not know what kind
>> of history git-cherrypick produces.
> To clarify, I just need to create the branch at the point just before
> the first commit to go to upstream.

You need to create a branch that has all commits already in svn + a 
linear chain of new commits.

s1 -- s2 -- s3 -- n4 -- n5 -- n6

s* being the existing commits already in svn
n* being the new commits that you want to dcommit

 > Are merges in the history before
> that point going to be a problem?

 From the git-svn man page (without any context):

"Do NOT use git merge or your history will not be compatible with a 
future dcommit!"

As these warnings exist, I never tried to commit anything that has a 
non-linear history.

To your question. How would you have a merge in the history, that is 
before the commits you want to dcommit? This part of the history should 
already be in svn, as you dcommit your new commits always on the current 
status of svn. As the history of the s* commits is basically a mirror of 
the svn repo and svn only allows linear history, I do not see at all how 
a merge should exist in between the s* commits.

In general I would just try. As long as you check with 'git svn -n 
dcommit' before the actual dcommit, you should be good.

>> git svn -n dcommit // Check what would be committed
>> git svn dcommit // Commit
> Ok, thanks.  git-svn is a bit awkward, so thanks everyone for your help!

You are welcome.


More information about the llvm-dev mailing list