Re: Re* [PATCH] git-remote-testgit: avoid process substitution
- From
Johannes Sixt <j6t@kdbg.org>
- Date
- Apr 27, 2013, 19:13 UTC
- Message-ID
- <517C2349.3050609@kdbg.org>
- In-Reply-To
- <7v8v44vpon.fsf_-_@alter.siamese.dyndns.org>
Am 27.04.2013 01:26, schrieb Junio C Hamano:
Show 10 quoted lines
> Felipe Contreras <felipe.contreras@gmail.com> writes: > >> No, it wouldn't, but I don't think there's any way to do \<\> or \b in globs. > > This should do in the meantime, but it further needs: > > - J6t's sign off for the follow-up part to remove remaining > bash-isms to complete this patch (the last part of the patch is > from <5178C583.6000703@viscovery.net> and we can take half the > log message from there);
The patch below doesn't remove the bash dependency, yet, but it addresses the problematic mismatch you noticed without the need for $LF. Can you please queue it to move the topic forward?
Removing the remaining bashisms and the following two can come later:
Show 5 quoted lines
> - Rename it to git-remote-testgit.sh and tell Makefile to replace > the shebang line with SHELL_PATH like other scripts; > > - Remove the "we need to have bash because we will run remote-testgit" > logic from t5801
Here's my
Signed-off-by: Johannes Sixt <j6t@kdbg.org>
for this part in case someone wants to pick it up:
Show 39 quoted lines
> diff --git a/git-remote-testgit b/git-remote-testgit
> index b395c8d..ffac950 100755
> --- a/git-remote-testgit
> +++ b/git-remote-testgit
> @@ -1,4 +1,4 @@
> -#!/usr/bin/env bash
> +#!/bin/sh
> # Copyright (c) 2012 Felipe Contreras
>
> alias=$1
> @@ -23,7 +23,6 @@ then
> testgitmarks="$dir/testgit.marks"
> test -e "$gitmarks" || >"$gitmarks"
> test -e "$testgitmarks" || >"$testgitmarks"
> - testgitmarks_args=( "--"{import,export}"-marks=$testgitmarks" )
> fi
>
> while read line
> @@ -62,22 +61,31 @@ do
> echo "feature export-marks=$gitmarks"
> fi
> echo "feature done"
> - git fast-export "${testgitmarks_args[@]}" $refs |
> + git fast-export \
> + ${testgitmarks:+"--import-marks=$testgitmarks"} \
> + ${testgitmarks:+"--export-marks=$testgitmarks"} \
> + $refs |
> sed -e "s#refs/heads/#${prefix}/heads/#g"
> echo "done"
> ;;
> export)
> before=$(git for-each-ref --format='%(refname) %(objectname)')
>
> - git fast-import "${testgitmarks_args[@]}" --quiet
> + git fast-import \
> + ${testgitmarks:+"--import-marks=$testgitmarks"} \
> + ${testgitmarks:+"--export-marks=$testgitmarks"} \
> + --quiet
> --- 8< --- Subject: [PATCH] git-remote-testgit: avoid process substitution
The implementation of bash on Windows does not offer process substitution.
Signed-off-by: Johannes Sixt <j6t@kdbg.org> --- git-remote-testgit | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/git-remote-testgit b/git-remote-testgit index 23c9d40..979b13e 100755 --- a/git-remote-testgit +++ b/git-remote-testgit @@ -87,17 +87,18 @@ do exit 1 fi - before=$(git for-each-ref --format='%(refname) %(objectname)') + before=$(git for-each-ref --format=' %(refname) %(objectname) ') git fast-import "${testgitmarks_args[@]}" --quiet - after=$(git for-each-ref --format='%(refname) %(objectname)') - # figure out which refs were updated - join -e 0 -o '0 1.2 2.2' -a 2 <(echo "$before") <(echo "$after") | - while read ref a b + git for-each-ref --format='%(refname) %(objectname)' | + while read ref a do - test $a == $b && continue + case "$before" in + *" $ref $a "*) + continue ;; # unchanged + esac echo "ok $ref" done
-- 1.8.2.388.g36592d7