我有一个文件夹,c:\websites\test
,它包含从不再存在的存储库中检出的文件夹和文件。如何让Subversion停止跟踪该文件夹及其任何子文件夹和文件?
我知道我可以简单地删除.svn
文件夹,但有很多层级的子文件夹。
我有一个文件夹,c:\websites\test
,它包含从不再存在的存储库中检出的文件夹和文件。如何让Subversion停止跟踪该文件夹及其任何子文件夹和文件?
我知道我可以简单地删除.svn
文件夹,但有很多层级的子文件夹。
此外,如果您正在使用TortoiseSVN,则只需将其导出到当前的工作副本位置,它将删除.svn文件夹和文件。
http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-export.html#tsvn-dug-export-unversion
Subversion 1.7的更新答案:
在Subversion 1.7中,工作副本已经被广泛地改版。现在只有一个位于工作副本基础的.svn文件夹。如果您正在使用1.7版本,则只需删除.svn文件夹及其内容即可轻松解决问题(无论是使用TortoiseSVN还是命令行工具都可以)。
find . -iname ".svn" -print0 | xargs -0 rm -r
尝试使用svn export。
你应该能够像这样做:
svn export /path/to/old/working/copy /path/to/plain/code
然后只需删除旧的工作副本。
TortoiseSVN还具有导出功能,其行为方式相同。
svn: E000002: 无法统计 '/.classpath':没有这样的文件或目录
。 - IgorGanapolsky如果你使用的是Windows系统,可以在该文件夹中搜索.svn
,并将它们全部列出来。按下Ctrl+ A会选择所有这些文件,并按下删除键会移除所有“烦人”的Subversion内容。
在Linux上,命令为:
svn delete --keep-local file_name
我发现你甚至不需要复制到临时位置。你可以执行
svn export --force .
同时 .svn 文件将会被原地删除,其他文件将保持原样。非常方便且不易混乱。
在Linux中没有子shell来删除.svn
文件夹:
find . -name .svn -exec rm -r -f {} +
rm = remove
-r = recursive (folders)
-f = force, avoids a lot of "a your sure you want to delete file XY".
对于我的情况,这些答案都不令人满意。我使用的是subversion 1.8版本,我的工作副本只有一个.svn文件夹位于根目录下。然而,我想从工作副本中删除一些分支。
无论我做了什么,每当我运行“更新”时,它都会恢复那些文件并把它们全部带回来。我不想从仓库中删除它们,只是想从我的电脑上删除它们——但我需要保持其余的工作副本不变(因此不能只删除.svn文件夹)。
解决方案是:svn update --set-depth exclude <dir>
这是一个客户端“更新”,可以排除特定目录。在svnbook.com的手册中可以找到它的相关信息。简而言之,它描述如下:
从Subversion 1.6开始,你可以采取不同的方法。首先,完全检出该目录。 然后在你不关心的一个子目录上运行 svn update --set-depth exclude。
对于TortoiseSVN,您也可以通过右键单击不需要的文件夹,然后单击“更新到修订版本...”,并将“更新深度”设置为Exclude
来执行相同的操作,如下面的屏幕截图所示:
对我来说它很有效:
find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf
mkdir -p ';echo Hi Johnny;/.svn'
,那么 find 的 {} 调用应该仍然有效。 - Never Sleep Againsvn export
命令:cd c:\websites\test
svn export c:\websites\test_copy
所有在版本控制下的文件都将被导出。请仔细检查,确保没有遗漏任何东西。