4

在 Windows 7 64 Pro 上运行 Visual Studio 2008 项目并安装以下内容:

TortoiseSVN 1.7.7,内部版本 22907 - 64 位

我最近从 1.6 升级,看看它是否会缓解我们遇到的问题,但无济于事。

无论如何,问题:

对于这个特定的项目,我们使用 CodeSmith Generator 为我们的应用程序生成我们的 netTiers 层。这些文件被生成到一个单独的目录中,并且只有必要的文件被复制到我们的项目的工作 SVN 副本中(我们不复制所有文件,因为我们不希望我们的部分文件被覆盖)。

一旦这些文件被复制过来,我们就在本地编译、测试,然后在稳定时提交给 SVN。一年多来,这在这个项目上运行良好。

最近,我们的一位开发人员将代码生成为规范。他把它复制了一遍,却发现 TortoiseSVN 没有发现任何文件被更改。奇怪的是,考虑到数据库中添加了一个新字段,这通常会影响很多文件。然后,他通过 TortoiseSVN Explorer 命令进行了“与以前版本的比较”,以确认或否认该问题。

但是,在对以前的版本和工作副本版本进行比较时,他发现文件实际上已经改变了。出于某种原因,TortoiseSVN 没有看到文件已更改。

因此,我想尽我所能确定这是否是他机器上的某个孤立问题或其他问题。我杀死了我的工作副本,重新检查并尝试执行相同的步骤。同样的问题。TortoiseSVN 没有接受这些变化。

现在,作为一个实验,我打开文件并手动复制内容。在这种情况下,TortoiseSVN 完美地接受了变化。

当然,手动执行此操作的问题在于,它依赖于开发人员必须知道每个已更改的文件......此外,由于更新的文件数量众多,因此需要更多时间。

所以,我们在这里束手无策。这是一个错误吗?一些可能被欺骗的设置?没有触发通知 TortoiseSVN 更新的事件?

谢谢大家,-史蒂夫

4

2 回答 2

4

复制文件时,Windows 7 不会更改“最后修改”时间戳。根据TortoiseSVN 的 FAQ 页面,svn 查看文件是否被修改的第一步是检查“上次修改”时间戳,而不是像 Git 这样的检查和。因为目录显示它已修改,但没有文件显示为已修改,这可能是因为您将文件复制到.

尝试打开一个被修改的文件,添加一些琐碎的东西,比如空格,关闭它,然后再次尝试检查修改过的文件。我敢打赌这会导致它出现

于 2012-07-13T23:49:46.933 回答
1

这是一个不幸的开发人员错误,他们不仅在过去已经生成了更改,而且没有让人们知道这些知识。只是最终在这个过程中混淆了自己和其他人。

于 2012-11-05T20:51:34.773 回答