There is no portable way in sed to express alternation (the "|" operator). POSIX does not specify any way of expressing alternation; according to POSIX, sed uses basic regular expressions which do not support alternation. GNU sed allows "\|" to express alternation, and BSD sed (as tested on Mac OS X) allows for the use of extended regular expressions with the -E flag, but there appears to be no portable way to express this. This patch works around the problem by changing a single sed expression into two. This patch also factors out all the call sites that were doing this, to determing the current branch, into a single function current_branch in tg.sh. Signed-off-by: Brian Campbell <brian.p.campbell@xxxxxxxxxxxxx> --- tg-info.sh | 2 +- tg-patch.sh | 2 +- tg-summary.sh | 2 +- tg-update.sh | 2 +- tg.sh | 5 +++++ 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/tg-info.sh b/tg-info.sh index 7d6a34c..25c753c 100644 --- a/tg-info.sh +++ b/tg-info.sh @@ -20,7 +20,7 @@ while [ -n "$1" ]; do esac done -[ -n "$name" ] || name="$(git symbolic-ref HEAD | sed 's#^refs/\(heads\|top-bases\)/##')" +[ -n "$name" ] || name="$(current_branch)" base_rev="$(git rev-parse --short --verify "refs/top-bases/$name" 2>/dev/null)" || die "not a TopGit-controlled branch" diff --git a/tg-patch.sh b/tg-patch.sh index d701c54..ba788c8 100644 --- a/tg-patch.sh +++ b/tg-patch.sh @@ -35,7 +35,7 @@ done [ -n "$name" -a -z "$diff_committed_only" ] && die "-i/-w are mutually exclusive with NAME" -[ -n "$name" ] || name="$(git symbolic-ref HEAD | sed 's#^refs/\(heads\|top-bases\)/##')" +[ -n "$name" ] || name="$(current_branch)" base_rev="$(git rev-parse --short --verify "refs/top-bases/$name" 2>/dev/null)" || die "not a TopGit-controlled branch" diff --git a/tg-summary.sh b/tg-summary.sh index 50ee883..62b499e 100644 --- a/tg-summary.sh +++ b/tg-summary.sh @@ -22,7 +22,7 @@ while [ -n "$1" ]; do esac done -curname="$(git symbolic-ref HEAD | sed 's#^refs/\(heads\|top-bases\)/##')" +curname="$(current_branch)" ! [ -n "$terse" -a -n "$graphviz" ] || die "-t and --graphviz options are mutual exclusive" diff --git a/tg-update.sh b/tg-update.sh index 288ec14..0cff0ac 100644 --- a/tg-update.sh +++ b/tg-update.sh @@ -14,7 +14,7 @@ if [ -n "$1" ]; then fi -name="$(git symbolic-ref HEAD | sed 's#^refs/\(heads\|top-bases\)/##')" +name="$(current_branch)" base_rev="$(git rev-parse --short --verify "refs/top-bases/$name" 2>/dev/null)" || die "not a TopGit-controlled branch" diff --git a/tg.sh b/tg.sh index 43d1c9f..232a8b7 100644 --- a/tg.sh +++ b/tg.sh @@ -18,6 +18,11 @@ die() exit 1 } +current_branch() +{ + echo "$(git symbolic-ref HEAD | sed -e 's#^refs/heads/##' -e 's#^refs/top-bases/##')" +} + # cat_file "topic:file" # Like `git cat-file blob $1`, but topics '(i)' and '(w)' means index and worktree cat_file() -- 1.6.2.185.g8b635.dirty -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html