Re: Stitching together two split segments from svn

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



"Liam Healy" <lnp@xxxxxxxxxxxxxxxxxxxxxx> writes:

> I have a project whose history is stored in two separate svn
> repositories.  The first repository I kept privately during initial
> development, the second started when I posted it publicly and does not
> have the history of the first.  I am trying to reunite them under git.
>  The development of the first was linear, so after using git svn, the
> history looks like:
> 
>  a - b - ... - c - d = HEAD (old repository)
> 
> and the second has one branch "ffa":
> 
> (new repository)
>  T - d - e - ... - f - g - h - ... - j   master
>                       \
>                        k - l - .... - m  ffa
> 
> Note that T is the "trunk" initial commit on the svn repo that has no
> files.  The second commit d is identical to the HEAD of old, as
> verified by git diff.
> However, when I remote add these two into a single repository, they
> show up as two detached chains, with no connection between them.  I
> thought git rebase would reconnect them.  However, when I do that on
> each branch (master and ffa), I get the following:
> 
>  a - b - ... - c - d - e - ... - f - g - h - ... - j   master
>                       \
>                        e - ... -f - g - k - l - .... - m  ffa
> 
> instead of what I would like
> 
>  a - b - ... - c - d - e - ... - f - g - h - ... - j   master
>                                      \
>                                       k - l - .... - m  ffa
> 
> That is to say, those commits from the new repository that have a
> common history for the two branches are duplicated.  The commits are
> listed separately and have different SHA IDs, but they are clearly the
> same commits (same comments, same svn version number).  Is there any
> way to do what I want?  Really, all I want to do is change the parent
> of "e" to be the HEAD of the old repository.

If this is initial import, and not published anywhere, the simplest (I
think) solution would be to use grafts file (.git/info/grafts) to
change parent of 'k' from 'g' in ffa to 'g' in master, by adding the
line with:

  <sha1 of 'k'> <sha1 of 'g' on master>

to .git/info/grafts.  Then examine history if everything is now all
right (for example using gitk), and if everything is O.K. run
git-filter-branch.

See documentation for details.

-- 
Jakub Narebski
Poland
ShadeHawk on #git
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux