13

我有一个垃圾文件夹,我的应用程序在其中放置临时文件。我不想提交它们(当然),但该文件夹必须存在,否则应用程序将崩溃。

如果我使用标准 TortoiseSVN 忽略功能,它会将“svn:ignore junk_folder”属性添加到父文件夹,但它也会删除无法发生的“junk_folder”。

如果我只恢复删除操作(由 TortoiseSVN 执行)但保留添加“svn:ignore”属性,则此解决方案将失败。TortoiseSVN 会将“junk_folder”中的文件报告为非版本,我想避免这种情况。

是否有任何解决方案可以让我完全忽略 SVN 中的特定文件夹(所以无论如何,将在其中放入什么,不会被报告为未版本化,也不会被自动提交)而不删除它?

编辑我忘了补充说我说的是已经版本化的文件夹。看来,如果您忽略(svn:ignore 或 TortoiseSVN 中的正确选项)一个尚未版本化的文件夹(在第一次提交之前),那么一切正常。但是,如果您在存储库中已经存在的文件夹上执行此操作,TortoiseSVN 会将其标记为已删除,并在下一次提交时将其从两个存储库(而不是本地工作副本)中删除。

4

4 回答 4

12

我相信您可以在该文件夹中为“*”添加一个 svn:ignore,而不是在“junk_folder”本身(换句话说,忽略“junk_folder/*”)。

我不知道 TortoiseSVN 是否有一个按钮,但从命令行你可以使用以下命令:

svn propset svn:ignore "*" junk_folder

(至少我认为这是正确的语法,在我的脑海中。如果有人认为这是错误的,请纠正我)

于 2012-06-20T15:20:58.750 回答
2

我正在使用 Eclipse Subversive 和 Tortoise SVN。

我解决这个问题的方法是使用 Tortoise 的属性对话框(但我认为 Eclipse 具有相同的功能)

如果您在工作副本中右键单击文件夹,例如“tmp”或“缓存”等,您可以简单地添加“svn:ignore”属性并在其中放置一个通配符。您需要使用高级按钮来添加它,因为它不是要添加的属性的快速列表。

我主要在 Joomla 上开发网站,并且经常安装程序或其他组件将文件留在我不想在 repo 中的地方。如前所述,使用“右键单击忽略”方法“忽略”这些文件夹意味着这些文件夹完全从 repo 中排除,这不是您想要的 - 您希望排除这些文件夹的内容,或者有时只是带有一定的延伸。

在从 stackoverflow 获得很多建议后,我今天注册只是为了回答这个问题,所以希望它对某人有所帮助 - 我试图附上屏幕截图但没有足够的代表:(

于 2013-08-15T19:07:13.800 回答
2

我将它用于编译器中间输出文件夹之类的东西,它从未删除任何东西。

为了重新测试这一点,我在我的一个工作副本中发现了一个未版本控制的目录。我右键单击该目录,然后导航到“添加到忽略列表”选项。它扩展到目录名称。我选择了目录名称并收到一条弹出消息,指出它已被添加到忽略列表中。检查工作副本状态,父文件夹只有属性修改。没有文件被标记为删除。

忽略文件和目录

在此处输入图像描述

作为旁注,您还可以在使用“检查修改”和“提交”对话框时隐藏未版本化的文件,并在对话框底部附近有一个复选框。

于 2012-06-20T15:19:26.747 回答
1

你是什​​么意思“如果我使用标准的 TortoiseSVN 忽略功能,它会将svn:ignore junk_folder属性添加到父文件夹,但它也会删除junk_folder...... ”?

Subversion 不会删除您要求它忽略的文件夹。事实上,这就是整个目的svn:ignore:让您拥有一个不在存储库中的文件夹,而没有 Subversion 抱怨它。

这是如何junk_folder创建的?是通过您使用的脚本,还是您手动执行?具体什么时候删除?您的意思是当您进行新的结帐时,junk_folder不存在,或者 TortoiseSVN 在您将svn:ignore属性添加到其父目录后立即将其删除?

如果您需要将该文件夹永久保存在您的存储库中,但它必须保持为空,您可以添加junk_folder到存储库,然后创建一个svn:ignore设置为*. 这将忽略文件夹中的任何内容。

我的建议是确保任何脚本需要junk_folder创建它,如果它不存在,而不是将它添加到您的存储库。您可以使用此预提交挂钩将其保留在您的存储库之外。这将是处理这个问题的最佳方式。没有理由为什么一个名为的空目录junk_folder应该在您的存储库中。

于 2012-06-20T19:08:24.233 回答