Skip to contentSkip to conversation

git-svn: What is --follow-parent / --no-follow-parent for?

DISCUSSION Sebastian Leske 3 participants 4 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

Hi,

on reading the docs of "git-svn", I stumbled across this paragraph:

Quoted 5 lines

--follow-parent
This is especially helpful when we’re tracking a directory that has been moved around within the repository, or if we started tracking a branch and never tracked the trunk it was descended from. This feature is enabled by default, use --no-follow-parent to disable it.

However, this does not make sense to me: This sounds like there is no good reason *not* to enable this option. So why is it there? And in what situation might I want to use "--no-follow-parent"?

As a matter of fact, I'm not even sure what "--no-follow-parent" does (and the docs don't really say).

I tried it out with a small test repo with a single branch (produced by copying the trunk, then later deleted). With --follow-parent git-svn correctly detected the branch point, and modeled the branch deletion as a merge. With --no-follow-parent it just acted as if branch and trunk were completely unrelated.

Commit graph of git-svn result:

--follow-parent: --no-follow-parent:

       |                               |
      /|                             | |
     / |                             | |
     | |                             | |
     | |                             | |
     | |                             | |
     \ |                             | |
      \|                             | |
       |                               | 

(please excuse cheap ASCII art)

Is that the only effect of --no-follow-parent? And again, why would I want that?

I'd be grateful for any clarifications. If I manage to understand the explanation, I'll volunteer to summarize it into doc patch (if there are no objections).

#1 lore raw
Quoted 3 lines · Sebastian Leske

However, this does not make sense to me: This sounds like there is no good reason *not* to enable this option. So why is it there? And in what situation might I want to use "--no-follow-parent"?

Speed. Following long/convoluted histories can take a long time. Sometimes the user doesn't care about ancient history.

#3 lore raw
In reply to Sebastian Leske
Quoted 17 lines · Sebastian Leske

Commit graph of git-svn result:

--follow-parent: --no-follow-parent:

      |                               |
     /|                             | |
    / |                             | |
    | |                             | |
    | |                             | |
    | |                             | |
    \ |                             | |
     \|                             | |
      |                               | 
Quoted 4 lines

(please excuse cheap ASCII art)

Is that the only effect of --no-follow-parent? And again, why would I want that?

I suppose that you would want this for a SVN repo that holds many different and possibly loosely related projects. The you can apply git filter branch then to split them up cleanly.

e.g. Imagine that the two root commits of the branches do not have true common history.

Steve