git-svn: how do I create a new svn branch via git?

GitVersion ControlGit Svn

Git Problem Overview


I have a git repository which tracks an svn repository. I cloned it using --stdlayout.

I created a new local branch via git checkout -b foobar

Now I want this branch to end up in …/branches/foobar in the svn repository.

How do I go about that?

(snipped lots of investigative text. see question history if you care)

Git Solutions


Solution 1 - 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 ...

Solution 2 - Git

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.

Solution 3 - Git

@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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionkchView Question on Stackoverflow
Solution 1 - GitJesper Rønn-JensenView Answer on Stackoverflow
Solution 2 - GitkchView Answer on Stackoverflow
Solution 3 - GitBryan J SwiftView Answer on Stackoverflow