How to apply a patch made by repo diff?

902 views
Skip to first unread message

pelya

unread,
Dec 13, 2010, 7:21:43 AM12/13/10
to Repo and Gerrit Discussion
Hi.

I've created a simple shell script to apply patches created by "repo
diff" command

repo-apply-patch.sh

#!/bin/sh

if [ -z "$1" ] ; then
echo Usage: $0 diff-file
exit
fi

if [ \! -e .repo ] ; then
echo Warning: $0 should be run from the root of your repo tree,
proceeding anyway
fi

LINENUM=0
CHUNKSTART=1
CHUNKLEN=0

grep -n '^project ' "$1" | {

while read PROJLINE; do
LINENUM=`echo $PROJLINE | sed 's@^\(.*\)[:]project \(.*\)@\1@'`
PROJECT=`echo $PROJLINE | sed 's@^\(.*\)[:]project \(.*\)@\2@'`
if [ "$CHUNKSTART" != "1" ]; then
CHUNKLEN=`expr $LINENUM - $CHUNKSTART`
cat "$1" | head -n `expr $CHUNKSTART '+' $CHUNKLEN - 1` | tail
-n $CHUNKLEN | patch -p1 --no-backup-if-mismatch -d "$PROJDIR"
fi
echo Applying patch to the dir $PROJECT
PROJDIR="$PROJECT"
CHUNKSTART=`expr $LINENUM '+' 1`
done

if [ "$CHUNKSTART" != "1" ]; then
FILESIZE=`cat "$1" | wc -l`
cat "$1" | tail -n `expr $FILESIZE - $CHUNKSTART + 1` | patch -p1
--no-backup-if-mismatch -d "$PROJDIR"
fi

}

Shawn Pearce

unread,
Dec 13, 2010, 11:47:13 AM12/13/10
to pelya, Repo and Gerrit Discussion
On Mon, Dec 13, 2010 at 04:21, pelya <x.pe...@gmail.com> wrote:
> I've created a simple shell script to apply patches created by "repo
> diff" command
...

> -n $CHUNKLEN | patch -p1 --no-backup-if-mismatch -d "$PROJDIR"

Instead of using patch, you probably should use git apply. That way
the specific metadata like mode changes or file renames can be honored
when the patch is applied to the directory.

Reply all
Reply to author
Forward
0 new messages