你如何删除一个文件夹的Subversion控件?
我有一个文件夹c:\websites\test
,它包含从不再存在的存储库检出的文件夹和文件。 我如何让Subversion停止跟踪该文件夹和任何子文件夹和文件?
我知道我可以简单地删除.svn
文件夹,但是在许多图层中有很多子文件夹。
此外,如果您使用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文件夹及其内容是一个简单的解决scheme(无论使用TortoiseSVN还是命令行工具)。
在Linux上,这将工作:
find . -iname ".svn" -print0 | xargs -0 rm -r
试试svn导出 。
你应该可以做这样的事情:
svn export /path/to/old/working/copy /path/to/plain/code
然后删除旧的工作副本。
TortoiseSVN也有一个导出function ,performance方式相同。
如果您正在运行Windows,那么您可以search该文件夹中的.svn
文件,并将其列出。 按Ctrl + A将select所有这些,按删除将删除所有'麻烦'的Subversion的东西。
我发现你甚至不需要复制到临时位置。 你可以做一个
svn export --force .
并且.svn文件将被原位删除,而其他文件保持不变。 非常方便,不容易混乱。
在Linux上,命令是:
svn delete --keep-local file_name
在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".
这些答案都不符合我的情况。 我在颠覆1.8,我有一个工作副本,只有一个单一的.svn
文件夹在第一个文件夹,根。 但是,我想从工作副本中删除一些分支。
无论我做了什么,每当我运行“更新”时,都会恢复这些文件,并将它们全部带回。 我不想从存储库中删除它们,只是从我的电脑中删除它们,但是我需要保留工作副本的其余部分(因此不能删除.svn文件夹)。
解? svn update --set-depth exclude <dir>
这是一个排除特定目录的客户端“更新”。 它可以在svnbook.com的手册中find 。 总之,它描述为:
从Subversion 1.6开始,你可以采取不同的方法。 首先,检查完整的目录。 然后在你不关心的一个子目录上运行svn update –set-depth exclude。
对于TortoiseSVN,您还可以通过右键单击不需要的文件夹来执行相同操作,单击Update to revision...
,然后将“更新深度”设置为“ Exclude
,如下面的屏幕截图所示:
它对我来说很好:
find directory_to_delete/ -type d -name '*.svn' | xargs rm -rf
使用svn export
命令:
cd c:\websites\test svn export c:\websites\test_copy
版本控制下的所有文件都将被导出。 仔细检查,确保你没有遗漏任何东西。
只需删除所需文件夹中的.svn文件夹,然后控件将被自动删除。
在Windows上,你可以添加一个快速链接到你的资源pipe理器右键菜单。 只需启动这个registry脚本:
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/
您可以使用“svn export”来创build该文件夹的副本,而无需svn数据,或者您可以添加该文件夹以忽略列表
对于那些使用SVN的NetBeans,有一个选项“Subversion> Export”。
还有一个很好的小开源工具叫SVN Cleaner ,它在Windows资源pipe理器上下文菜单中增加了三个选项:
- 删除所有.svn
- 删除所有,但根.svn
- 删除本地回购文件
在Windows 7上,可以打开项目文件夹,如果启用了隐藏文件,则search“.svn”,并删除所有find的.svn文件夹。
最好,最简单的方法
如果你认为你可以赢得一个简单的魔法命令,你是失败的! SVN是非常棘手的,总是以某种方式返回Xcode中的新错误消息。 迟早,承诺…所以你必须做到这一点聪明!
如您所知,Xcode下的常规和最佳做法是删除左侧项目窗格上的文件。 如果你错过了,并在Finder中删除它,你有麻烦。 大麻烦! 但是如果你做得好的话,你可以解决这个问题。
首先,您需要删除对文件或文件夹的SVN引用,然后才能真正删除它
-
如果你可以把垃圾桶里的文件/文件夹放回去,或者删除最后一步,那么…
-
去terminal – 是的,好老的terminal – 去那个地方。 最好的方法只需键入cd然后将文件夹/文件拖到terminal。 你会得到类似的东西
CD /用户/用户名/文件/ Apps_Developing / …
你可以检查你在哪里
LS
命令列出你的文件。
-
那么你需要用SVN命令删除svn引用:
svn delete –keep-local fileName_toDelete
这将从SVN仓库中删除文件,但是你必须在Finder中手动删除它。
答案非常简单 – 将文件夹导出到自己 ! TortoiseSVN检测到这个特殊情况,并询问是否要使工作副本未版本化。 如果你回答是,控制目录将被删除,你将有一个普通的,未版本化的目录树。
另一个(更简单的)Linux解决scheme:
rm -r `find /path/to/foo -name .svn`
svn export
工作正常,但我认为这是:
svn rm --keep-local <folder/file>
它将其从本地存储库中删除。
这个命令适用于我:
找 。 -iname“.svn”-print0 | xargs -0 rm -r
我使用rsync:
# copy folder src to srcStripped excluding subfolders named '.svn'. retain dates, verbose output rsync -av --exclude .svn src srcStripped
NetBeans IDE用户可以这样做:
- 在您的IDE中打开SVN项目
-
select项目
右键点击Subversion Export
-
在对话框中
导出到文件夹/ var / tmp / projectname按导出等待将显示完成将询问你要打开它在飞行中打开
-
你现在可以切换到Git 🙂
我的想法是删除.svn文件夹,然后将所有其他文件移动到一个新的文件夹。 它是如此简单。
当您使用Windows操作系统时,转到您的文件夹位置,并检查隐藏的文件是否打开,然后您可以在那里看到SVN文件夹。 只要删除该文件夹。
作为一个关键点,当您使用shell删除.svn文件夹时,您需要使用-depth参数来防止find命令进入刚删除的目录,并显示如eg
“find:./.svn:没有这样的文件或目录”
因此,您可以使用如下所示的find
命令:
cd [dir_to_delete_svn_folders] find . -depth -name .svn -exec rm -fr {} \;
在Windows 10上,我们需要转到Windows Explorer
,然后转到“ View
并选中“ View hidden files
”checkbox。
然后导航到在Windows资源pipe理器中链接了SVN的文件夹,并删除.svn
文件夹/文件。