您如何在 Subversion 下包含/排除某种类型的文件?
Posted
技术标签:
【中文标题】您如何在 Subversion 下包含/排除某种类型的文件?【英文标题】:How do you include/exclude a certain type of files under Subversion? 【发布时间】:2010-09-12 10:43:24 【问题描述】:我对包含/排除行话感到困惑,而我实际的 SVN 客户端似乎没有(或者我一直无法轻松找到)添加或删除某种类型文件的简单选项用于版本控制。
例如,假设我添加了整个 Visual Studio 文件夹及其解决方案、项目、调试文件等,但我只想对实际的源文件进行版本控制。最简单的方法是什么?
【问题讨论】:
【参考方案1】:您可能最安全的是排除特定文件类型,而不是选择要包含的文件类型,因为您可以添加新类型而不会意识到它没有被版本控制。
您可以按目录编辑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
【讨论】:
要添加到 TortoiseSVN 的全局忽略设置,右键单击您的项目文件夹,TortoiseSVN...设置...常规...在 Subversion 区域中,您可以编辑“全局忽略模式”。 是否可以为每个项目添加忽略?就像在 git 中一样。在 git 中,您将忽略文件放在项目根目录中,并且优先于全局忽略。【参考方案2】:这可以使用svn:ignore 属性或~/.subversion/config
文件中的 global-ignores 属性来实现。 (滚动到第一个链接的顶部以查看有关编辑属性的说明。)
通过在目录上使用svn propset
或svn propedit
,您将能够使Subversion 忽略特定目录中与该模式匹配的所有文件。但是,如果您在 ~/.subversion/config
的 [miscellany]
部分更改 global-ignores,Subversion 将忽略这些文件,无论它们位于何处。
【讨论】:
【参考方案3】:见博文svn:ignore。
我知道使用 TortoiseSVN 可以单击已签出的根文件夹,并可以通过选择“属性”菜单项添加任意属性。在这种情况下,您只需指定要排除的文件模式。
有关命令行内容的博客文章,但我确信它适用于您使用的任何客户端。
【讨论】:
【参考方案4】:在最低级别,SVN 允许您忽略具有svn:ignore 属性的某些文件或模式。用于 SVN 的 VS 加载项(例如 VisualSVN)将自动代表您忽略这些文件。如果您使用TortoiseSVN,您可以在资源管理器中右键单击文件和文件夹,然后选择添加到忽略列表。
【讨论】:
【参考方案5】:另一种方式,当使用 TortoiseSVN 时,您可以选择“Commit...”,然后右键单击文件并移动到更改列表“ignore-on-commit”。
【讨论】:
【参考方案6】:使用svn:ignore
属性,您可以使用通配符。
【讨论】:
以上是关于您如何在 Subversion 下包含/排除某种类型的文件?的主要内容,如果未能解决你的问题,请参考以下文章
我可以以某种方式从java中的Collections.Min / Collections.Max中排除或过滤掉一个值吗?
在 subversion 中创建一个“标签”,指示下一个版本中应该包含哪些文件