我正在通过 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 存储库进行了一些统计,原则上提交时间对我来说似乎还可以;但这对我来说还不够。