Elijah Newren <newren@xxxxxxxxx> writes: > On Wed, May 15, 2019 at 8:30 AM Ævar Arnfjörð Bjarmason > <avarab@xxxxxxxxx> wrote: >> On Wed, May 15 2019, Piotr Krukowiecki wrote: >>> >>> I'm migrating two repositories from svn. I already did svn->git >>> migration (git-svn clone) and now have two git repositories. >>> >>> I would like to merge them into 1 git repository, but to merge also >>> history - branches and tags. >>> >>> The reason is that the svn repositories in fact represent one >>> "project" - you had to download both of then, they are not useful >>> separately. Tags were applied to both repositories, also list of >>> branches is almost identical for both. >>> >>> So right now I have: >>> >>> - projectA: >>> master: r1, r4, r5, r7 >>> branch1: r10, r11, r13 >>> - projectB: >>> master: r2, r3, r6 >>> branch1: r12, r14 >>> >>> The content of projectA and projectB is different (let's say projectA >>> is in subfolder A and projectB is in subfolder B). So revisions on >>> projectA branches have only A folder, and revisions on projectB >>> branches have only B folder. >>> >>> But I would like to have: >>> >>> - projectAB: >>> master: r1', r2', r3', r4', r5', r6', r7' >>> branch1: r10', r11', r12', r13', r14' >>> >>> Where all revisions have content from both projects. For example, the >>> r5' should have the "A" folder content the same as r5, but also should >>> have "B" folder content the same as in r3 (because r3 was the last >>> commit to projectB (date-wise) before commit r5 to projectA). >>> >>> There's additional difficulty of handling merges... >>> >>>> >>> Any suggestions on what's the best way to do it? >>> >>> >>> Currently I'm testing join-git-repos.py script >>> (https://github.com/mbitsnbites/git-tools/blob/master/join-git-repos.py) >>> but it's slow, memory inefficient and handles "master" branch only... >> >> You might be able to use https://github.com/newren/git-filter-repo [...] > Somewhat interestingly, a search on others having tried to solve this > same problem turned up > https://github.com/j5int/jbosstools-gitmigration, which apparently is > based on git_fast_filter, which is the predecessor of filter-repo. > Perhaps that tool would be useful to you as-is, though they apparently > do ignore merges. There is also reposurgeon tool; though its main purported purpose is to aid migrating from one version control system to another, it can also be used to edit repositories (utilizing fast-import stream). https://gitlab.com/esr/reposurgeon http://www.catb.org/~esr/reposurgeon/ Hope that helps, -- Jakub Narębski