2013-05-06 91 views
0

我可以通过移动混合物

mv * subfolder/ 

和版本控制文件经由

svn mv * subfolder/ 

(除了问题subfolder是在*

移动版本的文件

但是如果一半文件被版本化而另一半文件不存在,我该如何移动文件?

+0

你有没有试过后者?如果是这样,你会得到什么错误? – alroc 2013-05-06 14:19:27

+0

@alroc'svn:'file.end'不在版本控制下'然后svn停止并且不会继续处理其他文件 – 2013-05-06 20:03:53

回答

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 

的实际代码将是比这个棘手。如果您要移动文件的目录存在,该怎么办?如果它不存在呢?这是你正在移动的目录还是文件?所有这些都会影响你如何移动文件。

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

+0

未版本控制的文件是我没有版本的文件,因为它们太大,是临时的,都是副本其他人的档案等等。当然总有办法让你的档案更完美地安排,这样就没有必要,但实际上我经常发现自己处于一个完美世界中不存在的状态。对我来说最重要的是我的重要文件是版本化的,所以我不会失去任何东西 – 2013-05-06 20:09:44

0

你可以这样做:

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

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