git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
JTJan Teske <jan.teske@gmail.com>
Date
Aug 20, 2017, 17:42 UTC
Message-ID
<74EA70E5-0B8A-4D34-B5EA-8C97A10F3D0F@gmail.com>
In-Reply-To
<8c910a5b-ed96-41d4-d157-f138af51011f@gmail.com>
Show 13 quoted lines
> On 20. Aug 2017, at 12:27 , Andreas Heiduk <asheiduk@gmail.com> 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.
Previous: Andreas Heiduk
Message 3 of 3 in “git-svn: Handling of branches created from subfolders”
  1. Jan TeskeAug 19, 2017
  2. Andreas HeidukAug 20, 2017
  3. Jan TeskeAug 20, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.