threads / discuss / 32150

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

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

## tl;dr

4 messages between Nov 20, 2012 and Nov 28, 2012.

replies: 3people: 3as markdown or json

Sebastian Leske· Nov 20, 2012, 07:31 UTC · lore
Hi,
on reading the docs of "git-svn", I stumbled across this paragraph:
Show 5 quoted 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).

Steven Michalske· Nov 28, 2012, 10:18 UTC · re: Sebastian Leske · lore

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

On Nov 19, 2012, at 11:31 PM, Sebastian Leske <Sebastian.Leske@sleske.name> wrote:
Show 21 quoted lines
> 
> 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 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
Eric Wong· Nov 28, 2012, 21:20 UTC · re: Sebastian Leske · lore

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

Sebastian Leske <Sebastian.Leske@sleske.name> wrote:
> 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.

← back to recent threads