具有时间戳的二进制文件的版本控制

时间:2009-03-02 13:40:05

标签: svn version-control

我需要一个像Subversion一样工作的版本控制系统,但能够保留每个文件的“修改”时间戳(日期)。

我们需要对安装项目进行版本控制。在这种情况下,输入文件(dll / exe)保持其时间戳是不明智的。

这样做的最佳工具是什么? (操作系统:Windows)

更新:

以下是我希望它做的一个例子:

  • 将“foo.dll”(2009年1月1日修改)和“bar.dll”(2009年2月2日修改)放入工作目录
  • 创建/测试设置并执行一次提交
  • 当另一个开发人员检出项目时,foo.dll和bar.dll都应该有其原始修改日期(2009年1月1日和2009年2月2日)

我们目前的解决方法是压缩每个dll(修改后的日期保存在zip中)但我更喜欢更简单的方法。

4 个答案:

答案 0 :(得分:2)

Subversion具有use-commit-times选项,这使得本地副本使用每个文件的最后提交时间的时间戳。此外svn export始终设置上次提交时间。

答案 1 :(得分:1)

git中,“提交”指向单个树,将其标记为项目在某个特定时间点的样子。它包含有关该时间点的元信息,,例如时间戳,自上次提交以来的更改的作者,指向先前提交的指针等。

答案 2 :(得分:1)

您可以尝试使用自己定义的subversion属性来存储时间戳。如果更改此时间戳,则文件的“已更改”状态可以提交。您可以使用命令行访问属性的内容。此外,每个文件的时间也不同。

但是,您可能需要一些小的附加脚本来设置/读取属性

答案 3 :(得分:0)

这是颠覆开发者对雷达的要求之一,但尚未实施。正如'Nerdling'所暗示的那样,git或mercurial可能是更好的选择,但你在Subversion中有几个选项(因为你正在寻找像SVN这样的东西):

  1. SVN网站上有一个讨论和perl脚本有一些解决方法。它在初始提交时保留了修改日期...此后,它使用提交时间,但您可以修改脚本以使用修改时间。它是perl,所以你在Windows上的里程可能会有所不同(我没有在windows上使用cygwin和/或perl):http://svn.haxx.se/users/archive-2006-10/1345.shtml

  2. 您可以在提交后更改每个修订的svn:date属性以匹配修改的时间。这将改变提交中每个文件的修改时间,因此,如果这是不合需要的,请确保自己提交二进制文件:http://svnbook.red-bean.com/en/1.5/svn.ref.properties.htmlhttp://svnbook.red-bean.com/en/1.5/svn.advanced.props.html

  3. 我认为Windows上的Tortoise SVN可能有一些选项来处理在提交时设置date属性。我只听过这个谣言,而不是用它,所以这是道听途说: - )

  4. 这些都不是特别优雅,需要你付出一些额外的努力,但如果你想坚持使用SVN,它们将会起作用,这肯定是一个很好的产品。如果您决定探索另一个SCM,如git或mercurial,请注意您可以像SVN一样使用它们,并忽略其他功能以帮助简化转换。