SVN:忽略但不删除文件夹

时间:2012-06-20 15:11:41

标签: svn tortoisesvn

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

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

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

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

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

4 个答案:

答案 0 :(得分:12)

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

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

  

svn propset svn:忽略“*”junk_folder

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

答案 1 :(得分:2)

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

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

Ignoring Files And Directories

enter image description here

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

答案 2 :(得分:2)

我正在使用Eclipse Subversive和Tortoise SVN。

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

如果您右键单击工作副本中的文件夹,例如'tmp'或'cache'等,您只需添加'svn:ignore'属性并在其中放置一张外卡。您需要使用高级按钮来添加它,因为它不是要添加的快速属性列表。

我主要在Joomla上开发网站,定期安装程序或其他组件将文件留在我不想要的地方。并且正如所提到的'svn:使用'右键单击忽略'方法忽略这些文件夹意味着这些文件夹完全被排除在repo之外,这不是你想要的 - 你希望排除这些文件夹的内容,或者有时只是带有某种延伸。

从stackoverflow得到很多建议后,我今天报名参加了回答这个问题所以希望它可以帮助某人 - 我试图附上屏幕截图,但没有足够的代表:(

答案 3 :(得分:1)

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

Subversion不会删除您要求忽略的文件夹。事实上,这就是svn:ignore的全部目的:如果没有Subversion抱怨它,你可以拥有一个不在存储库中的文件夹。

这个junk_folder是如何创建的?是由您使用的脚本,还是手动执行?究竟何时被删除?你的意思是当你做一个新的结账时,junk_folder不存在,或者TortoiseSVN在你的父目录中添加svn:ignore属性后立即将其删除?

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

我的建议是确保所需的任何脚本*创建它(如果它不存在),而不是将其添加到您的存储库。您可以使用this pre-commit hook将其保留在存储库之外。这将是解决这个问题的最佳方法。没有理由为什么名为junk_folder的空目录应该在您的存储库中。