SVN mv可以优化为svn copy + delete吗?

时间:2011-11-17 22:47:27

标签: svn find grep xargs

我在特定目录中有成千上万的图像。我已经从这个目录中手工挑选了我想要移动到子目录中的特定文件:

>find . -type f -name '*.png'| \
 grep -Ev "(_retina|_hd|_iphone)"

这导致成千上万(而不是成千上万)的图像,这就是我想要的。我想将这些图片从./移到./tmp/

This帖子询问如何在SVN中集中移动这些图像,尽管它仍在使用svn mv。这会逐个移动图像,并且非常慢:

>find . -type f -name "*.png"| \
 grep -Ev "(_retina|_hd|_iphone)"| \
 xargs -I CMD svn mv "CMD" "tmp/CMD"

由于svn使用svn cp保留文件修订历史记录,因此这似乎更快:

>find . -type f -name ".png"| \
 grep -Ev "(_retina|_hd|_iphone)"| \
 xargs -I CMD svn cp "CMD" "tmp/CMD"
>find . -type f -name ".png"| \
 grep -Ev "(_retina|_hd|_iphone)"| \
 xargs -I CMD svn rm "CMD"

我首先svn cp所有想要的图像,它们似乎很快就会飞过。然后我运行svn rm删除原始图像,这也非常快。然后我承诺。

使用svn mv进行批量移动与使用双svn cp然后svn rm相比,是否有任何主要优势?

1 个答案:

答案 0 :(得分:2)

不,它们应该完全一样。根据SVN manual

This [mv] command is equivalent to an svn copy followed by svn delete

我很惊讶复制+删除速度更快,但如果是,请选择它。