Skip to content

Commit

Permalink
rebase --merge: fix for rebasing more than 7 commits.
Browse files Browse the repository at this point in the history
Instead of using 4-digit numbers to name commits being rebased,
just use "cmt.$msgnum" string, with $msgnum as a decimal number
without leading zero padding.  This makes it possible to rebase
more than 9999 commits, but of more practical importance is that
the earlier code used "printf" to format already formatted
$msgnum and barfed when it counted up to 0008.  In other words,
the old code was incapable of rebasing more than 7 commits, and
this fixes that problem.

Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Junio C Hamano committed Jun 22, 2006
1 parent 693c15d commit 5887ac8
Showing 1 changed file with 10 additions and 13 deletions.
23 changes: 10 additions & 13 deletions git-rebase.sh
Original file line number Diff line number Diff line change
Expand Up @@ -67,16 +67,16 @@ continue_merge () {
prev_head=`git-rev-parse HEAD^0`

# save the resulting commit so we can read-tree on it later
echo "$prev_head" > "$dotest/`printf %0${prec}d $msgnum`.result"
echo "$prev_head" > "$dotest/cmt.$msgnum.result"
echo "$prev_head" > "$dotest/prev_head"

# onto the next patch:
msgnum=$(($msgnum + 1))
printf "%0${prec}d" "$msgnum" > "$dotest/msgnum"
echo "$msgnum" >"$dotest/msgnum"
}

call_merge () {
cmt="$(cat $dotest/`printf %0${prec}d $1`)"
cmt="$(cat $dotest/cmt.$1)"
echo "$cmt" > "$dotest/current"
git-merge-$strategy "$cmt^" -- HEAD "$cmt"
rv=$?
Expand Down Expand Up @@ -108,15 +108,12 @@ finish_rb_merge () {
end="`cat $dotest/end`"
while test "$msgnum" -le "$end"
do
msgnum=`printf "%0${prec}d" "$msgnum"`
printf "%0${prec}d" "$msgnum" > "$dotest/msgnum"

git-read-tree `cat "$dotest/$msgnum.result"`
git-read-tree `cat "$dotest/cmt.$msgnum.result"`
git-checkout-index -q -f -u -a
git-commit -C "`cat $dotest/$msgnum`"
git-commit -C "`cat $dotest/cmt.$msgnum`"

echo "Committed $msgnum"
echo ' '`git-rev-list --pretty=oneline -1 HEAD | \
printf "Committed %0${prec}d" $msgnum
echo ' '`git-rev-list --pretty=oneline -1 HEAD | \
sed 's/^[a-f0-9]\+ //'`
msgnum=$(($msgnum + 1))
done
Expand Down Expand Up @@ -322,11 +319,11 @@ for cmt in `git-rev-list --no-merges "$upstream"..ORIG_HEAD \
| perl -e 'print reverse <>'`
do
msgnum=$(($msgnum + 1))
echo "$cmt" > "$dotest/`printf "%0${prec}d" $msgnum`"
echo "$cmt" > "$dotest/cmt.$msgnum"
done

printf "%0${prec}d" 1 > "$dotest/msgnum"
printf "%0${prec}d" "$msgnum" > "$dotest/end"
echo 1 >"$dotest/msgnum"
echo $msgnum >"$dotest/end"

end=$msgnum
msgnum=1
Expand Down

0 comments on commit 5887ac8

Please sign in to comment.