【问题标题】:Is there a way to make TortoiseSVN temporarily ignore versioned files?有没有办法让 TortoiseSVN 暂时忽略版本化文件?
【发布时间】:2009-10-16 15:13:20
【问题描述】:

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

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

有什么方法可以设置这个
1) 文件在结帐期间被拉入
2) 有一些方法可以忽略对这些文件的更改
3) 如果需要,可以检查文件的重大更改

【问题讨论】:

  • 如果没有其他方法可用,公认的答案(Ben James,2009)是好的。然而,second answer(Michael Sorens,2013 年)更优雅,正是 Willbill 想要的:忽略文件,除非它被特别选择提交。

标签: svn tortoisesvn svnignore


【解决方案1】:

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

要使用提交时忽略功能,请在Check for ModificationsCommit 对话框中选择一个或多个文件,然后在上下文菜单中选择change lists >> ignore-on-commit。结果是这些文件现在被分组在一起,当您打开 Commit 对话框时,ignore-on-commit 组中的文件默认未选中,而所有其他文件都选中强>。请注意,一旦您签入更改列表中的文件,它们就会从该更改列表中删除; TortoiseSVN 假定不再需要组成员身份。不过,在这种情况下,由于您没有签入 ignore-on-commit 组中的项目,我相信该组将无限期地存在。

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

【讨论】:

  • TortoiseSVN 特定用户的体面解决方案。我认为“ignore-on-commit”变更集尚未得到广泛认可,我敢打赌其他前端对于相同的功能有自己的变更集名称。作为旁注,我发现 AnkhSVN(Visual Studio SVN 插件)也支持“ignore-on-commit”变更集,因此它在 Tortoise 和自身之间运行良好。
  • ignore-on-commit列表的一大特点是,当受影响的文件被标记为红色时,目录树保持绿色V,这使得项目状态的概览更容易。
  • @Nicholi 如果我没记错的话,AnkhSVN 是 TortoiseSVN 的 Visual Studio 包装器。不就是在后台使用 TortoiseSVN 客户端吗?
【解决方案2】:

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

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

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

【讨论】:

  • 1+ 谢谢我真的很喜欢这个解决方案
【解决方案3】:

不,我认为这是不可能的。一种解决方案可能是将这些文件的“规范”版本放入某个子目录中,例如“idefiles”,它会被检入,但 IDE 不会使用。 IDE 正在使用的文件可以从 repo 中删除并忽略。

如果您想签入“重要更改”,只需将它们复制到“idefiles”即可。

唯一的缺点:

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

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

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

How to store configuration parameters in SVN?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    相关资源
    最近更新 更多