【发布时间】:2010-09-12 10:43:24
【问题描述】:
我对包含/排除行话感到困惑,而我实际的 SVN 客户端似乎没有(或者我一直无法轻松找到)添加或删除某种类型文件的简单选项用于版本控制。
例如,假设我添加了整个 Visual Studio 文件夹及其解决方案、项目、调试文件等,但我只想对实际的源文件进行版本控制。最简单的方法是什么?
【问题讨论】:
标签: svn version-control
我对包含/排除行话感到困惑,而我实际的 SVN 客户端似乎没有(或者我一直无法轻松找到)添加或删除某种类型文件的简单选项用于版本控制。
例如,假设我添加了整个 Visual Studio 文件夹及其解决方案、项目、调试文件等,但我只想对实际的源文件进行版本控制。最简单的方法是什么?
【问题讨论】:
标签: svn version-control
您可能最安全的是排除特定文件类型,而不是选择要包含的文件类型,因为您可以添加新类型而不会意识到它没有被版本控制。
您可以按目录编辑svn:ignore 属性。
运行
svn propedit svn:ignore .
为每个相关目录打开一个编辑器,其中包含要忽略的模式列表。
然后在每一行上放置一个与您要忽略的文件类型相对应的模式:
*.user
*.exe
*.dll
你有什么。
或者,正如建议的那样,您可以将这些模式添加到您的 ~/.subversion/config 文件中的 global-ignores 属性中(或在 Windows 上为 "%APPDATA%\Subversion\config" - 请参阅 Configuration Area Layout in the red bean book for more information)。在这种情况下,用空格分隔模式。这是我的。行首的# 引入了注释。我忽略了 Ankh .Load 文件和所有 *.resharper.user 文件:
### Set global-ignores to a set of whitespace-delimited globs
### which Subversion will ignore in its 'status' output, and
### while importing or adding files and directories.
# global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store
global-ignores = Ankh.Load *.resharper.user
【讨论】:
这可以使用svn:ignore 属性或~/.subversion/config 文件中的 global-ignores 属性来实现。 (滚动到第一个链接的顶部以查看有关编辑属性的说明。)
通过在目录上使用svn propset 或svn propedit,您将能够使Subversion 忽略特定目录中与该模式匹配的所有文件。但是,如果您在 ~/.subversion/config 的 [miscellany] 部分更改 global-ignores,Subversion 将忽略这些文件,无论它们位于何处。
【讨论】:
见博文svn:ignore。
我知道使用 TortoiseSVN 可以单击已签出的根文件夹,并可以通过选择“属性”菜单项添加任意属性。在这种情况下,您只需指定要排除的文件模式。
有关命令行内容的博客文章,但我确信它适用于您使用的任何客户端。
【讨论】:
在最低级别,SVN 允许您忽略具有svn:ignore 属性的某些文件或模式。用于 SVN 的 VS 加载项(例如 VisualSVN)将自动代表您忽略这些文件。如果您使用TortoiseSVN,您可以在资源管理器中右键单击文件和文件夹,然后选择添加到忽略列表。
【讨论】:
另一种方式,当使用 TortoiseSVN 时,您可以选择“Commit...”,然后右键单击文件并移动到更改列表“ignore-on-commit”。
【讨论】:
使用svn:ignore 属性,您可以使用通配符。
【讨论】: