取消SVN的工作副本

47

我有一个作为工作副本的文件夹。如何从这个文件夹中移除所有SVN功能?我有自己的原因这么做,一些奇怪的情况发生了,我的主文件夹里包含了所有我工作站点的副本,但是它自己也成为了一个工作副本,所以在它内部有一个工作副本。

那么,有没有一种简单的方法来从文件夹中删除版本控制呢?

14个回答

47

你需要的命令是 svn export。它可以将一组受控文件导出到非受控位置并使用。


32

只需删除其中所有的“.svn”文件夹,就可以了。


2
进一步说明。如果您尝试将一个已经有“.svn”隐藏文件的目录添加到SVN中,则svn将拒绝添加。删除“.svn”文件,然后再次尝试“svn add”。如果这样还不行,请删除该目录并执行“svn update yourdirectory”,然后执行“svn remove yourdirectory”。svn经常会感到困惑和恐慌,有时唯一的解决办法是清除所有内容并重新构建所有内容。 - Eric Leschinski
罗曼是对的...导出项目更容易,因为有很多.svn文件夹! - Jordi Corominas

23

如果您正在使用*nix类工具:

find . -type d -name .svn -print0 | xargs -0 rm -fr

10
请使用 find . -type d -name .svn -print0 | xargs -0 rm -fr 替代原命令以避免在文件名包含空格时导致一切混乱。该命令意思不变,只是更通俗易懂。 - j_random_hacker
谢谢,这正是我所需要的。我曾使用SVN来管理一个网站,但WordPress的自动更新对网站造成了严重破坏,而且不值得从中挖掘出来。 - Robert Calhoun

13
如果您使用TortoiseSVN,只需右键单击工作副本的根文件夹并单击“导出...”即可。即使有未提交的更改也可以运行。
同样,您可以从存储库中执行导出操作,它不会创建任何 .svn 文件夹。
另一个简单的方法是,就像先前提到的一样,只需删除所有 .svn 文件夹。

4
你可以手动删除所有的 .svn 文件夹(确保对每个子文件夹都这样做),或者使用一个简单的实用程序,比如Jon Gallaway的 shell 命令

4

Windows客户端“TortoiseSVN”具有“导出”功能。导出可以在另一个文件夹中创建一个副本,而不包含其中的所有“.svn”文件夹。 您可以从存储库或本地副本中导出,并选择包括未版本化的文件。


4
这个怎么样:
for /f "tokens=* delims=" %%i in ('dir /s /b /a:d ".svn"') do rd /s /q "%%i"

递归删除所有的.svn文件夹--

(如果对于你来说导出功能不是一个选项--, 无法访问存储库等...)


2
upmod 因滥用 DOS 而被禁用 :-) - endian
小心——这将删除任何以“svn”结尾的目录。 - j_random_hacker

3

TortoiseSVN具有在没有其子版本绑定的情况下导出文件的能力 - 右键单击存储库(或存储库中的目录),然后选择TortoiseSVN,再选择Export。另一种方法是删除所有文件夹中的.svn目录。


3
以下是一个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

2

我只需使用Windows资源管理器搜索“.svn”(从我的工作副本顶部开始),然后选择它找到的所有文件夹并将其删除。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接