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