问题标签 [cvs2git]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
198 浏览

git - 有什么方法可以轻松合并在 CVS2Git 迁移中创建的 Git 分支?

我们最近将 CVS 存储库迁移到了 Git。

在我们的 CVS 存储库中,我们有一些分支,其中包含我们在开发完成后隐藏起来的代码,直到我们有时间在以后安排它们。

当我们使用 CVS2Git 进行迁移时,它导致分支被转移到 Git 存储库,但它的工作方式是只有在 CVS 中实际分支的文件才会出现在 Git 分支中。

例如,如果我们在 CVS 的 HEAD 上有以下文件/文件夹树:

然后我们只在 CVS 的 BRANCH_COOL_FEATURE 分支上分支了“file1a”和“file2b”文件,在 Git 中生成的“BRANCH_COOL_FEATURE”分支只包含“file1a”和“file2b”文件。

我正在寻找最简单的方法来识别我想要合并的 CVS 分支中涉及的所有文件,包括它们在 CVS 中的分支点,以便我确切知道要合并的差异,然后自动做合并。

这是迄今为止我得到的最好的,但我希望有更好的方法:

1) MASTER 和 BRANCH_COOL_FEATURE 上的 git diff --name-status 将 diff-filter 设置为 M 以识别分支中实际修改的所有文件,或者只获取分支中文件的完整列表 2) 对于每个文件,查看 CVS 历史记录并关联时间戳以识别为该文件生成的两个 Git 提交,它们代表要合并的差异 3) 在该特定文件上运行 git merge 并将两个提交指定为要合并的差异

感谢任何帮助,谢谢!

-Git 新手

ps 我没有关于实际 CVS2Git 转换是如何运行的大量细节,但如果它很重要,我可能会掌握它。

有什么方法可以轻松

0 投票
1 回答
793 浏览

cvs2git - 如何在 cvs2git 转换过程中保留 CVS 标签?

我正在将许多 CVS 存储库转换为 GIT。这主要是有效的,但是当 CVS 存储库使用标签时,GIT 存储库中缺少这些标签(尽管分支 wortk)。

奇怪的是,cvs2svn 输出显示了许多已识别的标签:

我的选项模板可以在这里看到:http: //paste.ubuntu.com/11919176/

我的命令序列:

cvs2svn 版本是 2.3.0

我已经用谷歌搜索了几个小时,但仍然不知道缺少什么。请问有什么帮助吗?

0 投票
1 回答
219 浏览

git - 在 cvs2git 迁移中删除早于 x 的历史记录

我们计划在 Git 存储库中迁移我们最后一个大型 CVS 存储库。

对于迁移,我们使用 svn2git 的 cvs2git。因为这个 CVS 存储库已经增长了大约 12 年,所以它有 31GB 的数据。

我找不到任何解决方案来删除超过指定时间段(例如 2 年)的所有历史记录。

您知道其中之一的任何工具/命令/解决方案吗?:

  • 从 CVS 删除历史记录
  • 不要使用 cvs2git 导出所有历史记录
  • 不要使用 Git import 导入所有历史记录
  • 从 Git 中删除历史记录

谢谢和问候,安德烈亚斯

Dmitry Oksenchuk 建议的解决方案: 编辑移植后,我编写了一个 BASH 脚本 tp 清理混乱的标签和分支:

0 投票
1 回答
594 浏览

git - git cvsimport 缺少标签

我正在将巨大的 CVS 存储库迁移到 git 中,并且我发现并非所有标签都已迁移(历史看起来还可以)。可能是因为 CVS 中的标签不是在整个存储库上创建的,而是在特定文件夹上创建的,此外 CVS 历史记录中的一些文件已经死了。

git cvsimport -p -x -v -a -i -d :pserver:ysn@uaap01:/mitarepo -C F:/GitImport Libs/WP/Include/drivers cvs_direct initialized to CVSROOT /mitarepo cvs rlog: Logging Mitalib/WP4000/Include/drivers * UNKNOWN LINE * Branches: Branch WP100_1_2_0_CANopen erroneously stems from itself -- changed ancestor to origin Branch origin does not exist! * UNKNOWN LINE * Branches: Skipping WP100_1_2_0_CANopen * UNKNOWN LINE * Branches: * UNKNOWN LINE * Branches:

我试图从 CVS 只导入特定的文件夹,但标签仍然丢失

从所有 CVS 标签中,只有 API_4_51 和 RE_OS_API_3_9 被导入,其余的没有。有没有办法诊断和解决这个问题?顺便说一句,我可以毫无问题地通过标签从 CVS 签出任何必要的文件,并且提交 1.3 已正常迁移到 Git。 在此处输入图像描述

0 投票
1 回答
162 浏览

python - cvs2git/cvs2svn 中的提交时间戳是如何生成的?

我正在通过 Cygwin 使用 cvs2git 将一个非常古老且巨大的 CVS 存储库转换为 Git。它工作正常,我开始测试新的存储库。我没有发现更大的特点。但我想知道如何确定提交/更改集的时间戳。

到目前为止,我确定某些 CVS 版本之间的时间戳相差 1 或 2 小时加上 x,其中 x 是从几秒或几分钟(大多数情况下)到两个 15 分钟的时间。许多时间戳仅相差整小时 (x=0)。

我想这与我发现是 cvs2svn 功能( http://www.mcs.anl.gov/~jacob/cvs2svn/features.html)的“时间戳纠错”有关。也许它也与时区有关。

我的测试结果表明,更改集中只有一个文件的所有提交都相差整小时。这支持了我的“时区假设”。但这也让我想到了如何确定具有多个文件的更改集的时间戳的问题。

我试图通过代码并发现(在 Google 的帮助下)在 cvs2svn_lib 的 config.py 中有一个“COMMIT_THRESHOLD”。我猜它用于在 CVS 中对基于文件的提交进行模糊测试。虽然代码看起来写得很好,但我对 CVS、SVN 和 Git 修订存储缺乏技术理解,这让我很难理解。

因此,如果有人能回答以下问题,我将不胜感激:

  • cvs2svn/cvs2git 如何确定具有多个文件的变更集的提交时间戳?
  • “时间戳纠错”cvs2svn/cvs2git 是如何工作的?(对我来说,功能背景比技术更重要。)

亲切的问候

编辑:

由于有人认为这个问题“太宽泛”,我恐怕我的观点不够清楚。所以我想举一个具体的(虽然是虚构的)例子:

cvs2git 为一个更改集找到 3 个文件更改。他们在同一天承诺(假设是 2016 年 2 月 30 日)。但他们的时代不同:

  • 文件 1:12:34:56
  • 文件 2:12:35:38
  • 文件 3:12:36:09

如果只是文件 1,我会认为 cvs2git 使用 2016-02-30T12:34:56 作为 Git 提交的时间戳。但是当所有 3 个文件的提交都属于一个更改集时,选择了哪个时间戳?

与此相关的是,当我的存储库被转换时,时间似乎也恰好调整了 1 或 2 小时。当更改集中只有一个文件时也会发生这种情况。我想这是某种时区调整。所以我想知道,为什么“时间戳错误更正”改变了我的时间戳,以检查我是否接受这些更改。我对转换后的 Git 存储库进行了一些统计,原则上提交时间对我来说似乎还可以;但这对我来说还不够。

0 投票
1 回答
594 浏览

git - cvs2git 迁移失败 - 未找到 RCS 文件错误

我已经在本地系统(windows 7)上检查了 CVS 存储库的副本。在 cygwin 的帮助下,我试图将此存储库的本地副本迁移到 git(bitbucket),但在第一阶段卡住了。下面是命令和错误。任何人都可以在这里指导我。非常感谢任何帮助。

命令:cvs2git --blobfile=cvs2svn-tmp/git-blob.dat --dumpfile=cvs2svn-tmp/git-dump.dat --username=cvs2git java_apps

错误:检查所有 CVS ',v' 文件... 错误:在 'java_apps' 下找不到 RCS 文件!您绝对确定您将 cvs2svn 指向 CVS 存储库吗?

通过 1 完成。

错误摘要:错误:在“java_apps”下找不到 RCS 文件!您绝对确定您将 cvs2svn 指向 CVS 存储库吗?

0 投票
2 回答
293 浏览

git - 如何处理大量嵌套的 CVS 项目

以前从未这样做过,所以我可能只是个菜鸟……我正在尝试将我们陈旧的 CVS 存储库迁移到 GitLab,但我不确定如何处理嵌套的 CVS 项目。我们有很多(即大约 1600 个 .project 文件散布在 CVS 存储库中)。有大约 10 年的提交,总计约 21GB,超过两个 CVS 存储库目录。

一般结构是 $client/$product 但其中大多数包含一堆子项目 - 通常非常多。

到目前为止我已经尝试过:

  1. Monolithic:尝试导入较小的 CVS 存储库 - 第一次第 1 次内存不足(通过添加内存解决),第 5 次第 5 次时磁盘空间不足(无法真正添加磁盘,因为 vmware 数据存储几乎已满 -不要问!)。

  2. 按客户端:在一个客户端上完成 cvs2git,然后运行 ​​git --fast-import,但随后我注意到所有子项目。Git 不关心合并的历史,但我们的编码员会。阅读 git 子模块,但不确定这是我需要的,因为整个项目通常都在同一个 CVS 存储库中,我发现它使克隆项目的过程变得复杂。

  3. 通过客户端内的项目:使用 (2) 中的产品,递归 CVS 存储库深度优先,查找 .project 文件;在使用 git --fast-import 导入子项目之前,为每个子目录创建了一个子目录并在每个子目录上执行了 git init --bare。这花了很长时间,因为我相信它每次都必须处理整个 cvs2git blob 和转储文件,而且我不确定我最终得到了正确的 git 层次结构。

所以...与其再挣扎,我想我会在这里问,因为我确定其他人一定需要做这种事情。任何指针都非常感谢。


[编辑]:感谢所有的建议和帮助,人们。现在已经不在我的掌控之中了——他们(开发人员)已经决定在他们工作的时候逐步迁移 CVS 项目,所以大多数可能永远不会被迁移。为此,旧的 cvs 将作为只读参考保留,并且项目将签入到 git “pristine”,因此对于任何“BG”(在 git 之前)历史,它们将引用 cvs,但对于“AG”的历史,他们会咨询 git。

至于深嵌套项目的问题,我给出的解释是它与Java类层次结构有关,每个项目相当于一个类。在他们的构建过程中有一些东西可以自动将 cvs 项目更改为 java .jar 文件或类似的东西。里面有很多java。

0 投票
2 回答
107 浏览

cvs2svn - 指定要从 cvs2git 中排除的多个标签的格式是什么

我知道我可以通过执行以下操作将 CVS 存储库转换为 GIT,不包括所有 NIGHTLY_XXXX 构建标签

cvs2git --exclude='NIGHTLY_.*' --blobfile=git-blob.dat --dumpfile=git-dump.dat --username=dev /opt/mycvsrepository/mymodule

但是,如果我还想删除超过 1 个通配符,命令行参数的格式是什么?IE

“NIGHTLY_ ”和“BETA_RELEASE_ ”和“RC_*”

提前谢谢了

0 投票
1 回答
464 浏览

python - 使用 cvs2git 从 CVS 迁移到 GIT

我正在尝试将 CVS 存储库迁移到 GIT。我正在使用 cvs2git。我正在运行以下命令。

我收到以下错误

0 投票
1 回答
213 浏览

git - 如何验证使用 cvs2git 的 CVS 到 Git 的转换?

我正在使用cvs2git(cvs2svn 的一部分)将 CVS 存储库迁移到 Git 中。当我运行该工具时,它似乎运行良好,最终我得到了一个工作的 git 存储库。但是,我需要一种方法来验证转换是否成功。

至少我需要确认最新 git 提交中的文件内容与最新 CVS 提交中的文件内容相同。如果可能的话,我还想验证提交作者是否匹配,提交的时间戳是否正确,是否保留了标签(我知道标签/分支模型不完全匹配,但至少标签名称保留为分支名称),以及任何其他需要验证的重要数据。我有大约 30 个要转换的存储库,所以我会很感激任何自动化的方法。

到目前为止,我唯一想到的就是对目录进行校验和,以验证文件是否相同,但每个文件夹中都有一个 .cvs 目录,所以我认为这行不通。