Search code examples
svngitgit-svncommit

How to see what has been checked into git, but hasn't been committed to svn via dcommit?


I'm using git-svn. How can I get a list of what I've committed into git, but haven't yet committed to the SVN repository since the last git svn dcommit? That is, how can I verify what is about to be sent if I do a dcommit?


Solution

  • The --dry-run option for git svn dcommit is very useful for finding out exactly what will be committed to Subversion. In particular that has the properties that:

    • It doesn't actually commit anything to Subversion
    • It tells you which diffs will be calculated to create new revisions in Subversion
    • It tells you which branch in Subversion you will be committing to - this is sometimes non-obvious, since it is taken from the Subversion branch specified in the first ancestor commit with a git-svn-id in its commit message

    In general it's a good idea to do git svn rebase before even thinking about using dcommit, so that your history is linearized - otherwise merge commits may not make much sense in the Subversion history. (If you've done that, then git log and gitk --all will also be essentially equivalent, but I think git svn dcommit --dry-run gives you a more accurate picture of what's about to happen, even if it's more difficult to interpret.)