git/list[1] front-page[2] threads[3] people[4] search[5] about
 

git-svn: Use prefix by default?

From
Thomas Ferris Nicolaisen <tfnico@gmail.com>
Date
Aug 22, 2013, 09:02 UTC
Message-ID
<CAEcj5uVRcXF+XADFvy_q2mbQOdWPZkz57q1vePOqroMbQw4+HA@mail.gmail.com>

I've recently been forced back into using git-svn, and while I was at it, I noticed that git-svn generally behaves a lot better when it is initialized using the --prefix option.

For example, I make a standard-layout svn clone:
$ git svn clone -s https://svn.company.com/repos/project-foo/
.. and end up with this .gitconfig:
[svn-remote "svn"]
        url = https://svn.company.com/repos/
        fetch = project-foo/trunk:refs/remotes/trunk
        branches = project-foo/branches/*:refs/remotes/*
        tags = project-foo/tags/*:refs/remotes/tags/*
And my remote branches looks like this:
    remotes/trunk
    remotes/feat-bar

Now, let's say I want to work on the feat-bar branch, so I attempt to create a tracking branch by the same name:

$ git checkout feat-bar # will detach head $ git checkout remotes/feat-bar # will detach head $ git checkout -t remotes/feat-bar # fatal: Missing branch name; try -b $ git checkout -tb remotes/feat-bar # Branch remotes/feat-bar set up to track local branch master.

Well, that's not what I wanted.. So I end up doing it the good old-fashioned way:

$ git checkout -tb feat-bar remotes/feat-bar # works
Now I am up and rolling, but I get this warning with every checkout or rebase:
     warning: refname 'feat-bar' is ambiguous.

So, let's see what happens when I create the svn clone using a --prefix=mirror/ instead. Here's the config:

[svn-remote "svn"]
        url = https://svn.company.com/repos/
        fetch = project-foo/trunk:refs/remotes/mirror/trunk
        branches = project-foo/branches/*:refs/remotes/mirror/*
        tags = project-foo/tags/*:refs/remotes/mirror/tags/*
Here are my remote branches:
     remotes/mirror/trunk
     remotes/mirror/feat-bar
Let's create the tracking branch:

$ git checkout feat-bar # Branch feat-bar set up to track remote branch feat-bar from mirror.

Voila, worked on the first try. And no more warnings about ambiguous refnames.

So now my question is: If using a prefix is so healthy for git's branch tracking conventions, why doesn't git-svn default to use some prefix like 'origin' or something when initializing a git svn clone?

The examples were made using 1.8.1.2 on OSX by the way.
Next: Johan Herland
Message 1 of 23 in “git-svn: Use prefix by default?”
  1. Thomas Ferris NicolaisenAug 22, 2013
  2. Johan HerlandSep 30, 2013
  3. git svn: Set default --prefix='origin/' if --prefix is not givenJohan Herland, Sep 30, 2013
  4. Eric WongOct 1, 2013
  5. Johan HerlandOct 1, 2013
  6. Eric WongOct 3, 2013
  7. 1/3 Documentation/git-svn: Promote the use of --prefix in docs + examplesJohan Herland, Oct 5, 2013
  8. 2/3 git-svn: Warn about changing default for --prefix in Git v2.0Johan Herland, Oct 5, 2013
  9. Eric SunshineOct 9, 2013
  10. Johan HerlandOct 9, 2013
  11. 3/3 Git 2.0: git svn: Set default --prefix='origin/' if --prefix is not givenJohan Herland, Oct 5, 2013
  12. Philip OakleyOct 6, 2013
  13. Johan HerlandOct 6, 2013
  14. Eric SunshineOct 9, 2013
  15. Johan HerlandOct 9, 2013
  16. 0/3 Change git-svn's default --prefix in Git v2.0Johan Herland, Oct 11, 2013
  17. 1/3 Documentation/git-svn: Promote the use of --prefix in docs + examplesJohan Herland, Oct 11, 2013
  18. 2/3 git-svn: Warn about changing default for --prefix in Git v2.0Johan Herland, Oct 11, 2013
  19. Eric WongOct 12, 2013
  20. 3/3 Git 2.0: git svn: Set default --prefix='origin/' if --prefix is not givenJohan Herland, Oct 11, 2013
  21. Eric WongApr 19, 2014
  22. git-svn.txt: Retain a description og pre-v2.0 default prefixJohan Herland, Apr 19, 2014
  23. Eric WongApr 19, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.