由于我无法在网络上的任何地方找到上述问题的答案,我自己也会找到解决方案。这是一个手动过程,但我找不到任何其他标准解决方案。所以这就是:
假设您要从目录工作中删除文件 test.txt 。现在,如果你强行删除test.txt
rm -rf test.txt
命令然后在工作目录(或其任何父目录)上的下一个svn上,该文件将被恢复。所以诀窍是从 .svn / entries 文件中删除它。因此,仅从工作副本中删除 test.txt 的完整命令序列为:
cd work
rm -rf test.txt
svn st #it shows ! sign beside test.txt which means that
#in the next **svn up** it will be restored
chmod u+w .svn/entries
vi .svn/entries
#delete the lines associated with test.txt
#you need to delete the following 3 lines from .svn/entries
#test.txt
#file
#^L
svn st #it doesn't report test.txt anymore
答案 0 :(得分:7)
lallafa reports一个很好的方法,基于一个叫做稀疏目录的东西:
svn update --set-depth exclude <folder-to-delete>
如果不是很好:
svn 1.6
此方法花了 1小时,但在svn 1.7
上花了更多时间比 50小时。这是在2011年。从source添加:
如果您以后想再次使用该目录,则可以执行
svn update --set-depth=infinity <folder-to-delete>
我希望我知道如何列出目录&#34;排除&#34;这样,因为st
不会显示它们。 :d
来自same source by someone called 'Mike5' (or jed/jeds)的另一种适用于目录的方法:
对于您要避免更新的每个目录,请执行
svn switch --ignore-ancestry http://dummy/exists/but/empty_folder some_folder
some_folder
替换为您要忽略的文件夹。http://dummy/exists/but/empty_folder
替换为存储库中的现有路径,该路径是一个空目录,永远不会被更新或删除 - 据称是为此创建并专用的。通过这个,你将实现:
你将不实现:
--depth
,首先执行此操作,然后继续结帐(未经过测试)。在专用的空目录上使用svn propset svn:ignore "*" empty_folder
也是一个好主意,因此没有人可以向它提交任何内容。
答案 1 :(得分:-3)
应该如此简单:
svn delete test.txt
svn ci -m 'Delete test.txt.'