create a new svn branch with git-svn

While working with git-svn, and a ‘typical’ svn repo /trunk, /branches/…, /tags/…
How do I push a local branch to a new branch inside of /branches ?

  • git svn dcommit fails with “Incomplete data: Delta source ended unexpectedly”
  • Cloning a git-svn repository with svn metadata
  • How do I use IntelliJ with Subversion, Git and “git-svn”
  • Why are git submodules incompatible with svn externals?
  • How to recover from “unordered stage entries in index” error in git
  • Forgot to push and lost changes
  • svn2git or git svn import
  • How to set upstream branch in git-svn?
  • One Solution collect form web for “create a new svn branch with git-svn”

    Say we have a skeleton Subversion repository with empty trunk/, branches/, and tags/:

    /tmp$ git svn clone -s file:///tmp/svn-repo/ git-svn-repo
    Initialized empty Git repository in /tmp/git-svn-repo/.git/
    r1 = 80bdcfc0cf248b74b914a1b5f99ab89fb4e31b6c (refs/remotes/trunk)
    Checked out HEAD:
      file:///tmp/svn-repo/trunk r1
    
    /tmp$ cd git-svn-repo/
    
    /tmp/git-svn-repo$ git svn branch my-branch
    Copying file:///tmp/svn-repo/trunk at r1 to file:///tmp/svn-repo/branches/my-branch...
    Found possible branch point: file:///tmp/svn-repo/trunk => file:///tmp/svn-repo/branches/my-branch, 1
    Found branch parent: (refs/remotes/my-branch) 80bdcfc0cf248b74b914a1b5f99ab89fb4e31b6c
    Following parent with do_switch
    Successfully followed parent
    r2 = 56150bbd9d3aec94972ff46d030e30ec726595ab (refs/remotes/my-branch)

    The explanation below will switch back-and-forth between two views of the same repository, a Subversion working copy of the entire repo (not just trunk) and a git-svn clone. For clarity, each shell prompt’s prefix will indicate the current directory.

    On the svn side, you’ll now see

    /tmp/svn-repo-wc$ svn up
    A    branches/my-branch
    Updated to revision 2.

    You’ll also see the new branch on the git side:

    /tmp/git-svn-repo$ git branch -r
      my-branch
      trunk

    To commit to the newly created branch, first switch to it:

    /tmp/git-svn-repo$ git reset --hard remotes/my-branch
    HEAD is now at 2c9bef2 Create branch my-branch

    Next, we’ll create a dummy git commit

    /tmp/git-svn-repo$ touch on-my-branch
    /tmp/git-svn-repo$ git add on-my-branch
    /tmp/git-svn-repo$ git commit -m 'First commit to my-branch'
    [master b94a0eb] First commit to my-branch
     0 files changed, 0 insertions(+), 0 deletions(-)
     create mode 100644 on-my-branch

    and finally send it to Subversion:

    /tmp/git-svn-repo$ git svn dcommit
    Committing to file:///tmp/svn-repo/branches/my-branch ...
        A   on-my-branch
    Committed r3
        A   on-my-branch
    r3 = d3c5ba3e03e5cdee96f470ff4c9898eb7c523ed8 (refs/remotes/my-branch)
    No changes between current HEAD and refs/remotes/my-branch
    Resetting to the latest refs/remotes/my-branch

    The Subversion working-copy gives us confirmation:

    /tmp/svn-repo-wc$ svn up
    A    branches/my-branch/on-my-branch
    Updated to revision 3.
    Git Baby is a git and github fan, let's start git clone.