PS: forget the '1/2' in the topic, i did it slightly different which required changes to gettrack.sh, etc, but to got getmerge.sh, and saw my short sightedness.
On Fri, 2005-04-15 at 11:28 +0200, Martin Schlemmer wrote: > Hi, > > The egrep regex should not escape the '{' and '}', and also add a check > for ' \t' so that we do not pickup stuff like '+----', etc. Fix typo in > assignment. Check if file exists in new tree before adding/removing > (might add support for this lowlevel to increase speed?). Fix typo in > line removing temp files. > > Signed-off-by: Martin Schlemmer <[EMAIL PROTECTED]> > > gitapply.sh: 47b9346d2679b1bf34220fe4502f15c7d0737b0c > --- 47b9346d2679b1bf34220fe4502f15c7d0737b0c/gitapply.sh > +++ uncommitted/gitapply.sh > @@ -19,15 +19,22 @@ > # just handle it all ourselves. > patch -p1 -N <$patchfifo & > > -tee $patchfifo | egrep '^[+-]\{3\}' | { > +exits_in_cache() { > + for x in $(ls-tree "$1"); do > + [ "$x" = "$2" ] && return 0 > + done > + return 1 > +} > + > +tee $patchfifo | egrep '^[+-]{3}[ \t]' | { > victim= > origmode= > > while read sign file attrs; do > - echo $sign $file $attrs ... >&2 > +# echo $sign $file $attrs ... >&2 > case $sign in > "---") > - victim=file > + victim=$file > mode=$(echo $attrs | sed > 's/.*mode:[0-7]*\([0-7]\{3\}\).*/\1/') > origmode= > [ "$mode" != "$attrs" ] && origmode=$mode > @@ -35,14 +42,19 @@ > "+++") > if [ "$file" = "/dev/null" ]; then > torm=$(echo "$victim" | sed 's/[^\/]*\///') > #-p1 > - echo -ne "rm\0$torm\0" > + tree=$(echo $attrs | sed > 's/.*tree:\([0-9a-f]\{40\}\).*/\1/') > + exits_in_cache "$tree" "$torm" && echo -ne > "rm\0$torm\0" > continue > elif [ "$victim" = "/dev/null" ]; then > - echo -ne "add\0$file\0" > + toadd=$(echo "$file" | sed 's/[^\/]*\///') > #-p1 > + tree=$(echo "$file" | sed -e > 's/\([^\/]*\)\/.*/\1/') > + exits_in_cache "$tree" "$toadd" || echo -ne > "add\0$toadd\0" > fi > mode=$(echo $attrs | sed > 's/.*mode:[0-7]*\([0-7]\{3\}\).*/\1/') > if [ "$mode" ] && [ "$mode" != "$attrs" ] && [ > "$origmode" != "$mode" ]; then > - echo -ne "cm\0$mode\0$file\0" > + tochmod=$(echo "$file" | sed 's/[^\/]*\///') > #-p1 > + # need a space else numbers gets converted > + echo -ne "cm\0 $mode\0$tochmod\0" > fi > ;; > *) > @@ -74,4 +86,4 @@ > done > ' padding > > -rm $pathfifo $todo $gonefile > +rm $patchfifo $todo $gonefile > > -- Martin Schlemmer
signature.asc
Description: This is a digitally signed message part