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

