SVN递归删除

23

有没有办法递归地从SVN主干中删除一个名为FolderX的文件夹?快速搜索谷歌只告诉我如何递归删除所有 .svn 文件夹,但这不是我想要做的。


"svn rm FolX" 有什么问题? - nobody
1
他的意思是说整个目录树中有多个FOIX目录。你的命令只会删除当前目录下的一个。 - Dana the Sane
6个回答

33

在类Unix操作系统上,尝试执行以下类似命令:

find ./ -name "FolderX" | xargs svn delete --force

这将在当前目录中查找所有匹配的文件/文件夹并对它们执行操作,例如svn delete。但我不确定如何在Windows上实现此操作而不使用cygwin。

针对win32,下面的评论者建议使用类似的解决方案(cmd):

for /R . %1 in (*.EXT) do svn delete %1

1
我真的希望有一个相当于此的Windows命令提示符命令。我猜我可以安装cygwin。 - Warren P
4
我找到了,我想要递归地从我的代码库中删除所有 *.EXT 文件,在 Win32 命令提示符(DOS)中,命令是:for /R . %1 in (*.EXT) do svn remove %1 - Warren P
这是批处理方法的更正。将其放入某个批处理文件中:@echo off<br> for /R %%a in (FolX\*) do svn remove --force %%a - pmod
递归地工作得非常好。有趣的是,当我提交时,我只看到一行消息:删除存档。提交修订版 21027。看起来 SVN 变得更加智能了。 - fchen

5

svn delete FolX --force即使在子树中存在未版本化的文件,也可以完成操作。


2
他说的是FolX(代表“文件夹X”),不是FOIX :) - ngn

2

7
不相关。问题是关于从svn仓库中删除,而不是本地删除。 - pmod

1

我创建了一个SH文件,可以轻松地作为“rm”常用程序运行。

  • 在“/usr/bin”中,我创建了一个名为“rm_svn_dirs”的文件,并输入以下内容:

#!/bin/bash

if [ $\# -eq 0 ] ; then

    echo
    echo "Path not found"
    echo "Use:"
    echo "    $0 path"`
    echo "    $0 /var/www/test/svn/website"
    echo "    $0 ."
    echo "Operation cancelled"
    echo
    exit 1
fi

echo 
echo "Recursively delete .svn directories in:"
if [ $1 != "." ] ; then
    echo $1
else
    pwd
fi

echo
read -p "Continue? [Yes/No]: " x
if [ "$x" != "Yes" ] ; then
    echo "Operation cancelled"
    echo
    exit 1
fi

find $1 -name .svn -exec rm -rf {} \;
echo "End!"
echo
exit 0`

保存文件并使其可执行: chmod +x rm_svn_dirs
使用方法: rm_svn_dirs /var/www/svn/www rm_svn_dirs ./svn/www rm_svn_dirs .

0

如果你想在批处理文件中使用它,请不要忘记将百分号加倍:

for /R . %1 in (*.EXT) do svn delete %1

_

对于每一个在当前目录及其子目录下的以.EXT为后缀的文件,执行svn delete %%1命令。

-1

这对我很有效

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

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