我检查了一个项目的多个分支,每个分支都在他们自己的目录下(非常标准)。
的src / BRANCH1 /一些/代码/目录 SRC / BRANCH2 /一些/代码/目录
我经常发现自己想要将所选文件从一个分支复制到另一个分支。一个例子是复制cvsignore文件或intellij模块文件。我正在尝试做的伪命令是“将branch1匹配PATTERN下的所有文件复制到branch2,保留复制文件的相对路径”。
This question看起来很接近我正在寻找的东西,但我需要一个OS X / linux / unix解决方案。
答案 0 :(得分:1)
在branch1目录
中使用“cp -r --parents”命令find . -name ".cvsignore" -exec cp -r --parents {} ../branch2/ \;
OR
在src /目录中,运行此脚本。如果需要,可以从命令行参数中获取变量。
SOURCE="branch1/"
TARGET="branch2/"
PATTERN=".cvsignore"
find $SOURCE -name $PATTERN | while read f ;
do
FILEPATH=$(dirname $f | cut -d'/' -f2-)
FILENAME=$(basename $f)
DESTPATH=$TARGET/$FILEPATH;
if [ ! -d $DESTPATH ]
then mkdir -p $DESTPATH
fi
cp $f $DESTPATH
done