我正在尝试整合两个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,所以我想在某些方面我应该重写历史,但我不知道如何。
此外,如果任何人都可以提供一种方法来进行测试,那么在真正上传之前,这些更改就会很棒。
答案 0 :(得分:0)
经过一些研究后,我发现了如何重写历史based on this post。要更改git-svn-id,请使用:
git filter-branch --msg-filter 'sed "s/git-svn-id:.*//g"' myBranch