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

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

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

325331 次浏览

svn出口试试。

你应该可以这样做:

svn export /path/to/old/working/copy /path/to/plain/code

然后删除旧的工作副本。

TortoiseSVN也有一个导出功能,它的行为是相同的。

您可以使用“svn export”来创建一个没有svn数据的文件夹的副本,或者您可以将该文件夹添加到忽略列表中

使用svn export命令:

cd c:\websites\test
svn export c:\websites\test_copy

导出版本控制下的所有文件。仔细检查,确保你没有错过任何东西。

如果你运行的是Windows,那么你可以在该文件夹中搜索.svn,这将列出所有这些文件。按Ctrl + 一个将选中所有这些,按delete将删除所有“讨厌的”Subversion内容。

另外,如果您正在使用TortoiseSVN,只需导出到当前的工作副本位置,它将删除.svn文件夹和文件。

http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-export.html#tsvn-dug-export-unversion < / >

< p > Subversion 1.7的更新答案: < br > 在Subversion 1.7中,工作副本已被广泛修订。只有一个.svn文件夹,位于工作副本的底部。如果你使用的是1.7,那么删除.svn文件夹及其内容是一个简单的解决方案(无论使用TortoiseSVN还是命令行工具)

在Linux上,这将工作:

  find . -iname ".svn" -print0 | xargs -0 rm -r

对于那些使用NetBeans与SVN,有一个选项“Subversion >导出”。

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

svn export --force .

.svn文件将被原位删除,其他文件保留原样。非常方便,不容易杂乱。

还有一个很棒的开源工具SVN清洁,它为Windows资源管理器上下文菜单添加了三个选项:

  • 删除所有。svn
  • 删除Root .svn
  • 删除本地回购文件

只需删除所需文件夹中的.svn文件夹,然后控件将自动删除。

在Windows 7上,你只需要打开项目文件夹,然后搜索“”。如果启用隐藏文件,则删除所有找到的。Svn文件夹。

NetBeans IDE用户可以这样做:

  1. 在IDE中打开SVN项目
  2. 选择项目

    < p >右键单击 颠覆 出口< / p > 李< /引用> < / >
  3. 对话框中

    导出到文件夹 /var/tmp/projectname 按出口 等待 将显示完整 会问你想打开它吗?是否要打开

    李< /引用> < / >
  4. 你现在可以切换到Git:)

在Windows上,你可以在资源管理器右键菜单中添加一个快速链接。 只需启动这个注册表脚本:

Windows Registry Editor Version 5.00


[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN]
@="Delete SVN Folders"


[HKEY_CLASSES_ROOT\Folder\shell\DeleteSVN\command]
@="cmd.exe /c \"TITLE Removing SVN Folders in %1 && COLOR 9A && FOR /r \"%1\" %%f IN (.svn) DO RD /s /q \"%%f\" \""

这将添加一个名为“删除SVN文件夹”的项目到您的右键菜单。这将删除该文件夹中的所有。svn文件夹及其所有子文件夹。

来源(德文):http://www.sjmp.de/software/alle-svn-ordner-und-dateien-loeschen/

在Linux上,命令是:

svn delete --keep-local file_name

我的想法是删除.svn文件夹,然后将所有其他文件移动到一个新文件夹。事情就是这么简单。

Linux下不带subshell删除.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".

我使用rsync:

# copy folder src to srcStripped excluding subfolders named '.svn'. retain dates, verbose output
rsync -av --exclude .svn src srcStripped

另一个(更简单的)Linux解决方案:

rm -r `find /path/to/foo -name .svn`

答案非常简单——导出文件夹到其本身!TortoiseSVN检测到这种特殊情况,并询问您是否希望使工作副本无版本控制。如果回答“是”,则控制目录将被删除,您将拥有一个普通的、未版本化的目录树。

这对我来说很有效:

find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf

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

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

解决方案吗?svn update --set-depth exclude <dir>

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

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

对于TortoiseSVN,你也可以通过右键单击你不想要的文件夹,单击Update to revision...,然后将“更新深度”设置为Exclude,如下面的屏幕截图所示:

enter image description here

当你使用Windows操作系统时,去你的文件夹位置并检查隐藏文件是否打开,然后你可以在那里看到SVN文件夹。只要删除文件夹。

svn export工作正常,但我认为这是:

svn rm --keep-local <folder/file>

它将从本地存储库中删除它。

重要的一点是,当你使用壳牌来删除.svn文件夹时,你需要深度参数来防止找到命令进入刚刚删除的目录并显示错误消息,如e.g.。

“找到:。/。svn:没有这样的文件或目录"

因此,你可以像下面这样使用find命令:

cd [dir_to_delete_svn_folders]
find . -depth -name .svn -exec rm -fr {} \;

最好最简单的方法

如果你认为你可以通过一个简单的魔法命令获胜,你就失败了!SVN真的很棘手,总是在Xcode中以某种方式返回一个新的错误消息。迟早,答应我…所以你得聪明点!

如你所知,Xcode下的常规和最佳实践是删除左边项目窗格中的文件。如果你错过了它,并以某种方式在Finder中删除了它,你就有麻烦了。大麻烦!但如果你做得好,你可以解决它,并节省时间。

首先,您需要删除SVN对文件或文件夹的引用,然后才能实际删除它

  1. 如果你能把文件/文件夹从垃圾箱里放回去,或者在你删除它的时候撤销最后一步,那么……

  2. 去终点站——是的,那个不错的老终点站——然后去那个地方。 最好的方法是输入cd,然后将文件夹/文件拉到终端。你会得到类似的

cd /用户/用户名/文件/ Apps_Developing /…

你可以看看你在哪里

ls

命令列出您的文件。

  1. 使用svn命令删除svn引用。

    svn delete——keep-local fileName_toDelete

    .使用实例

这将从SVN存储库中删除文件,但是您必须在Finder中手动删除它。

在Windows 10上,我们需要转到Windows Explorer,然后转到View并选中View hidden files的复选框。

然后在Windows资源管理器中找到SVN所链接的文件夹,删除“.svn”文件夹/文件。

从Windows命令行:

rmdir .svn /s /q

使用以下方法:

svn rm --keep-local <folder name>删除文件夹和其中的所有内容。

svn rm --keep-local <folder name>/*保留文件夹,但删除文件夹内的所有内容。

下面是一个例子:

~/code/web/sites/testapp $ svn rm --keep-local includes/data/*
D         includes/data/json
D         includes/data/json/index.html
D         includes/data/json/oembed
D         includes/data/json/oembed/1.0
D         includes/data/json/oembed/1.0/embed1.json
D         includes/data/json/oembed/1.0/embed2.json
D         includes/data/json/oembed/1.0/embed3.json