2016-02-26 80 views
1

在工作中,我们有一个CVS存储库,其提交已延伸了近15年。几年前,该存储库已转换为git并上传到公共GitHub存储库。但是,git存储库刚刚使用当前版本的文件进行初始化,没有导入历史记录(不是我所做的)。 CVS的历史很简单直线 - 我们从未使用CVS分支。它不是一个高度活跃的存储库:自创建以来,公共git存储库只有大约25次提交。只将历史记录从CVS存储库导入到已创建的git存储库中

我希望能够将CVS历史记录导入到现有的git存储库中,而无需创建新的存储库。根据我在git-cvsimportcvs2git的文档中阅读的内容,这些工具总是会创建新的存储库。或者,我可以做一个新的cvs/git转换,并上传新的存储库来代替当前的存储库,并应用25个cvs后提交。这是可能的,如果是这样,推荐的方法是什么?我已经读取了&对CVS和git存储库的写入访问权限,并且在必要时可以访问CVS服务器。

我对于简单的git分支,合并和重新绑定感到相当舒服,但我不会说我是专家(我会参考Pro Git书籍)。

回答

0

我认为解决方案是从主分支中的第一次提交创建临时分支(“开始”),然后从CSV生成和导入历史记录到另一个临时分支(“导入”),与我们的战略合并“开始”分支和从“主”分支合并更新提交并将“导入”分支重命名为“主”:

# 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 
+0

感谢您的回应!而不是'git branch import --orphan'我使用了'git checkout --orphan import'。在那之后,'git status'告诉我每个文件都是“新的”,所以看起来是正确的。当我尝试执行'git pull import-repo master'时,它看起来像抓取行,但合并不:我得到:'错误:条目'文件名'将被合并覆盖。无法合并.'在删除并重新克隆当前存储库并重复之后,我得到一个不同的'文件名',所以我认为这个特定文件没有什么特别之处。我需要强制合并吗? – Derek

+0

对于孤儿的错误感到抱歉。你是否按照步骤'rm -rf * .gitignore#或任何其他文件',即I.e.清洁工作目录? –

+0

不用担心,是的。 'git status'显示'新文件:filenameA,新文件:filenameB'等等,并且'没有为commit提交更改','删除:filenameA,删除:filenameB'等,显示'要更改提交'除了./.git文件夹以外,它是完全空的。我想知道这应该是'git rm -rf'而不是? – Derek

相关问题