将2个svn目录自动合并到一个目录中

时间:2013-10-16 10:03:46

标签: shell svn

我有两个具有类似结构的目录。

./projectA
          /directory1
                 /file1
          /directory2
                 /file2
                 /file3
                 /file4
          /directory3
          /directoryA
./projectB
          /directory1
          /directory2
                 /file3
          /directory3
          /directoryB

我想将projectA合并到projectB中。如果A中存在且B中不存在的目录或文件,请执行从A到B的svn复制到相应的目标。如果A中的文件在B中具有相应文件,则回显警告。我该如何自动执行此操作?它可以是shell脚本或工具....

由于

1 个答案:

答案 0 :(得分:1)

使用此命令可以获取projectA但不在projectB中的所有文件,忽略.svn文件夹:

diff -qr projectA projectB --exclude=.svn | grep "^Only in projectA:" | cut -d: -f2 | sed 's/^ *//g

使用此命令可以获得两个文件夹中存在且不同的所有文件(即复制前可能需要检查的文件):

diff -qr projectA projectB --exclude=.svn | grep "^Files " | cut -d" " -f2 | sed 's!projectA!!g'

但是第二个命令不适用于包含空格的文件。

现在您已经有了两个包含所需文件名的列表,您可以轻松编写一个小脚本,用它们做正确的事情。