我想通过命令行删除存储库中的目录。同时,我不想将 Subversion 的这种更改传播到本地工作副本。
工作副本中的目录应该保持原样(唉,我想设置 svn:ignore 属性)。无论如何,如果不将删除传播到我的工作副本,我想不出一种方法来实现这一点。
我想通过命令行删除存储库中的目录。同时,我不想将 Subversion 的这种更改传播到本地工作副本。
工作副本中的目录应该保持原样(唉,我想设置 svn:ignore 属性)。无论如何,如果不将删除传播到我的工作副本,我想不出一种方法来实现这一点。
据我所知,这是不可能的。svn:ignore
一旦文件实际被版本化,就不会做任何事情。
这使得这样做有点危险,因为人们可能有他们想要保留的本地更改。如果他们不注意,他们可能会失去他们。
就像Thorarin所说的那样,这似乎是不可能的,因为无论 svn:ignore 属性如何,都会传播删除命令。
而不是删除,更安全的迁移可能是将有问题的目录重命名(到类似 dir.old 的名称,然后在原始目录名称上添加 svn:ignore。然后您可以告诉人们手动将他们的目录复制回原始名称,在您完全删除它之前。
根据此目录中的文件类型,您可能还希望永久保留它,作为开发人员同步更改的地方。在这种情况下,您可以通过将其称为 dir.tmpl 之类的名称来明确它是一个模板目录,这样它就不会被直接使用。
这是另一个问题的偷来答案(感谢Maciej Łebkowski!):
根据我的经验:不要将该文件置于版本控制之下并在其上使用 svn:ignore。
一开始有点难,因为你不能忽略一个已经在版本控制下的文件,你不能从版本控制中删除一个文件而不从硬盘驱动器中删除它(以及从下次更新的每个工作副本中删除......)。但是,当您最终设法正确设置存储库时,它就像魅力一样。不要忘记添加一个通用模板来代替你原来的配置文件(这样每个人都知道新的配置变量,等等)。
对于新的回购:
mkdir config
svn add config
svn propset svn:ignore '*.conf' config
对于现有的仓库:确保在每个工作副本中备份您的配置,然后从仓库中删除(svn del)配置,提交(请注意:该文件将在下次更新的每个工作副本中被删除!你有进行备份),然后恢复文件并设置忽略属性。
另一种方式是锁。它保证没有人提交文件,但每次提交都会导致错误。不大好。
第三种方式——变更集,SVN 1.5 客户端的一个新特性。这很简洁,但它仅与一个工作副本相关,而不与全局存储库相关。而且你必须手动设置它们,添加每个新文件——这很难维护。