#!/bin/sh
-clean=
-case "$1" in
---clean)
- branch=`git symbolic-ref HEAD` &&
- test refs/heads/master = "$branch" || {
- echo >&2 Not on master
+clean= next=next
+while case $# in 0) break ;; esac
+do
+ case "$1" in
+ --clean)
+ branch=`git symbolic-ref HEAD` &&
+ test refs/heads/master = "$branch" || {
+ echo >&2 Not on master
+ exit 1
+ }
+ clean=t
+ ;;
+ --next)
+ test 2 -le $# || {
+ echo >&2 "Need argument"
+ exit 1
+ }
+ next="$2"
+ git rev-parse --verify "$next" >/dev/null || exit
+ shift
+ ;;
+ *)
+ echo >&2 "$0 [--clean | --next test-next ]"
exit 1
- }
- clean=t
+ ;;
+ esac
shift
- ;;
-esac
+done
LF='
'
rebase= done= not_done= trouble=
# (1)
- only_next_1=`git-rev-list ^master "^$topic" next | sort`
- only_next_2=`git-rev-list ^master next | sort`
+ only_next_1=`git-rev-list ^master "^$topic" ${next} | sort`
+ only_next_2=`git-rev-list ^master ${next} | sort`
if test "$only_next_1" = "$only_next_2"
then
not_in_topic=`git-rev-list "^$topic" master`
# (3)
not_in_next=`
- git-rev-list --pretty=oneline ^next "$topic" |
+ git-rev-list --pretty=oneline ^${next} "$topic" |
sed -e 's/^[0-9a-f]* / - /'
`
if test -n "$not_in_next"
then
trouble="${LF}### MODIFIED AFTER COOKED ###"
fi
- not_done="${LF}Still not merged in next$rebase.$LF$not_in_next"
+ not_done="${LF}Still not merged in ${next}$rebase.$LF$not_in_next"
elif test -n "$done"
then
not_done=
by Bruce Fields ongoing and things are looking better.
+UI
+--
+
+* Make "git branch -d foo" while on foo branch suggest "maybe
+ you want to go back to 'master'?"
+
+* Error message from "git checkout -b bar v2.6.10" should assume
+ v2.6.10 is an attempt to switch to a new branch based on
+ mistyped tag, not an attempt to revert path v2.6.10 from the
+ HEAD commit with extra "make and switch to this branch"
+ argument.
+
+* "git commit [-i|-o] paths..." with misspelled paths would be
+ silently ignored. Add a flag to ls-files to catch unmatched
+ pathspec to prevent this.
+
+
Design issues
-------------