我有一个文件夹是我的工作副本。如何从此文件夹中删除所有 SVN 功能?我这样做是有原因的,不知何故,包含我所有网站工作副本的主文件夹不知何故变成了工作副本本身,所以我本身就有一个工作副本。
那么,有没有一种简单的方法可以从文件夹中删除版本控制?
我有一个文件夹是我的工作副本。如何从此文件夹中删除所有 SVN 功能?我这样做是有原因的,不知何故,包含我所有网站工作副本的主文件夹不知何故变成了工作副本本身,所以我本身就有一个工作副本。
那么,有没有一种简单的方法可以从文件夹中删除版本控制?
svn export 是您要查找的命令。您可以将一组受控文件导出到非受控位置并使用它。
只需删除其中的所有“.svn”文件夹即可。就是这样。
如果您使用 *nix 类工具:
find . -type d -name .svn -print0 | xargs -0 rm -fr
如果您使用的是 TortoiseSVN,您只需在工作副本的根文件夹中单击鼠标右键,然后单击导出...即使您有未提交的更改也可以。
同样,您可以只从存储库中执行导出,它不会创建任何 .svn 文件夹。
另一种直接的方法是删除所有 .svn 文件夹,如前所述。
您可以手动删除所有 .svn 文件夹(确保也为每个子文件夹执行此操作)或使用简单的实用程序,例如Jon Gallaway 的 shell 命令。
Windows 客户端“TortoiseSVN”具有“导出”功能。导出在不同文件夹中的其他位置创建一个副本,其中没有所有这些“.svn”文件夹。您可以从存储库或本地副本导出,并可选择包含未版本控制的文件。
这个怎么样:
for /f "tokens=* delims=" %%i in ('dir /s /b /a:d ".svn"') do rd /s /q "%%i"
递归删除所有 .svn 文件夹——
(如果导出功能不是您的选项 - 无法访问存储库等......)
TortoiseSVN 能够在没有 subversion 绑定的情况下导出文件 - 右键单击存储库(或存储库中的目录),然后是 TortoiseSVN,然后是导出。另一种方法是删除所有文件夹中的所有 .svn 目录。
这是一个 Windows 批处理脚本,它将从 Subversion 工作副本目录中删除所有 .svn 文件夹:
@echo off
rem cleanup .svn subdirs
setlocal enabledelayedexpansion
rem change to directory that this batch script resides in
if "%~1"=="" (
echo Usage: svncleanup svn_working_copy_dir
exit /b 1
)
echo cleaning up .svn subdirs in "%~1" ...
for /R "%~1" %%I in (.svn) do rmdir /Q /S "%%I" > NUL 2>&1
使用 TortoiseSVN,您可以右键单击拖放文件夹,然后选择“SVN 全部导出到此处”命令。
我只是使用 Windows 资源管理器搜索“.svn”(从我的工作副本顶部开始),然后选择它找到的所有文件夹并删除它们。
使用 Tortoise 就地导出
当我阅读上述所有建议时,我感到畏缩,因为我的源文件是 3GB,有许多 .svn 文件夹。
从右键单击上下文菜单中选择导出,当弹出“放置副本的位置”对话框时,选择同一个文件夹本身。好的。Viola 所有的源代码控制都(递归地)立即消失了。
你不能只删除 .svn 子文件夹吗?
据我所知,SVN 将有关其与存储库的连接的所有内容都存储在此子文件夹中(至少在 Windows 中)
正如其他人所说,删除 .svn 文件夹将从该文件夹中删除 SVN 功能。如果您递归地执行此操作,您将“取消 SVN”您的整个 WC,这本质上就是 export 命令所做的。我不确定它是 Tortoise、CLI SVN 二进制文件还是两者的功能,但我记得其中一个允许您进行就地导出,这实际上只是从 WC 中删除 .svn 文件夹。正常导出会在未版本化的新位置创建 WC 的副本。