Re: git-svn: Handling of branches created from subfolders

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

 



> On 20. Aug 2017, at 12:27 , Andreas Heiduk <asheiduk@xxxxxxxxx> wrote:
> 
> Am 19.08.2017 um 14:45 schrieb Jan Teske:
>> Is there any way to fix such branches from subfolders in a way that they integrate correctly with the converted git repository, without losing any (or at least too much) history? If this is not possible with git-svn directly, maybe I could prepare the SVN repo or post-process the converted git repository somehow?
> 
> You can use `git replace --graft` to connect the first commit of the
> loose branches with their source. After all connections are in place you
> can use `git filter-branch` to make the replacements permanent.
> 
> This will not change the content or directory structure of branch1 or
> branch2 but the diff with their parent commits will show up as a huge
> delete/rename operation. So merging/Cherry-picking between trunk and
> branch1/branch2 will be ... challenging.

That’s really helpful, thanks!

I even solved the problem of the challenging merging between the converted branches and trunk by using another filter-branch to rewrite all the commits in branch1/branch2 to make all their modifications in the respective subfolders (effectively fixing the directory structure to fit trunk). This answer was helpful for how to do this: https://unix.stackexchange.com/a/280229

So, for future reference, the following post-processing seems to work:

1. Use filter-branch to move all the commits the the correct subfolder.
2. Use `git replace --graft` to connect the first commit of the branch to its correct parent commit.
3. Use `git replace --graft` to add the missing parents of any merge commits the branch was part of.
4. Use filter-branch again to make the replacements permanent.






[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