有没有办法让TortoiseSVN暂时忽略版本化文件?

时间:2009-10-16 15:13:21

标签: svn tortoisesvn svnignore

我们有一些配置文件,我们希望在版本控制中指定项目的默认设置:搜索路径,条件定义等。不幸的是,IDE(Delphi 5)也使用这些文件来保存临时信息。 IDE在开发过程中不断更新文件,导致Tortoise始终将工作目录标记为已修改,即使可能发生的所有事情都是项目的构建。有时我们确实希望对这些文件进行更改,例如,如果项目搜索路径依赖性发生变化,但绝大多数时候它们只是噪声源。

我的第一个想法是检查文件,在TortoiseSVN中应用全局忽略模式以忽略有问题的文件类型,并在我对要登记的代码进行真正更改时删除全局忽略。然而,似乎如果文件的某个版本已经存储在存储库中,Tortoise将不会忽略它。

有没有办法我可以设置这个以便 1)结账期间文件被拉入 2)有一些方法可以忽略对这些文件的更改 3)如果需要,有一种方法可以检查文件的重大变化

3 个答案:

答案 0 :(得分:11)

从版本1.5开始,TortoiseSVN支持change lists,允许您在提交对话框中将文件组合在一起。 TortoiseSVN提供了一个名为 ignore-on-commit 的特殊更改列表,“用于标记您几乎从不想提交的版本化文件,即使它们有本地更改。”有关详情,请参阅Excluding Items from the Commit List

要在Check for ModificationsCommit对话框中使用ignore-on-commit功能,请选择一个或多个文件,然后在上下文菜单中选择change lists >> ignore-on-commit。结果是这些文件现在组合在一起,当您在ignore-on-commit组中打开Commit对话框文件时,默认情况下未选中,而所有其他文件都已选中即可。请注意,一旦您在更改列表中签入文件,它们就会从该更改列表中删除; TortoiseSVN假设不再需要团体成员资格。但是,在这种情况下,由于您签入 ignore-on-commit 组中的项目,我相信此论坛将无限期地保留。

(我在提出问题3年多后开始写这个答案,目的是说现在有一个简单的方法可以做到这一点。但我无法抗拒先做一些检查。事实证明我刚才提供的答案是截至2008年6月的TortoiseSVN 1.5,officially released - 因此,当我也回答这个问题时,我的答案是适用的。)

答案 1 :(得分:10)

允许对版本控制的配置文件进行本地修改的一般解决方案不是将配置文件本身保持在版本控制之下,而是将其模板版本控制,例如,将.template附加到文件名。

开发人员第一次签出项目时,他们会复制此文件,从副本的文件名中删除.template。然后他们将副本(非模板)添加到忽略列表中,以确保不会意外添加或提交它。

必须对模板进行对需要进入版本控制的配置所做的任何更改。每次开发人员更新并在模板中找到更改时,他们都必须再次遵循复制/重命名过程。但希望这不会经常发生。

答案 2 :(得分:1)

不,我不认为这是可能的。解决方案可能是将这些文件的“规范”版本放入某些子目录,例如“idefiles”,这些子目录会被检入但不会被IDE使用。然后,可以从存储库中删除IDE使用的文件并将其忽略。

如果您要签入“重要更改”,只需将其复制到“idefiles”。

唯一的缺点:

首次结账时,人们必须记住将“idefiles”中的内容复制到正确的位置。但首次结账通常很少见......

此外,如果“idefiles”发生更改,则必须手动将更改复制到读取的IDE文件中。但这可能很有用(dev可能不希望覆盖本地配置)。

BTW,之前已经讨论过“版本控制中的配置文件”的问题,例如:

How to store configuration parameters in SVN?