如何删除文件夹的Subversion控件?

Bri*_*ght 255 svn

我有一个文件夹,c:\websites\test它包含从不再存在的存储库中检出的文件夹和文件.如何让Subversion停止跟踪该文件夹以及任何子文件夹和文件?

我知道我可以简单地删除.svn文件夹,但是在很多层中有很多子文件夹.

cra*_*str 257

此外,如果您使用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还是命令行工具).

  • 链接现在是404.新链接:http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-export.html#tsvn-dug-export-unversion输出电流似乎只是一个特殊情况,如果您还要保留未版本控制的文件,则只删除.svn文件. (8认同)

Max*_*tor 153

在Linux上,这将工作:

  find . -iname ".svn" -print0 | xargs -0 rm -r
Run Code Online (Sandbox Code Playgroud)

  • 适用于Mac OS. (10认同)
  • 在运行命令之前一定要输入正确的目录,例如:cd mySVNdirectoryWhereToRemoveTheSubfolders (2认同)

pka*_*ing 118

尝试svn导出.

你应该可以做这样的事情:

svn export /path/to/old/working/copy /path/to/plain/code
Run Code Online (Sandbox Code Playgroud)

然后只需删除旧的工作副本.

TortoiseSVN还具有导出功能,其行为方式相同.

  • 如果我理解正确,此命令将只导出当前在subversion控件下的文件.因此,如果尚未将某些文件或文件夹添加到subversion或从subversion控件中删除,您将在导出中丢失这些文件... (16认同)
  • 感谢您提供与命令行一起使用的答案.:)非常适合我们这些使用终端的人. (4认同)
  • 值得一提的是,如果SVN服务器早已不复存在,这仍然有效; 如果你尝试使用VisualSVN或Tortoise SVN导出它,它似乎试图联系服务器,但上面的命令行版本为我工作,没有SVN服务器仍在运行. (4认同)

gra*_*eds 32

如果您运行的是Windows,则可以对该文件夹进行搜索.svn,并将其全部列出.按Ctrl+ A将选择所有这些并按删除将删除所有'讨厌'的Subversion内容.

  • 这也是一个删除最讨厌的主页扩展文件夹的好方法! (2认同)

小智 23

在Linux上,命令是:

svn delete --keep-local file_name
Run Code Online (Sandbox Code Playgroud)


I. *_*edy 21

我发现你甚至不需要复制到临时位置.你可以做一个

svn export --force .
Run Code Online (Sandbox Code Playgroud)

并且.svn文件将被原位删除,其他文件保持原样.非常方便,不易混乱.

  • 我不知道它是什么,但由于某些原因它对我不起作用. (4认同)
  • 如果已安装的Subversion版本为1.7且存储库为1.6,则此方法无效.但是,"svn upgrade"可以在导出之前运行,并且可以正常运行. (2认同)

小智 10

没有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".
Run Code Online (Sandbox Code Playgroud)


Man*_*n S 8

它对我很有用:

find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf
Run Code Online (Sandbox Code Playgroud)


bra*_*uar 8

这些答案对我的情况都不满意.我在subversion 1.8上,我有一个工作副本,.svn在第一个文件夹root 只有一个文件夹.但是,我想从工作副本中删除一些分支.

无论我做了什么,每当我运行'更新'时,它都会恢复这些文件并将它们全部带回来.我不想从存储库中删除它们,只是从我的计算机中删除它们 - 但我需要保留其余的工作副本(因此不能只删除.svn文件夹).

解? svn update --set-depth exclude <dir>

这是一个客户端"更新",它排除了特定目录.它可以在svnbook.com的手册中找到.简而言之,它将此描述为:

从Subversion 1.6开始,您可以采用不同的方法.首先,查看完整目录.然后在你不关心的一个子目录上运行svn update --set-depth exclude.

对于TortoiseSVN,您也可以通过右键单击您不想要的文件夹来执行相同操作,单击Update to revision...,然后将"更新深度"设置Exclude为,如此屏幕截图所示:

在此输入图像描述


180*_*ION 7

使用svn export命令:

cd c:\websites\test
svn export c:\websites\test_copy
Run Code Online (Sandbox Code Playgroud)

将导出版本控制下的所有文件.仔细检查以确保您没有遗漏任何东西.


小智 5

只需删除所需文件夹中的 .svn 文件夹,控件就会自动删除。