是否有svn命令仅从客户端删除文件?
在perforce中,您可以发出“sync to none”命令从客户端删除文件,但在仓库(或svn术语中的存储库)中保持文件不变 p4同步…#无 svn中是否有类似的命令是否有svn命令仅从客户端删除文件?,svn,Svn,在perforce中,您可以发出“sync to none”命令从客户端删除文件,但在仓库(或svn术语中的存储库)中保持文件不变 p4同步…#无 svn中是否有类似的命令 编辑: 感谢到目前为止已经回答的人 澄清: 我不想在目录上使用rm-rf,因为它将删除所有文件,即使是仅本地的文件。我也不想手动删除客户端和存储库中的单个文件 “p4 sync…#none”命令允许我从客户机中删除文件,这些文件位于仓库/存储库中,只保留本地文件 对于一小部分文件来说,这不是什么大问题,但是对于大量文件来说
编辑: 感谢到目前为止已经回答的人 澄清: 我不想在目录上使用rm-rf,因为它将删除所有文件,即使是仅本地的文件。我也不想手动删除客户端和存储库中的单个文件 “p4 sync…#none”命令允许我从客户机中删除文件,这些文件位于仓库/存储库中,只保留本地文件
对于一小部分文件来说,这不是什么大问题,但是对于大量文件来说,手工操作很痛苦。您只需在本地删除文件(使用操作系统的delete命令)。不过,下次更新工作副本时将重新创建该文件 此外,从1.5版开始,您可以进行稀疏签出,在这里您可以省略将存储库的某些部分写入工作副本。但如果我没记错的话,这在目录上有效,而不是在单个文件上 以下是发行说明中描述稀疏签出功能的部分:
这里是SVN手册的相应章节:那么您基本上想要删除所有版本控制和未修改的文件 您可以编写一个脚本,遍历所有文件并对其调用“svn状态”,删除“svn状态”给出空输出的文件
编辑:一个天真的python脚本,用于删除未修改的文件。保持未版本和本地修改的文件。。。这很慢,最好发出一个“SVNStat-v”并解析它。该脚本只删除文件,不接触文件夹
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)
使用OrtoiseSVN,您可以创建本地化到该机器的忽略模式。不确定这是否适合你的情况
很好的概述。如果您只想删除存储库中的文件,而不想删除仅在本地可用的文件,您可以(在Linux/cygwin上)使用一个简单的shell脚本来完成此操作,以及
svn st -v | cut -c '41-' | xargs echo rm
(注意:删除echo
以真正删除任何内容)
但是,这将删除存储库中的任何文件,而不管本地修改状态如何。使用
svn rm folderToDelete --keep-local
使用OrtoiseSVN时,按住shift键,同时右键单击文件夹以显示,然后选择“删除(保留本地)”。使用Subversion 1.6.0
svn update --set-depth exclude <file>
svn更新--设置深度排除
这将从工作副本中删除该文件,并标记该文件在更新时不应返回。或者创建修补程序。这将在修补程序文件中记录所有本地更改 在乌龟中:右键单击->乌龟VN->创建补丁。您可以稍后将此修补程序文件应用于另一个工作副本
另外,您没有提到为什么要这样做,但上面的内容可能是您真正需要的。谢谢您的链接。我更新了我的问题,以澄清我不想使用delete或rm的确切原因。这不正是他想要的吗?@R.Bemrose:它看起来确实与我阅读文档时想要的相反。抱歉,我从未使用过Performance,所以我不确定“同步到无”到底有什么作用。如果与我在这里提到的相反,那么:导出文件夹(或删除所有.svn文件夹),然后运行“svn update parentfolder--depth=files”