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

Shell 自动将2个svn目录合并到一个目录中,shell,svn,Shell,Svn,我有两个目录有相似的结构 ./projectA /directory1 /file1 /directory2 /file2 /file3 /file4 /directory3 /directoryA ./projectB /directory1

我有两个目录有相似的结构

./projectA
          /directory1
                 /file1
          /directory2
                 /file2
                 /file3
                 /file4
          /directory3
          /directoryA
./projectB
          /directory1
          /directory2
                 /file3
          /directory3
          /directoryB
我想将projectA合并到projectB中。如果目录或文件存在于a中而不存在于B中,请执行svn从a复制到B的相应目标。如果a中的文件在B中有相应的文件,则回显警告。我怎样才能自动完成这项工作?它可以是shell脚本或工具


谢谢

使用此命令,您可以获得
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“^仅在ProjectA中| sed's/仅在ProjectA//g'| sed's/:\s//\//g';这样我们就可以得到完整路径的列表。
diff -qr projectA projectB --exclude=.svn | grep "^Files " | cut -d" " -f2 | sed 's!projectA!!g'