将git-svn本地存储库推送到已存在的其他svn远程存储库

时间:2011-09-16 13:41:06

标签: git git-svn

我正在尝试整合两个svn repos。一个是另一个的叉子。但它并不完全是一个分叉,所以我找不到共同点。

我已经在一个本地git-svn仓库中克隆了两个仓库,每个仓库都在一个分支中,我已经集成了两个仓库,但我知道我需要将更改推送到原始仓库之一。我试图找出保存历史记录的上传更改的最佳工作流程。我认为它应该是这样的:

# Move the trunk of the remote repo to a branch
$ svn move svn+ssh://host.example.com/repos/project/trunk svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH -m "Creating a branch of project"

# Make a commit that explains the change that is going to happen

# Change to the branch that tracks the remote repo, and fetch the changes
$ git checkout myBranch
$ git svn rebase

# The folder should be empty at this point

# Upload the local changes to the trunk of the remote repo
$ git merge integrationBranch

# ¿rewrite the history?

# Upload it
$ git svn dcommit

我找不到better explanation但我认为git svn dcommit使用最后一次提交的git-svn-id来计算推送的url,所以我想在某些方面我应该重写历史,但我不知道如何。

此外,如果任何人都可以提供一种方法来进行测试,那么在真正上传之前,这些更改就会很棒。

1 个答案:

答案 0 :(得分:0)

经过一些研究后,我发现了如何重写历史based on this post。要更改git-svn-id,请使用:

git filter-branch --msg-filter  'sed "s/git-svn-id:.*//g"' myBranch