X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=tg.sh;h=1bc886aaee7bbcd2444e8950769b2b8932a7bbc3;hb=10ee8496b64f56b4a8bd32632ecd3dc4f66c2140;hp=905fccf4e0fa0e5753d95d3cc477434d7f85f53c;hpb=734f191e0f805ae9087b2ec81a941192a0e01bae;p=topgit.git diff --git a/tg.sh b/tg.sh index 905fccf..1bc886a 100644 --- a/tg.sh +++ b/tg.sh @@ -47,8 +47,8 @@ setup_ours() { if [ ! -s "$git_dir/info/attributes" ] || ! grep -q topmsg "$git_dir/info/attributes"; then { - echo -e ".topmsg\tmerge=ours" - echo -e ".topdeps\tmerge=ours" + echo ".topmsg merge=ours" + echo ".topdeps merge=ours" } >>"$git_dir/info/attributes" fi if ! git config merge.ours.driver >/dev/null; then @@ -60,11 +60,11 @@ setup_ours() # measure_branch NAME [BASE] measure_branch() { - _name="$1"; _base="$2" - [ -n "$_base" ] || _base="refs/top-bases/$_name" + _bname="$1"; _base="$2" + [ -n "$_base" ] || _base="refs/top-bases/$_bname" # The caller should've verified $name is valid - _commits="$(git rev-list "$_name" ^"$_base" | wc -l)" - _nmcommits="$(git rev-list --no-merges "$_name" ^"$_base" | wc -l)" + _commits="$(git rev-list "$_bname" ^"$_base" | wc -l)" + _nmcommits="$(git rev-list --no-merges "$_bname" ^"$_base" | wc -l)" if [ $_commits -gt 1 ]; then _suffix="commits" else @@ -95,8 +95,8 @@ recurse_deps() _cmd="$1"; shift _name="$1"; # no shift _depchain="$*" - depsfile="$(mktemp)" - git cat-file blob "$_name:.topdeps" >"$depsfile" + _depsfile="$(mktemp -t tg-depsfile.XXXXXX)" + git cat-file blob "$_name:.topdeps" >"$_depsfile" _ret=0 while read _dep; do if ! git rev-parse --verify "$_dep" >/dev/null 2>&1; then @@ -111,13 +111,13 @@ recurse_deps() # Shoo shoo, keep our environment alone! [ -z "$_dep_is_tgish" ] || - (needs_update "$_cmd" "$_dep" "$@") || + (recurse_deps "$_cmd" "$_dep" "$@") || _ret=$? eval "$_cmd" - done <"$depsfile" + done <"$_depsfile" missing_deps="${missing_deps# }" - rm "$depsfile" + rm "$_depsfile" return $_ret } @@ -139,7 +139,7 @@ branch_needs_update() # _dep needs to be synced with its base echo ": $_dep $_depchain" _ret=1 - elif ! branch_contains "refs/top-bases/$1" "$_dep"; then + elif [ -n "$_name" ] && ! branch_contains "refs/top-bases/$_name" "$_dep"; then # Some new commits in _dep echo "$_dep $_depchain" _ret=1 @@ -195,7 +195,7 @@ do_help() sep="|" done - echo "TopGit v0.1 - A different patch queue manager" + echo "TopGit v0.2 - A different patch queue manager" echo "Usage: tg ($cmds|help) ..." elif [ -r "@sharedir@/tg-$1.txt" ] ; then cat "@sharedir@/tg-$1.txt"