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

How to sync two svn repositories via git? (reloaded)

From
JWJosef Wolf <jw@raven.inka.de>
Date
Apr 24, 2009, 07:08 UTC
Message-ID
<20090424070836.GA15420@raven.wolf.lan>
Hello,

I have two subversion repositories which I would like to synchronize via git-svn. For this, I have set up a git repository and configured two branches to track the subversion repositories via git-svn:

    mkdir test-sync
    cd    test-sync
    git svn init --stdlayout file://$REPOSDIR/svn-first
    for repos in svn-first svn-second; do
        git config svn-remote.$repos.url      file://$REPOSDIR/$repos
        git config svn-remote.$repos.fetch    trunk:refs/remotes/$repos/trunk
        git config svn-remote.$repos.branches branches/*:refs/remotes/$repos/*
        git config svn-remote.$repos.tags     tags/*:refs/remotes/$repos/tags/*
        git svn fetch -R $repos
        git checkout -b $repos $repos/trunk
    done
    git gc
This gives me two remote and two local branches:
    master
    svn-first
  * svn-second
    svn-first/trunk
    svn-second/trunk

As a first step, I tried to "mirror" the manual "merges" that were done between the subversion repositories in the past:

    git checkout svn-first
    git cherry-pick svn-second-sha1 .... # repeat as needed
    git checkout svn-second
    git cherry-pick svn-first-sha1 .... # repeat as needed

So I've spent almost 4 weeks to cherry-pick and resolve all the conflicts. Looks good so far, since

    git diff svn-first svn-second
    git diff svn-first/trunk svn-first/trunk
    git diff svn-second/trunk svn-second/trunk
give me the desired outputs.  Now I do
    git checkout svn-first
    git merge -s ours svn-second
    git checkout svn-second
    git merge -s ours svn-first
to tell git that the branches are in sync.
But now, when I try to
    git checkout svn-second
    git svn rebase

I get lots of conflicts. When I inspect the .git/rebase-apply directory and the conflicts, it looks like "git svn rebase" tries to re-apply all the commits from svn-first. When I omit the "git merge -s ours svn-first" command, it does not re-apply those commits. So it looks like the "git merge -s ours" wipes some information that git-svn needs to know what was already merged.

What am I missing? I thought the "ours" strategy is meant to tell git that everything from that branch was merged, either manually or by cherry-pick.

Any hints how to track this down?
BTW: this is git version 1.6.0.2
Message 1 of 1 in “How to sync two svn repositories via git? (reloaded)”
  1. Josef WolfApr 24, 2009

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.