我们如何在Subversion下包含/排除某种类型的文件?

时间:2020-03-06 14:36:42  来源:igfitidea点击:

我对包含/排除行话感到困惑,我的实际SVN客户端似乎没有(或者我一直无法轻松找到)一个简单的选项来添加或者删除某种类型的文件以进行版本控制。

例如,假设我添加了整个Visual Studio文件夹及其解决方案,项目,调试文件等,但是我只想对实际的源文件进行版本控制。最简单的方法是什么?

解决方案

在最低级别,SVN允许我们使用svn:ignore属性忽略某些文件或者模式。 SVN的VS加载项(例如VisualSVN)将自动代表我们忽略这些文件。如果我们使用的是TortoiseSVN,则可以在资源管理器中右键单击文件和文件夹,然后选择"添加到忽略列表"。

这可以使用svn:ignore属性,或者〜/ .subversion / config文件中的global-ignores属性来实现。 (滚动到第一个链接的顶部,以查看有关编辑属性的说明。)

通过在目录上使用svn propset或者svn propedit,我们将能够使Subversion忽略特定目录中与该模式匹配的所有文件。但是,如果在〜/ .subversion / config`的[miscellany]部分中更改了全局忽略,则Subversion会忽略此类文件,无论它们位于何处。

使用svn:ignore属性,我们可以使用通配符。

排除特定的文件类型可能是最安全的,而不是选择要包含的文件类型,因为这样我们就可以添加一个新类型,而不会意识到它没有版本化。

在每个目录的基础上,我们可以编辑svn:ignore属性。

svn propedit svn:ignore .

为每个相关目录调出一个编辑器,其中包含要忽略的模式列表。

然后在与我们要忽略的文件类型相对应的每一行上放置一个模式:

*.user
*.exe
*.dll

还有你呢

或者,如建议的那样,我们可以将这些模式添加到〜/ .subversion / config文件(或者Windows中的"%APPDATA%\ Subversion \ config""中的global-ignores属性中,请参见红豆书以获取更多信息)。在这种情况下,请用空格分隔模式。这是我的。该行开头的#号引入了注释。我忽略了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。

我知道使用TortoiseSVN可以单击已签出内容的根文件夹,并可以通过选择"属性"菜单项来添加任意属性。在这种情况下,我们只需指定要排除的文件模式。

有关命令行内容的博客文章,但是我确信它可以与我们使用的任何客户端一起正常工作。