SVN 提交旧日期/时间

Posted

技术标签:

【中文标题】SVN 提交旧日期/时间【英文标题】:SVN commit with old date/time 【发布时间】:2011-01-07 06:04:48 【问题描述】:

有什么方法可以使用旧时间/日期提交到 SVN 存储库,或者如何编辑提交后的时间/日期?

我有一些非常旧的存档源,在我开始使用 SVN 之前,我现在想将它们放入 SVN 并尽可能保留它们的原始日期,以便 SVN 历史记录与实际日期相匹配文件已被编辑。

操纵 SVN 服务器时间是一个显而易见的选择,但不能在这里使用,因为 SVN 服务器不在我的控制范围内。

【问题讨论】:

这是一个现有的存储库,还是一个新的?您会覆盖存储库中的目录和/或文件吗? 一个现有的存储库,在初始提交时我不会覆盖任何文件,但其中一些会在以后被覆盖。我有一堆存档文件,如 sources-1995-05.zip、sources-1995-08.zip、sources-1996-01.zip,我想将它们的内容传输到 SVN,日期为 1995/08/xx和 1996/01/xx 分别提交。 相关:***.com/questions/633353/… 【参考方案1】:

日期和时间在"special" revision property, svn:date 中。你可以这样修改:

svn propedit svn:date --revprop -r 12345

或:

svn propset svn:date --revprop -r 12345 2009-02-12T00:44:04.921324Z

修订版(例如上面的12345)也可以是HEAD,表示最新修订版。

日期以ISO 8601 格式指定。

您需要在存储库中设置适当的pre-revprop-change 挂钩(在存储库的hook 目录中)以允许修改svn:date。 SVN 存储库提供的模板应该会有所帮助。

【讨论】:

【参考方案2】:

每个修订版都有一个属性svn:date。如果您有权修改未版本化的属性,则可以更改该值。

【讨论】:

【参考方案3】:

我最终所做的是:

在我的工作站上安装 VisualSVN 服务器 创建一个新的“本地”SVN 存储库 一个一个地获取档案,每个: 在工作副本中删除除 .svn 文件之外的所有内容,以确保不会留下被删除的文件 将存档解压到工作副本中 将系统日期更改为存档日期 根据需要添加和删除并提交到本地存储库中 完成后,使用svnadmin dump 存储库 在主 SVN 服务器上使用 svnadmin load 加载转储

上面的步骤对我来说似乎比安装pre-revprop-change 挂钩更容易。 (我们目前的版本只允许编辑日志消息。)

注意:除了更改系统日期之外,还可以在加载转储文件之前编辑转储文件中的日期。

【讨论】:

您可以编辑转储文件,只要您的编辑器保留任何二进制信息并且不更改行尾。

以上是关于SVN 提交旧日期/时间的主要内容,如果未能解决你的问题,请参考以下文章

合并不同 SVN 服务器上的并行提交

简析Jenkins的SVN插件未更新到最新代码

Windows下SVN回滚到旧版本(TortoiseSVN)

Tortoise SVN - 文件添加到回购的日期/作者的关键字

有没工具可以统计每个人某个时间段内在svn上提交的代码量。

如何在不更改日期的情况下编辑提交作者?