X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=topgit.git;a=blobdiff_plain;f=tg-patch.sh;h=97338ab63ef77f52eb876c77ca50b669c458f333;hp=ac8a744432a40b5c6a3f367eb21079a4c691cdb1;hb=f8bf6e55c2ea49ac0b3299a30034f349f1776ea2;hpb=737a9fa9de0ca7610457c2b4ed514b650668beda diff --git a/tg-patch.sh b/tg-patch.sh index ac8a744..97338ab 100644 --- a/tg-patch.sh +++ b/tg-patch.sh @@ -12,7 +12,7 @@ while [ -n "$1" ]; do arg="$1"; shift case "$arg" in -*) - echo "Usage: tg patch [NAME]" >&2 + echo "Usage: tg [...] patch [NAME]" >&2 exit 1;; *) [ -z "$name" ] || die "name already specified ($name)" @@ -20,7 +20,7 @@ while [ -n "$1" ]; do esac done -[ -n "$name" ] || name="$(git symbolic-ref HEAD | sed 's#^refs/heads/##')" +[ -n "$name" ] || name="$(git symbolic-ref HEAD | sed 's#^refs/\(heads\|top-bases\)/##')" base_rev="$(git rev-parse --short --verify "refs/top-bases/$name" 2>/dev/null)" || die "not a TopGit-controlled branch" @@ -29,7 +29,7 @@ echo [ -n "$(git grep '^[-]--' "$name" -- ".topmsg")" ] || echo '---' # Evil obnoxious hack to work around the lack of git diff --exclude -git_is_stupid="$(mktemp)" +git_is_stupid="$(mktemp -t tg-patch-changes.XXXXXX)" git diff-tree --name-only "$base_rev" "$name" | fgrep -vx ".topdeps" | fgrep -vx ".topmsg" >"$git_is_stupid" || : # fgrep likes to fail randomly? @@ -41,6 +41,6 @@ fi rm "$git_is_stupid" echo '-- ' -echo "tg: ($base_rev..) $name (depends on $(git cat-file blob "$name:.topdeps" | paste -s -d ,))" +echo "tg: ($base_rev..) $name (depends on: $(git cat-file blob "$name:.topdeps" | paste -s -d' '))" branch_contains "$name" "$base_rev" || - echo "tg: The patch is out-of-date wrt. the base! Run \`tg update\`." + echo "tg: The patch is out-of-date wrt. the base! Run \`$tg update\`."