Subversion - 时间戳更改,但内容不更改

时间:2010-03-05 08:10:09

标签: svn build diff timestamp

我认为这很难描述,但我会尝试:

我们正在使用Subversion和Buildtools。当我们从我们的项目进行构建时,当然会覆盖几个文件。因此,这些文件的时间戳会发生变化,但内容可能与以前相同。

svn diff将显示以下内容: - test.txt发生了变化 - 删除了100行 - 添加了100行

是否有可能让subversion仅查看文件内容并忽略文件的时间戳?

谢谢!

4 个答案:

答案 0 :(得分:3)

这并不能完全回答你的问题,但是......

传统上,您应避免将生成的文件添加到版本控制中。

相反,只添加源文件,然后在目标上生成文件。

在某些情况下,该规则会被破坏,但我的第一个问题是询问您的构建过程会发生什么(特别是在干净的机器上),如果您只是从Subversion中删除了相关文件。

答案 1 :(得分:1)

如果svn diff报告发生变化,则文件内容更改,而不仅仅是时间戳。它可能只是空白更改或更可能是EOL更改。但它们仍然是变化,Subversion正确报告它们。

Here's有关Subversion如何确定文件是否已更改的详细说明。

答案 2 :(得分:0)

是您在Windows上工作的一些用户,例如在linux上?然后我猜你忘了把svn:eol-style属性设置为'native'(参见subversion手册)

答案 3 :(得分:0)

我认为SVN中存在一个奇怪/罕见的错误(或服务器端的#34;奇数")我有一个类似的问题(详细到底)。一种可能的解决方法是使用" touch -r未触摸文件目标文件"在时间戳改变之后(可能是构建脚本的结果?),以便将时间戳恢复为SVN所期望的。

这是我在这里的情况(它很奇怪,莫名其妙,可重复): Subversion v1.6.11和v1.8.8在两个不同的Linux机器上(分别为2.6.32和3.13.0内核)。看起来像SVN中的一个奇怪的错误。

如果我触摸两个特定文件的时间戳,则SVN将文件报告为已更改并显示1:1 diff(即每行更改为自身)。大多数其他文件都不受此过程的影响(这是一个很奇怪的部分)。

如果我发出"触摸-r原始副本" (其中"原文"是包含原始文件结帐时间戳的文件),SVN再次将其报告为未更改。

如果我在文件的两个时间戳之间进行MD5求和,du -b,ls -l和diff,它们是相同的(显然不是时间戳)。 Svn proplist / propget仅报告svn:eol-style = native(这些是svg文件,fwiw)。

所以在我的情况下,换行肯定不是问题,但SVN对两个特定文件的时间戳更改的处理只是