如何在cvs2git/cvs2svn中生成提交时间戳?

2024-04-26 10:41:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在通过Cygwin使用cvs2git将一个非常古老和巨大的CVS存储库转换为Git。它运行良好,我开始测试新的存储库。我没有发现更大的怪癖。但我想知道提交/更改集的时间戳是如何确定的。你知道吗

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

我想这与我发现的cvs2svn特性(http://www.mcs.anl.gov/~jacob/cvs2svn/features.html)中的“时间戳错误更正”有关。也许这也和时区有关。你知道吗

我的测试结果显示,在更改集中只有一个文件的所有提交都会相差整整几个小时。这支持了我的“时区假说”。但这也让我想到了一个问题,即如何确定具有多个文件的更改集的时间戳。你知道吗

我试着浏览代码,发现(在Google的帮助下)代码中有一个“COMMIT\u阈值”配置.pycvs2svnèu库的。我猜,它用于将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存储库做了一些统计,原则上提交时间对我来说还行;但这对我来说还不够。你知道吗


Tags: 文件代码git版本时间情况特性技术
1条回答
网友
1楼 · 发布于 2024-04-26 10:41:10

你问两个问题:

  1. 如何为多个文件生成时间戳?你知道吗

    对于修改文件的提交,cvs2svn/cvs2git从构成提交的文件级提交中获取最新的时间戳。然而,如果该时间戳早于上一次提交的时间戳或者在转换时间之后超过一天,则它取而代之的是在上一次提交的时间戳之后1秒选择时间戳。你知道吗

    对于涉及分支或标记(CVS根本不记录时间戳)的提交,时间戳设置为上一次提交的时间戳之后的1秒。

  2. 为什么时间戳有时会以整小时为单位关闭?你知道吗

    CVS以UTC格式记录时间戳而不记录时区,cvs2svn/cvs2git原样使用这些时间戳而不尝试猜测时区。所以时间戳应该是正确的,但是用UTC表示。你知道吗

    git log有一个 date选项,可用于要求在本地时区中显示日期。

cvs2svn项目文件^{}非常详细地记录了cvs2svn/cvs2git使用的算法。你知道吗

相关问题 更多 >