Felipe Contreras [off-list ref] 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 [off-list ref] and we can take half the
log message from there);
- 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
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
-
- after=$(git for-each-ref --format='%(refname) %(objectname)')
+ git fast-export \
+ ${testgitmarks:+"--import-marks=$testgitmarks"} \
+ ${testgitmarks:+"--export-marks=$testgitmarks"} \
+ --quiet
# 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
+ LF=$'\n'
+ git for-each-ref --format='%(refname) %(objectname)' |
+ while read ref a
do
- test $a == $b && continue
+ case "$LF$before$LF" in
+ *"$LF$ref $a$LF"*)
+ continue
+ ;;
+ esac
echo "ok $ref"
done
Am 27.04.2013 01:26, schrieb Junio C Hamano:
Felipe Contreras [off-list ref] writes:
quoted
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 [off-list ref] 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:
- 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 <redacted>
for this part in case someone wants to pick it up:
quoted hunk
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
Subject: [PATCH] git-remote-testgit: avoid process substitution
The implementation of bash on Windows does not offer process substitution.
Signed-off-by: Johannes Sixt <redacted>
---
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