TortoiseSVN 更新时忽略指定文件夹

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TortoiseSVN 更新时忽略指定文件夹相关的知识,希望对你有一定的参考价值。

参考技术A 命令行可以这么来
svn update –set-depth=exclude 文件夹

那么 TortoiseSVN 客户端呢?
在文件夹右键中的”更新至版本(U)”
更新深度选”排除”,确定,搞定
下次更新就不会再更新此目录
要恢复的话在上级目录做相同操作,只是更新深度选择”全递归”

TortoiseSVN:如何忽略提交中的 bin 内容

【中文标题】TortoiseSVN:如何忽略提交中的 bin 内容【英文标题】:TortoiseSVN: How to ignore bin contents from commit 【发布时间】:2012-10-06 11:11:31 【问题描述】:

我使用 TortoiseSVN 1.7.9。

当我svn commit 项目文件夹时,我如何忽略 / 删除 /bin 文件夹中的内容?我不想提交.dll.pdb等文件。

我将 .dll .pdb 条目放在 svn:ignore 属性中,但它不起作用,并且当我执行提交时这些文件仍然显示在列表中。

我不使用命令行客户端。在 Windows 资源管理器中,我右键单击根项目文件夹,然后单击 TortoiseSVN 上下文菜单中的提交。

【问题讨论】:

您可以将 bin 文件夹添加到忽略列表。右键单击 bin 文件夹 -> TortoiseSVN -> Unversion 并添加到忽略列表 -> bin。 【参考方案1】:

您可以在TortoiseSVN manual和SVNBook找到答案。

TortoiseSVN 手册告诉我们:

如果文件已经在存储库中,则必须将其删除 从存储库中并添加到忽略列表中。幸运的是 TortoiseSVN 有一个方便的快捷方式来执行此操作。 TortoiseSVN → 取消版本并添加到忽略列表将首先将文件/文件夹标记为 从存储库中删除,保留本地副本。它还添加了 此项目到忽略列表,以便它不会被添加回 再次错误地颠覆。完成后,您只需要提交 父文件夹。

请参阅 SVNBook 的重要说明;它解释了您的行为以及“为什么它不起作用”。

Subversion 对可忽略文件模式的支持仅扩展到 一次性将未版本控制的文件和目录添加到 版本控制。 一旦对象在 Subversion 的控制之下, 忽略模式机制不再适用于它。换句话说,不要 期望 Subversion 避免提交您对 版本化文件仅仅是因为该文件的名称与忽略匹配 模式——Subversion 总是注意到它所有的版本化对象。

【讨论】:

【参考方案2】:

基本答案:不要将已编译的库和二进制文件存储在您的源代码库中。这是一个来源存储库!

你不能忽略 Subversion 控制下的东西,并且构建的项目不应该首先存储在 Subversion 中。删除它们,然后设置svn:ignore 以在构建这些目录时忽略它们。这样一来,就不会有人意外地重新提交这些构建的二进制文件。

如果您想存储二进制文件和库以供以后使用,请使用发布存储库。事实上,您甚至可以设置它,以便您的构建将自动从其他项目下载他们可能需要的 .dll。发布存储库可以像存储这些文件的另一个系统上的目录一样简单(并且可以复制到您的其他项目),或者更复杂的东西,如 Artifactory 或 Nexus(用于 Maven 和 Ivy 项目。我不认为 VS 和 C/C++ 项目有类似的东西)。

或者,您可以使用 Jenkins 进行构建,并将这些项目作为构建工件存储在 Jenkins 作业中。当有人需要它们时,他们可以通过 Jenkins 下载它们。

【讨论】:

但是 subversion 添加了 bin 文件夹。这不像我们告诉它那样做。 bin 文件夹位于源结构的根文件夹下,因此它只是在根目录下添加了每个文件夹。我们知道它是一个源代码库!现在我们告诉它不要包含非源文件。我来这里是因为我有同样的问题。 如果您使用的是 VisualStudio,请通过 Visual Studio 使用 Subversion。获取AnkhSVN。 AnkSVN 不会自动添加 /bin 文件,因为它知道哪些 VisualStudio 文件不应该在源代码管理中。您可以看到有关using TortoiseSVN through VisualStudio 的信息。你也可以试试VisualSVN,但这必须是付费的专有许可证。【参考方案3】:

忽略所有项目中的 bin、obj 和 .suo 文件和用户文件。只需将它们添加到配置文件中:

C:\Users\[USERNAME]\AppData\Roaming\Subversion\config ( in windows )

找到 global-ignores 部分并添加以下内容:

global-ignores = *.suo bin obj *.csproj.user

【讨论】:

我不想将此设置为全局设置,因为在某些存储库中,我确实希望在源代码控制中保留bin 目录。如何忽略特定 repo 中的所有 bin 和 obj 目录? 乌龟同步这些设置需要时间吗?进行了更改,我仍然不断获得 bin 和 obj 路径。真是头疼。 不,我不需要任何时间(在我的 Windows 10 机器上)【参考方案4】:

您可以忽略全局级别的目录和文件。但是,您可以使用设置对话框,而不是破解配置文件,如 Calciol 的回答中所述:

要启动设置对话框:

开始菜单:TortoiseSVN ==> 设置。 在资源管理器中单击鼠标右键以调出上下文菜单。 TortoiseSVN ==> 设置。

更改在应用后立即生效。

【讨论】:

以上是关于TortoiseSVN 更新时忽略指定文件夹的主要内容,如果未能解决你的问题,请参考以下文章

xcopy命令拷贝文件时忽略指定文件夹

SVN添加忽略后,怎么解除被忽略的文件

svn怎么忽略部分文件更新?

TortoiseSVN:如何忽略提交中的 bin 内容

SVN(TortoiseSVN)详细教程--SVN更新及如何解决冲突文件

svn设置忽略文件为啥不管用