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=04023c05234d938d10acfb112a77554e7c0425f8;hb=200b39c0f80396f1f7f66c8b33f6adf87ff6edf4;hpb=885731a8fc792c41c05c9bbdf7aa90ddec16be77 diff --git a/tg-patch.sh b/tg-patch.sh index 04023c0..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? @@ -43,4 +43,4 @@ rm "$git_is_stupid" echo '-- ' 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\`."