从SVN远程仓库中删除文件夹/文件,而不会导致本地非版本控制副本被删除

3

这个问题涉及到“取消版本控制”本地文件/目录,以便你可以将它们保留在本地,但从远程仓库中删除。我的问题有些相反 - 另一个开发人员提交了一些应该是每个用户的 XCode 项目目录。我无法在本地检出此目录,因为我已经有一个本地非版本化的。如果我直接从仓库中删除它们,我担心当我们更新时我们两个的本地副本都会被删除。

总结如下: - 开发人员和我都有一个包含多个文件的本地文件夹 - 开发人员将他的目录提交到 SVN - 开发人员的工作副本包含版本化的目录 - 我的工作副本包含非版本化的目录,无法进行更新

在以下两种情况下,哪种最佳方案:

  1. 开发人员可用于帮助解决问题
  2. 我必须自己做,并尽量不破坏开发人员的工作副本

谢谢!我们正在使用 SVN 1.6 仓库。

1个回答

8

您可以在不检出特定工作副本的情况下远程删除文件:

 $ svn rm -m "Removing user property" http://repo/svn/project/.userprops

然而,您可以在计算机其他位置检出一个新的工作目录,并从那里进行删除。我建议使用此方法,因为它允许您在提交更改之前检查和验证您正在执行的操作。此外,您可以通过执行"反向合并"来撤销错误的修订版。
假设这些错误添加了每个用户文件的修订版是43210:
$ mkdir temp
$ cd temp                # New clean directory for new clean checkout
$ svn co http://repos/svn/project/trunk project-trunk
$ cd project-trunk
$ svn merge -c -43210    # Removes the bad revision
$ svn commit -m"Reversing revision 43210 because of bad pre-user files added"

这就是全部内容。

顺便说一下,我有一个预提交钩子,可以防止类似的情况再次发生。你可以简单地配置它,不允许用户在你的项目中添加和提交这些针对个人的文件。


如果我以正常方式从SVN中删除这些文件,当我更新时,SVN会不会说“啊,你在本地已经删除了那些文件,我也要把它们删除掉”? - Mr. Boy
只有当您没有更改本地文件时,才能通过执行“svn cat -rPREV $filename”来恢复它。如果您进行了更改,则在更新期间会发生冲突。它会说“本地编辑,更新时删除”。执行“svn resolved $filename”,然后执行“svn rm --keep-local $filename”。 - David W.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接