git-svn: how do I create a new svn branch via git?
I know this question has been answered a while ago, but after reading it, I it might help adding examples of the specific git svn branch command and relate it to a typical workflow.
Like kch answered, use git svn branch
. Here is a full example, (note the -n
for dry-run to test):
git svn branch -n -m "Branch for authentication bug" auth_bug
If this goes well, server replies with answer like this:
Copying https://scm-server.com/svn/portal/trunk at r8914 to https://scm-server.com/svn/portal/branches/auth_bug...
And without the -n
switch the server probably adds something like:
Found possible branch point: https://scm-server.com/svn/portal/trunk => https://scm-server.com/portal/branches/auth_bug, 8914
Found branch parent: (refs/remotes/auth_bug)
d731b1fa028d30d685fe260f5bb912cbf59e1971
Following parent with do_switch
Successfully followed parent r8915 = 6ed10c57afcec62e9077fbeed74a326eaa4863b8
(refs/remotes/auth_bug)
The best part of it, now you can create a local branch based on your remote branch like so:
git checkout -b local/auth_bug auth_bug
Which means "check out and create local branch named auth_bug
and make it follow the remote branch (last parameter) auth_bug
Test that your local branch works on that remote branch by using dcommit
with --dry-run
(-n
):
git svn dcommit -n
And SVN server should reply with the new branch name:
Committing to https://scm-server.com/svn/portal/branches/auth_bug ...
as of git v1.6.1, git svn branch
is available.
From the git docs:
branch Create a branch in the SVN repository. -m, --message Allows to specify the commit message. -t, --tag Create a tag by using the tags_subdir instead of the branches_subdir specified during git svn init.
Previous versions of git do not provide a way to create an svn branch.
@kch I just (7 December 2008) compiled the v1.6.1-rc1 tag of git and it does contain the git svn branch command and the documentation for it. So the v1.6.1 release of git should (hopefully) contain this command.