首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cvs2git:保持从CVS修订号到Git修订号散列的映射的可能性

cvs2git:保持从CVS修订号到Git修订号散列的映射的可能性
EN

Stack Overflow用户
提问于 2013-06-14 20:01:46
回答 2查看 564关注 0票数 3

我们使用cvs2git将大型CVS存储库迁移到GIT。对于一个内部工具,我们需要一个从CVS修订号到某些文件的GIT修订号散列的映射。

cvs2svn有一个参数--cvs-revnums,但这个修订只存储在svn文件属性中,不适用于git。

我看到git cvsimport -R创建了这个映射,但与cvs2git相比还有许多其他缺点。

还有没有其他从--cvs-revnums获取信息的可能性?

EN

回答 2

Stack Overflow用户

发布于 2013-06-18 17:35:39

如果我理解正确的话,您想要一个方法来回答这个问题:“第一个包含文件FOO的CVS修订版X.Y的Git提交是什么?”

如果您打开了cvs2git详细输出("-v"),那么cvs2git在CreateRevsPass期间会显示添加到每个Git中的CVS文件修订:

代码语言:javascript
复制
CVS Revision grouping:
  Time: Fri May 23 02:31:36 2003
Creating Subversion r23 (commit)
 proj/default 1.2.2.1
 proj/sub1/default 1.2.2.1
 proj/sub2/subsubA/default 1.1.2.1

这很接近你想要的。但是这些信息不足以生成表,因为没有简单的方法将伪Subversion修订号(如"r23")映射到Git commit散列。事实上,这并不是微不足道的,因为cvs2git不会自己创建Git散列,而只是以抽象的形式将它们写入"git快速导入“,后者创建提交并计算它们的散列。

告诉你我要做的事..。

我刚刚更改了cvs2svn的主干版本,这会使OutputPass发出更多的信息,即哪个“标记”对应于哪个伪Subversion修订号。上述提交的输出如下所示:

代码语言:javascript
复制
Writing commit r23 on Branch('B_MIXED') (mark :1000000021)

反过来,标记":1000000021“可以通过请求"git fast-import”将其标记写入文件来转换为Git SHA-1:

代码语言:javascript
复制
cat ../git-blob.dat ../git-dump.dat | git fast-import --export-marks=FILENAME

在结果文件中查找如下所示的行:

代码语言:javascript
复制
:1000000021 0aa255270fbb94ad691d5391a6d37c2ee6d78b03

你可以从中读出Git散列。

要将所有这些信息整合在一起,您仍有一些工作要做,但现在至少在原则上应该是可能的。

请注意,此方法只会告诉您包含CVS文件修订的第一个Git提交。它不会告诉您该文件修订何时合并到其他分支。事实上,由于CVS和Git之间的阻抗不匹配,您不能依赖Git提交祖先图来告诉您该信息。因此,要使其成为一个完整的、方便的功能,还有很多工作要做。

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2014-04-14 19:46:48

谢谢你的回答!

现在,我成功地完成了从CVS到GIT的迁移。

因为我们只需要每个存储库中的几个文件的Git Hash和CVS修订版之间的映射,所以我以一种对我来说更简单的方式解决了所描述的问题:

  1. 使用cvs2svn将CVS存储库从CVS迁移到GIT。用于文件A的
  2. :从CVS服务器接收来自所有分支的所有CVS提交,在单个列表中按时间顺序排序。
  3. 从GIT接收来自文件A的所有分支的所有提交,在一个列表中按时间顺序(忽略提交,注释为"This commit is made by cvs2svn")。
  4. 确保两个列表中GIT提交的CVS数量完全相同(以确保没有人对CVS进行较新的提交)。

<代码>H19将每个CVS修订版本映射到单个GIT哈希。<代码>H210<代码>G211

现在,对于每个CVS版本,我们都有包含CVS文件版本的第一个Git提交。这对我们来说很有效,因为对于一个文件,我们没有在不同分支中使用相同时间戳的CVS提交。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17108030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档