我有当前工作副本中已在本地修改的文件列表。大约有50个文件已被更改。仅将SVN修改后的文件复制到另一个目录
我可以这样做得到这些文件的列表:
svn st | ack '^M'
有没有一种方法,我可以将这些文件和只有这些文件复制到另一个目录,这就是所谓backup
?
我有当前工作副本中已在本地修改的文件列表。大约有50个文件已被更改。仅将SVN修改后的文件复制到另一个目录
我可以这样做得到这些文件的列表:
svn st | ack '^M'
有没有一种方法,我可以将这些文件和只有这些文件复制到另一个目录,这就是所谓backup
?
假设ACK是如grep ...你可以这样做:
cp `svn st | ack '^M' | cut -b 8-` backup
我会发布此作为评论...但我不知道如何逃避评论...反引号
是否有可能这样做和_maintain_文件所在的目录?例如,如果修改过的文件在'/ images'中,那么当将文件复制到'/ backup'目录时,我可以创建/复制'/ images'文件夹吗? – crmpicco
由于某种原因,在mac上面的命令没有工作。我使用了以下svn status | grep'^ [ADMR]'| cut -b 8- | xargs -I'{}'cp {}/directory/ –
@forsvarir:反引号(至少在bash中)可以通过$() - constructs(btw允许嵌套表达式)进行交换。我解决了“维护目录”问题:'为我在$(svn st | grep^[MA] | cut -b 8-); do x =“b/$(dirname $ i)”; mkdir -p $ x; cp“$ i”“$ x”; done'。希望这可以帮助。 –
这会做(庆典):
#!/bin/bash
set -eu
# for each modified file
for f in $(svn st| awk '/^M/{print $2}'); do
# create a directory under backup root and copy the file there
mkdir -p .../backup/${f%/*} && cp -a $f .../backup/$f
done
svn status | grep '^[ADMR]' | cut -b 8- | xargs -I '{}' rsync -R {} /directry/
我刚刚尝试了这一点,但它没有维护文件所在的目录。所以如果你有一个/inc/picco.txt文件,那么它不会创建'inc /'。 – crmpicco
rsync -R应保留目录结构。我已经更新了脚本。请让我知道这是否适合你。 –
在Windows 8中,可以在当前的svn目录使用这个命令:
(FOR /F "tokens=2 delims== " %i IN ('svn st ^| findstr "^[ADMR]"') DO @echo %i & echo f| xcopy /f /y %i c:\projects\backup\%i)
试图运行这个,但它有一些目录错误 – Dmitriy
这对我的作品:
svn status | grep ^M | awk '{print $2}' | xargs -I '{}' cp --parents {} /backup/
请编辑您的帖子,以显示你的svn管道产生的输出的一小部分。然后,我们可以轻松帮助。它很可能可以作为单线程来完成。祝你好运。 – shellter