X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=git-rebase--interactive.sh;h=a64d9d57ab5943ac4e065866ce0ccd7de5364a9a;hb=7d3580d74c6d801419dd91416f9a81750b7d4e2c;hp=c2bedd622c7238359ab88592857bb50eeaa568f8;hpb=d2c425aa2bb8543ea08ca44b04ffacc972a7ad61;p=git.git diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh index c2bedd622..a64d9d57a 100755 --- a/git-rebase--interactive.sh +++ b/git-rebase--interactive.sh @@ -56,9 +56,9 @@ output () { require_clean_work_tree () { # test if working tree is dirty git rev-parse --verify HEAD > /dev/null && - git update-index --refresh && - git diff-files --quiet && - git diff-index --cached --quiet HEAD -- || + git update-index --ignore-submodules --refresh && + git diff-files --quiet --ignore-submodules && + git diff-index --cached --quiet HEAD --ignore-submodules -- || die "Working tree is dirty" } @@ -78,8 +78,8 @@ mark_action_done () { sed -e 1q < "$TODO" >> "$DONE" sed -e 1d < "$TODO" >> "$TODO".new mv -f "$TODO".new "$TODO" - count=$(($(grep -ve '^$' -e '^#' < "$DONE" | wc -l))) - total=$(($count+$(grep -ve '^$' -e '^#' < "$TODO" | wc -l))) + count=$(grep -c '^[^#]' < "$DONE") + total=$(($count+$(grep -c '^[^#]' < "$TODO"))) if test "$last_count" != "$count" then last_count=$count @@ -110,7 +110,7 @@ die_abort () { } has_action () { - grep -vqe '^$' -e '^#' "$1" + grep '^[^#]' "$1" >/dev/null } pick_one () { @@ -218,7 +218,7 @@ nth_string () { make_squash_message () { if test -f "$SQUASH_MSG"; then COUNT=$(($(sed -n "s/^# This is [^0-9]*\([1-9][0-9]*\).*/\1/p" \ - < "$SQUASH_MSG" | tail -n 1)+1)) + < "$SQUASH_MSG" | sed -ne '$p')+1)) echo "# This is a combination of $COUNT commits." sed -e 1d -e '2,/^./{ /^$/d @@ -377,11 +377,12 @@ do # Sanity check git rev-parse --verify HEAD >/dev/null || die "Cannot read HEAD" - git update-index --refresh && git diff-files --quiet || + git update-index --ignore-submodules --refresh && + git diff-files --quiet --ignore-submodules || die "Working tree is dirty" # do we have anything to commit? - if git diff-index --cached --quiet HEAD -- + if git diff-index --cached --quiet --ignore-submodules HEAD -- then : Nothing to commit -- skip this else @@ -474,6 +475,9 @@ do require_clean_work_tree + UPSTREAM=$(git rev-parse --verify "$1") || die "Invalid base" + test -z "$ONTO" && ONTO=$UPSTREAM + if test ! -z "$2" then output git show-ref --verify --quiet "refs/heads/$2" || @@ -483,12 +487,8 @@ do fi HEAD=$(git rev-parse --verify HEAD) || die "No HEAD?" - UPSTREAM=$(git rev-parse --verify "$1") || die "Invalid base" - mkdir "$DOTEST" || die "Could not create temporary $DOTEST" - test -z "$ONTO" && ONTO=$UPSTREAM - : > "$DOTEST"/interactive || die "Could not mark as interactive" git symbolic-ref HEAD > "$DOTEST"/head-name 2> /dev/null || echo "detached HEAD" > "$DOTEST"/head-name @@ -530,9 +530,9 @@ do # Rebase $SHORTUPSTREAM..$SHORTHEAD onto $SHORTONTO # # Commands: -# pick = use commit -# edit = use commit, but stop for amending -# squash = use commit, but meld into previous commit +# p, pick = use commit +# e, edit = use commit, but stop for amending +# s, squash = use commit, but meld into previous commit # # If you remove a line here THAT COMMIT WILL BE LOST. # However, if you remove everything, the rebase will be aborted.