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

时间:2008-09-30 20:21:33

标签: svn

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

我知道我可以删除.svn文件夹,但是很多层中都有很多子文件夹。

29 个答案:

答案 0 :(得分:255)

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

答案 1 :(得分:154)

在Linux上,这将起作用:

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

答案 2 :(得分:118)

尝试svn export

你应该可以这样做:

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

然后删除旧的工作副本。

TortoiseSVN也有export feature,其行为方式相同。

答案 3 :(得分:32)

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

答案 4 :(得分:22)

在Linux上,命令是:

svn delete --keep-local file_name

答案 5 :(得分:21)

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

svn export --force .

并且.svn文件将被移除 in situ ,其他文件将保留原样。非常方便,不易混乱。

答案 6 :(得分:9)

在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".

答案 7 :(得分:8)

这些答案对我的情况都不满意。我在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

答案 8 :(得分:8)

对我来说效果很好:

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

答案 9 :(得分:7)

使用svn export命令:

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

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

答案 10 :(得分:3)

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

答案 11 :(得分:3)

在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\" \""

这将添加一个名为&#34;删除SVN文件夹&#34;到你的右键菜单。这将删除此文件夹和所有子文件夹中的所有.svn文件夹。

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

答案 12 :(得分:2)

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

答案 13 :(得分:2)

在Windows 7上,只需打开项目文件夹并搜索“.svn”,如果启用了隐藏文件,则删除所有找到的.svn文件夹。

答案 14 :(得分:2)

还有一个名为SVN Cleaner的小型开源工具,它为Windows资源管理器上下文菜单添加了三个选项:

  • 全部删除.svn
  • 删除所有但根.svn
  • 删除本地回复文件

答案 15 :(得分:2)

对于那些使用带有SVN的NetBeans的用户,有一个选项'Subversion&gt;导出”。

答案 16 :(得分:1)

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

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

答案 17 :(得分:1)

答案非常简单 - 将文件夹导出到自身! TortoiseSVN检测到这种特殊情况,并询问您是否要使工作副本无版本化。如果您回答是,则将删除控制目录,并且您将拥有一个简单的无版本目录树。

答案 18 :(得分:1)

答案 19 :(得分:1)

  

最好和最轻松的方式

如果你认为你可以通过一个简单的魔法命令获胜,那你就失败了! SVN非常棘手,并且总是以某种方式返回Xcode中的新错误消息。迟早,承诺......所以你必须聪明地做到这一点!

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

首先,您需要先删除文件或文件夹的SVN引用,然后才能将其删除

  1. 如果你可以从垃圾箱中取回文件/文件夹,或者在删除文件/文件夹时撤消最后一步,那么......

  2. 转到终端 - 是的,好的旧终端 - 然后去那个地方。 最好的方法是输入 cd 然后将文件夹/文件拉到终端。你会得到类似的东西

  3.   

    cd / Users / UserName / Documents / Apps_Developing /...

    你可以查看你在哪里

      

    LS

    命令列出您的文件。

    1. 然后你需要用SVN命令删除svn引用:

      svn delete --keep-local fileName_toDelete

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

答案 20 :(得分:0)

NetBeans IDE用户可以按照以下方式执行此操作:

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

      

    右键单击   颠覆   出口

  3. 在对话框中

      

    导出到文件夹   / var / tmp中/项目名称   按出口   等待   将显示完整   会问你想打开它吗?

  4. 您现在可以切换到Git:)

答案 21 :(得分:0)

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

答案 22 :(得分:0)

我使用rsync:

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

答案 23 :(得分:0)

当您使用Windows操作系统时,转到文件夹位置并检查隐藏文件是否已打开,然后您可以在其中看到 SVN 文件夹。只需删除该文件夹即可。

答案 24 :(得分:0)

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

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

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

答案 25 :(得分:0)

至关重要的是,当您使用 shell 删除.svn文件夹时,需要 -depth 参数来阻止查找命令进入刚刚删除的目录并显示错误消息,例如

  

“find:./。svn:没有这样的文件或目录”

因此,您可以使用如下find命令:

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

答案 26 :(得分:0)

从Windows命令行:

rmdir .svn /s /q

答案 27 :(得分:0)

使用以下内容:

git log HEAD...f7fdee8bd3 --oneline | wc -l 删除文件夹及其中的所有内容。

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

以下是发生的情况的一个示例:

svn rm --keep-local <folder name>/*

答案 28 :(得分:-1)

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

然后导航到在Windows资源管理器中链接了SVN的文件夹并删除.svn文件夹/文件。