在perforce中,您可以发出'sync to none'命令从客户端删除文件,但不要在软件仓库(或svn lingo中的存储库)中保持不变。
p4 sync ... #non
svn中是否有类似的命令?
修改
感谢那些迄今已回答的人。
澄清:
我不想在目录上使用rm -rf,因为它会删除所有文件,甚至是那些只在本地的文件。我也不想手动删除客户端和存储库中的单个文件。
'p4 sync ... #non'命令允许我从软件仓库/存储库中的客户端删除文件,并仅保留本地文件。
使用一小组文件,这不是什么大问题,但是对于大量文件来说,手工操作很痛苦。
答案 0 :(得分:3)
您可以在本地删除该文件(使用操作系统的删除命令)。但是,下次更新工作副本时,将重新创建该文件。
此外,从版本1.5开始,您可以进行稀疏检出,您可以在其中省略存储库的某些部分被写入工作副本。但如果我没记错的话,这适用于目录,而不是单个文件。
以下是描述稀疏结帐功能的发行说明部分:http://subversion.tigris.org/svn_1.5_releasenotes.html#sparse-checkouts
以下是SVN书籍的相应章节:http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html
答案 1 :(得分:1)
所以你基本上想要删除所有版本化和未修改的文件?
您可以编写一个脚本来遍历所有文件并在其上调用“svn status”,删除“svn status”为空输出的文件...
import os
from subprocess import *
def isUnchangedInRepo(name):
output = Popen(["svn","stat",name], stdout=PIPE).communicate()[0]
return len(output) == 0
for dirname, dirnames, filenames in os.walk('.'):
for filename in filenames:
testfile = os.path.join(dirname, filename)
if(testfile.find("\\.svn") == -1) and isUnchangedInRepo(testfile):
print testfile
# os.remove(testfile)
答案 2 :(得分:1)
如果您只想删除存储库中的文件而不是仅删除本地可用的文件,您可以使用简单的shell脚本(在Linux / cygwin上)删除
svn st -v | cut -c '41-' | xargs echo rm
(注意:删除echo
以真正删除任何内容)。
但是,无论本地修改状态如何,这都将删除存储库中的任何文件。
答案 3 :(得分:1)
使用Subversion 1.6.0
svn update --set-depth exclude <file>
这将从您的工作副本中删除该文件,并标记它不应在更新时返回。
答案 4 :(得分:0)
使用TortoiseSVN,您可以创建本地化到该计算机的忽略模式。不确定这是否适合您的情况。
http://arcware.net/tortoisesvn-global-ignore-pattern-vs-svn-ignore/的好概述。
答案 5 :(得分:0)
使用
svn rm folderToDelete --keep-local
使用TortoiseSVN,按住Shift键同时右键单击文件夹以显示extended menu,然后选择“删除(保持本地)”。
答案 6 :(得分:0)
或者创建一个补丁。这将记录补丁文件中的所有本地更改。
在乌龟中:右键单击 - > tortoiseSVN->创建补丁。您可以稍后将此修补程序文件应用于另一个工作副本。
聚苯乙烯。你没有提到为什么要这样做,但上述内容可能最终成为你真正需要的东西。