如何删除SVN-repository中的目录并将其设置为svn:同时忽略?

时间:2009-08-09 08:31:05

标签: svn svnignore delete-directory

我想通过命令行删除存储库中的目录。同时,我不想将Subversion传播给本地工作副本。

工作副本中的目录应该保持不变(唉,我想设置svn:ignore属性)。无论如何,如果没有将删除传播到我的工作副本,我无法找到实现此目的的方法。

3 个答案:

答案 0 :(得分:1)

据我所知,这是不可能的。文件实际上被版本化后,svn:ignore将不会执行任何操作。

这样做有点危险,因为人们可能会想要保留本地更改。如果他们没有注意,他们可能会失去它们。

答案 1 :(得分:1)

就像Thorarin所说的那样,似乎不可能,因为无论svn:ignore属性如何,delete命令都会被传播。

而不是删除,更安全的迁移可能是重命名有问题的目录(类似于dir.old,然后在原始目录名称上添加svn:ignore。然后你可以告诉别人在完全删除目录之前,手动将其目录复制回原始名称。

根据此目录中的文件类型,您可能还希望永久保留它,作为开发人员同步其更改的位置。在这种情况下,您可以通过调用类似dir.tmpl的内容来明确它是一个模板目录,这样就不会直接使用它。

答案 2 :(得分:0)

这是另一个question的被盗答案(感谢Maciej Łebkowski!):

根据我的经验:不要将该文件置于版本控制之下并使用svn:ignore。

一开始有点难,因为你无法忽略已经完全受版本控制的文件,并且你无法从版本控制中删除文件而不从硬盘驱动器中删除它(以及从下一个工作副本中删除它更新...)。但是当你最终设法正确设置回购时,它就像魅力一样。不要忘记添加通用模板来代替原始配置文件(以便每个人都知道新的配置变量,等等)。

对于新的回购:

mkdir config
svn add config
svn propset svn:忽略'* .conf'配置

对于现有的repo:请确保在每个工作副本中备份配置,然后从repo中删除(svn del)config,commit(请注意:下次更新时,每个工作副本中的文件都将被删除) !你必须有一个备份),然后恢复文件并设置ignore属性。

另一种方式是锁定。它保证没有人提交文件,但是每次提交都会导致错误。不是很好。

第三种方式 - 变更集,SVN 1.5客户端的新功能。这很简洁,但它只与一个工作副本相关,而不是与全局存储库相关。而且你必须手动设置它们,添加每个新文件 - 它很难维护。