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

[PATCH 1/4] git-svn: Document branches with at-sign(@).

From
Sebastian Leske <sebastian.leske@sleske.name>
Date
Nov 18, 2012, 17:08 UTC
Message-ID
<b115a546fa783b4121d118bb8fdb9270443f90fa.1353691892.git.Sebastian.Leske@sleske.name>

git svn will sometimes create branches with an at-sign in the name (branchname@revision). These branches confuse many users and it is a FAQ why they are created. Document when git svn will create them.

Signed-off-by: Sebastian Leske <sebastian.leske@sleske.name>
---

I found various important features of git-svn that are not documented. Thus I created a series of patches to add and update documentation for git-svn. I am sending this as four patches (of which this mail is the first). I have tried my best to make the patches ready for inclusion into git, but if there's any feedback, I'll gladly incorporate it.

 Documentation/git-svn.txt |   26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt
index 8b0d3ad..482d60d 100644
--- a/Documentation/git-svn.txt
+++ b/Documentation/git-svn.txt
@@ -881,6 +881,32 @@ different name spaces.  For example:
 	branches = stable/*:refs/remotes/svn/stable/*
 	branches = debug/*:refs/remotes/svn/debug/*
 
+If 'git svn' is configured to fetch branches (and --follow-branches
+is in effect), it will sometimes create multiple branches for one SVN
+branch, where the addtional branches have names of the form
+'branchname@nnn' (with nnn an SVN revision number).  These additional
+branches are created if 'git svn' cannot find a parent commit for the
+first commit in the branch, to connect the branch to the history of the
+other branches. Normally, 'git svn' will find the git commit that
+corresponds to the SVN revision a branch was created (copied) from and
+use that as the parent. However, it is possible that there is no
+suitable git commit to serve as parent.  This will happen, among other
+reasons, if the SVN branch is a copy of a revision that was not fetched
+by 'git svn' (e.g. because it is an old revision that was skipped with
+'--revision'), or if in SVN a directory was copied that is not tracked
+by 'git svn' (a branch that is not tracked at all, or a subdirectory of
+a tracked branch). In these cases, 'git svn' will still create a git
+branch, but the branch will not be connected to the history of the other
+branches.  'git svn' will also create a commit from the SVN revision the
+branch was copied from, and use that as the parent commit of the branch
+(this is indicated by the message "Initializing parent: <branchname>").
+Additionally, it will create a special branch named
+'<branchname>@<SVN-Revision>', where <SVN-Revision> is the SVN revision
+number the branch was copied from.  This branch will point to the
+specially created parent commit.
+If in SVN the branch was deleted and later recreated from a different
+version, there will be multiple such branches with an '@'.
+
 BUGS
 ----
 
-- 
1.7.10.4
Next: Sebastian Leske
Message 1 of 8 in “git-svn: Document branches with at-sign(@).”
  1. 1/4 git-svn: Document branches with at-sign(@).Sebastian Leske, Nov 18, 2012
  2. 2/4 Recommend use of structure options for git svn.Sebastian Leske, Nov 21, 2012
  3. Michael J GruberNov 28, 2012
  4. 3/4 git-svn: Expand documentation for --follow-parentSebastian Leske, Nov 23, 2012
  5. Michael J GruberNov 28, 2012
  6. 4/4 git-svn: Note about tags.Sebastian Leske, Nov 23, 2012
  7. Michael J GruberNov 28, 2012
  8. Michael J GruberNov 28, 2012

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.