仅将 CVS 存储库中的历史导入到已创建的 git 存储库中
Import only history from CVS repository into already created git repository
在工作中,我们有一个 CVS 存储库,其提交时间可以追溯到将近 15 年前。几年前,该存储库被转换为 git 并上传到 public GitHub 存储库。但是,git 存储库只是用当前版本的文件初始化的,没有导入任何历史记录(不是我做的)。 CVS 的历史是直接和线性的——我们从未使用过 CVS 分支。它不是一个高度活跃的存储库:public git 存储库自创建以来只有大约 25 次提交。
我希望能够将 CVS 历史导入现有的 git 存储库,而不必创建新的存储库。根据我在 git-cvsimport
或 cvs2git
的文档中阅读的内容,这些工具总是会创建新的存储库。或者,我可以进行新的 cvs/git 转换并上传新存储库来代替当前存储库,然后应用 25 post-cvs 提交。这可能吗?如果可以,推荐的方法是什么?我拥有对 CVS 和 git 存储库的读写权限,如果需要,我还可以访问 CVS 的服务器。
我对简单的 git 分支、合并和变基相当满意,但我不会说我是专家(我经常参考 Pro Git 书)。
我认为解决方案是从 master 分支中的第一个提交创建临时分支 ("start"),然后从 CSV 生成历史并将其导入另一个临时分支 ("import"),合并使用 "start" 分支的策略并从 "master" 分支合并较新的提交并将 "import" 分支重命名为 "master":
# create new git repository by running cvs2git in import-git-path
# change directory to your current repository
git log
# find the first commit
git checkout -b start "first-commit"
git checkout --orphan branch
rm -rf * .gitignore # or any other file
git add -A
git remote add import-repo import-git-path
git pull import-repo master
git merge -s ours start
git merge master
git branch -D start
git branch -D master
git branch -m import master
在工作中,我们有一个 CVS 存储库,其提交时间可以追溯到将近 15 年前。几年前,该存储库被转换为 git 并上传到 public GitHub 存储库。但是,git 存储库只是用当前版本的文件初始化的,没有导入任何历史记录(不是我做的)。 CVS 的历史是直接和线性的——我们从未使用过 CVS 分支。它不是一个高度活跃的存储库:public git 存储库自创建以来只有大约 25 次提交。
我希望能够将 CVS 历史导入现有的 git 存储库,而不必创建新的存储库。根据我在 git-cvsimport
或 cvs2git
的文档中阅读的内容,这些工具总是会创建新的存储库。或者,我可以进行新的 cvs/git 转换并上传新存储库来代替当前存储库,然后应用 25 post-cvs 提交。这可能吗?如果可以,推荐的方法是什么?我拥有对 CVS 和 git 存储库的读写权限,如果需要,我还可以访问 CVS 的服务器。
我对简单的 git 分支、合并和变基相当满意,但我不会说我是专家(我经常参考 Pro Git 书)。
我认为解决方案是从 master 分支中的第一个提交创建临时分支 ("start"),然后从 CSV 生成历史并将其导入另一个临时分支 ("import"),合并使用 "start" 分支的策略并从 "master" 分支合并较新的提交并将 "import" 分支重命名为 "master":
# create new git repository by running cvs2git in import-git-path
# change directory to your current repository
git log
# find the first commit
git checkout -b start "first-commit"
git checkout --orphan branch
rm -rf * .gitignore # or any other file
git add -A
git remote add import-repo import-git-path
git pull import-repo master
git merge -s ours start
git merge master
git branch -D start
git branch -D master
git branch -m import master