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

4 messages, 3 authors, 2016-06-15 · open the first message on its own page

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

From: Sebastian Leske <hidden>
Date: 2016-06-15 22:55:22

Hi,

on reading the docs of "git-svn", I stumbled across this paragraph:
--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).

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

From: Steven Michalske <hidden>
Date: 2016-06-15 22:55:27

On Nov 19, 2012, at 11:31 PM, Sebastian Leske [off-list ref] wrote:
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

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

From: Eric Wong <hidden>
Date: 2016-06-15 22:55:27

Sebastian Leske [off-list ref] 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.

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

From: Sebastian Leske <hidden>
Date: 2016-06-15 22:55:27

Hi Steven, hi Eric,

thanks for your explanations. I'll try to update my doc patch to include
them.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help