移动版本化和未版本控制的文件和文件夹的混合

时间:2013-05-06 14:13:46

标签: svn

我可以通过

移动未版本控制的文件
mv * subfolder/

和版本化文件通过

svn mv * subfolder/

(除了subfolder中的*

之外的问题

如果其中一半是版本化而另一半不是文件,我怎么能移动文件?

2 个答案:

答案 0 :(得分:0)

我会做一个find . \! \( -name .svn -prune \)并将其传递给while read(假设没有包含制表符或\n个字符的目录或文件,请将其设为简单。然后,对该文件执行svn mv。如果失败,你知道它是一个无版本的文件,你可以在它上面做一个简单的mv

$ find . \! \( -name .svn -prune \) | while read file
do
    if ! svn mv $file $new_location
    then
        mv $file $new_location
    fi
done

实际的代码比这更棘手。如果您移动文件的目录存在,该怎么办?如果它不存在怎么办?这是您正在移动的目录还是文件?所有这些都会影响您移动文件的确切方式。

真正的问题是为什么你突然发现自己这样做了。所有这些未版本控制的文件都来自哪里,为什么它们也必须移动到工作区中的另一个目录?

答案 1 :(得分:0)

您可以执行以下操作:

for f in svn ls .; do svn mv $f subfolder; done
mv * subfolder

您仍然必须处理subfolder.svn*不匹配,但您可能需要处理名称以点开头的文件和目录。