Re: [PATCH] git-remote-testgit: avoid process substitution
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:57:00
Johannes Sixt [off-list ref] writes:
quoted hunk
From: Johannes Sixt <redacted> Bash on Windows does not implement process substitution. Signed-off-by: Johannes Sixt <redacted> --- ... Here is a fix. It assumes that the list of refs after the import is a superset of the refs before the import. (Can refs be deleted via fast-import?) git-remote-testgit | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-)diff --git a/git-remote-testgit b/git-remote-testgit index 23c9d40..e99d5fa 100755 --- a/git-remote-testgit +++ b/git-remote-testgit@@ -91,13 +91,15 @@ do 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
This just like the original 'join' depends on the two output from
for-each-ref to be sorted the same way, which is true and fine. But
I wonder one thing. When $before has this in it:
refs/heads/refs/heads/master 664059...126eaa7
and your "read ref a" got this in the input:
refs/heads/master 664059...126eaa7
would the pattern matching by case work corretly?
Doing something like this might be needed.
case "$LF$before$LF" in
*"$LF$ref $a$LF"*)
continue ;; # matches
esac