我正在尝试通过“子树合并”将外部 SVN 存储库用作我的存储库中的子树。我相信这应该保持库中文件的历史完整,但它不起作用 - 来自合并到我的主分支中的子树的库没有历史记录,但在我添加它们时提交 - 这是一个历史记录来说明我的意思,正是我将要达到的状态如下。
lappy8086:YACYAML jamie$ git log --graph
* commit 0cc6c4e5061741e67d009f3375ce1d2bcd3ab540
| Author: James Montgomerie
| Date: Thu May 17 12:04:43 2012 +0100
|
| Subtree-merge in libYAML (from a git-svn checkout).
|
* commit b5af5af109d77f6adafebc3dcf5a4796a5035a2e
Author: James Montgomerie
Date: Thu May 17 11:47:32 2012 +0100
First commit, add .gitignore.
这就是我正在做的尝试让它发挥作用:
# check out SVN repo
git svn clone http://svn.pyyaml.org/libyaml/branches/stable libYAML
# create my repo
mkdir YACYAML
cd YACYAML
git init
touch .gitignore
git add .gitignore
git commit -m "First commit, add .gitignore"
# Fetch from git-svn repo I got earlier
git remote add libyaml-svn ../libYAML/
git fetch libyaml-svn
git checkout -b libyaml-svn libyaml-svn/master
# Switch back to master, and try to merge in subtree
git checkout master
git read-tree --prefix=libYAML/ -u libyaml-svn/master
git commit -m "Merge in libYAML as subtree (from git-svn checkout of SVN repo)"
这“有效”,但是,正如我所说,当我查看我的历史记录时,我希望从 libYAML 存储库中看到完整的历史记录,但我没有 - 如上所述。