【问题标题】:CVS to GIT in Centos8CVS 到 Centos 8 中的 GIT
【发布时间】:2021-12-29 21:08:34
【问题描述】:

Centos8 中缺少 cvsimport。无法安装。 现在我尝试使用快速导入。大多数存储库都可以,但是由于某些包含二进制文件的存储库而失败。我认为 cvs-fast-export 有一个错误

$ cat ../repoexport.fi|git fast-import fatal: Unsupported command:
mark :11 fast-import: dumping crash report to
.git/fast_import_crash_19654 Unpacking objects: 100% (1/1), 21 bytes |21.00 KiB/s, done.

这是来自崩溃报告

Most Recent Commands Before Crash
---------------------------------
  blob
  mark :1
  data 30790
  blob
  mark :2
  data 7060
  blob
  mark :3
  data 30650
  blob
  mark :4
  data 516323
  blob
  mark :5
  data 355588
  blob
  mark :6
  data 497407
  blob
  mark :7
  data 4397056
  blob
  mark :8
  data 807
  blob
  mark :9
  data 299008
  blob
  mark :10
  data 196608
  blob
  mark :11
* blob

有什么办法可以把 c​​vs 转成 git 吗?

【问题讨论】:

  • 您的各种程序的版本不匹配。您需要升级所有这些。特别是您的 cvs 转换器正在尝试使用您的 git fast-import 中没有的 git fast-import 功能,可能是因为您的 Git 版本落后。 (CentOS 因使用古老的低功能 Git 版本而臭名昭著。)
  • @torek,我正在使用 1.59 的 cvs-fast-export 和 gcc 2.27。知道它们之间的兼容版本吗?
  • 不 - 但如果你的意思是 git 2.27,那是最近的,所以这让这更加令人费解(可能是一个错误)。如果您的意思是 gcc 2,那实际上是原始的,但没有 2.27;最后一次 2.2 更新是 1997 年 8 月的 2.7.2.3 (gcc.gnu.org/releases.html)。
  • 我很抱歉@torek 我的意思是说我的 git 是“git-all-2.27.0-1.el8.noarch”。
  • 感谢@mort,这创造了奇迹。如果这是一个答案,我会接受这个解决方案。问题就在那个文件上。我没有调查这个问题,只是删除并继续。

标签: git migration cvs centos8 cvs2git


【解决方案1】:

基于上述原始问题中的评论交流的发布解决方案

我建议尝试cvs2git

@RamananT 说

我试过了,不幸的是 cvs2git 也因为这个错误而失败了 ERROR: The command 'cvs -Q -f -d :local:/home/user/path/to/cvs/repo/proj co -r1.1.1.2.1 -p -kb scripts/additions/320_str.20070501-001101.sql' failed with exit status=-9 and no output.

然后我建议

您可以自己尝试该命令以查看,v 文件是否因某种原因损坏。存储的 sql 文件是文本文件,但 .sq,v 文件是 RCS 格式,您无法通过检查来判断它是否已损坏。但是你可以很容易地

  • 运行cvs2git 说失败的cvs 命令,看看手动运行时它是否会失败。或者
  • 您可以制作一个 repo 的副本,删除那个文件,然后尝试cvs2git 。 这也会告诉您该特定文件是否确实存在问题。

感谢@mort,这创造了奇迹。如果这是一个答案,我会接受这个解决方案。问题就在那个文件上。我没有调查这个问题,只是删除并继续

【讨论】:

    【解决方案2】:

    感谢@Mort,我能够解决问题并将 CVS 成功导入 GIT (BitBucket)。为了帮助那里的任何人,这里有确切的步骤。这适用于 Centos 8。

    1. 复制需要迁移的cvs repo

      scp -r cvs_repo_server:/path/to/cvs/repo/project1 ./

    2. 创建满足cvs2git工具的CVSROOT

      mkdir project1/CVSROOT

    3. 删除失败的有问题的文件。你如何发现正在运行 cvs2git 在下面的步骤中。这是反复试验

      rm

    4. 克隆并运行 cvs2git

      git 克隆https://github.com/mhagger/cvs2svn.git

      cd cvs2svn

      ./cvs2git --blobfile=blob.dat --dumpfile=dump.dat --username=cvs2git --fallback-encoding utf-8 ../project1/

      cd ..

    5. 在 bitbucket 中创建 repo,然后克隆空 repo

      git clone bitbucket/url/mig_project1

    6. cd 到克隆的仓库

      cd mig_project1

    7. 导入 git 并推送

      猫 ../cvs2svn/blob.dat ../cvs2svn/dump.dat | git 快速导入

      git push --all

      git push --tags

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-26
      • 2010-09-27
      • 2016-03-15
      • 2019-12-27
      相关资源
      最近更新 更多