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

2019-01-07 01:20发布

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)

3条回答
神经病院院长
2楼-- · 2019-01-07 01:58

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

查看更多
Bombasti
3楼-- · 2019-01-07 02:09

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

查看更多
SAY GOODBYE
4楼-- · 2019-01-07 02:14

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.

查看更多
登录 后发表回答