首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在cvs2git/cvs2svn中生成提交时间戳?

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

Stack Overflow用户
提问于 2016-10-07 07:24:52
回答 1查看 171关注 0票数 0

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

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

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

我的测试结果显示,更改集中只有一个文件的所有提交都是整小时不同的。支持我的“时区假说”。但这也让我想到了一个问题,即如何确定多个文件的更改集的时间戳。

我试着翻阅代码,发现(在谷歌的帮助下) config.py of cvs2svn_lib中有一个“cvs2svn_lib”。我猜,它是用来对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存储库做了一些统计,原则上提交时间对我来说是可以的;但这对我来说还不够。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-13 06:32:38

你问两个问题:

  1. 如何为提交、触摸多个文件生成时间戳? 对于修改文件的提交,cvs2svn/cvs2git从包含提交的文件级别提交中获取最新的时间戳。但是,如果该时间戳早于上一次提交的时间戳,或者在转换时间之后超过一天,则它将选择上一次提交后一秒的时间戳。 对于涉及分支或标记( CVS根本不记录时间戳)的提交,时间戳设置为上一次提交时间戳之后的一秒钟。
  2. 为什么时间戳有时会以整数小时为单位? CVS在不记录时区的情况下记录UTC中的时间戳,而cvs2svn/cvs2git使用这些时间戳作为-is不尝试猜测时区。因此,时间戳应该是正确的,但以协调世界时表示。 git log有一个--date选项,可用于要求在本地时区中显示日期。

cvs2svn项目文件doc/design-notes.txt非常详细地记录了cvs2svn/cvs2git使用的算法。

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

https://stackoverflow.com/questions/39911698

复制
相关文章

相似问题

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