【问题标题】:Import only history from CVS repository into already created git repository仅将 CVS 存储库中的历史记录导入已创建的 git 存储库
【发布时间】:2016-02-26 19:45:24
【问题描述】:

在工作中,我们有一个 CVS 存储库,它的提交可以追溯到近 15 年。几年前,该存储库被转换为 git 并上传到公共 GitHub 存储库。但是,git 存储库只是用文件的当前版本初始化,没有导入任何历史记录(不是我做的)。 CVS 的历史是直截了当的——我们从未使用过 CVS 分支。它不是一个高度活跃的存储库:自创建以来,公共 git 存储库只有大约 25 次提交。

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

我对简单的 git 分支、合并和变基相当满意,但我不会说我是专家(我经常查阅 Pro Git 书籍)。

【问题讨论】:

    标签: git github version-control cvs


    【解决方案1】:

    我认为解决方案是从 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
    

    【讨论】:

    • 感谢您的回复!而不是git branch import --orphan,我使用git checkout --orphan import。之后git status 告诉我每个文件都是“新的”,所以这似乎是正确的。当我尝试执行git pull import-repo master 时,似乎提取正常,但合并没有:我得到:error: Entry 'filename' would be overwritten by merge. Cannot merge. 在删除并重新克隆当前存储库并重复之后,我得到一个不同的“文件名”,所以我认为该特定文件没有什么特别之处。我需要强制合并吗?
    • 对不起孤儿的错误。您是否按照步骤 rm -rf * .gitignore # or any other file 进行操作,即清理工作目录?
    • 不用担心,是的。 git status 将“要提交的更改”显示为“新文件:文件名A,新文件:文件名B”等,“未暂存提交的更改”显示为“已删除:文件名A,已删除:文件名B”等。存储库直接是除了 ./.git 文件夹外,完全是空的。我想知道是否应该改为git rm -rf
    • @Derek :这个或git add -A 应该也可以工作。目标是拥有空的工作树。
    • 再次感谢您的帮助。必须处理一些合并冲突,并且仍然必须处理一些奇怪的问题,例如在 4 年内多次不同提交的相同提交消息,对应于每次将文件添加到 CVS 存储库时。但这不是 CVS 问题,就是 cvs2git 问题,我不认为是 git 问题。
    猜你喜欢
    • 2011-08-25
    • 1970-01-01
    • 1970-01-01
    • 2022-08-07
    • 1970-01-01
    • 2011-06-30
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多