Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes: > diff --git a/git-rebase--interactive.sh b/git-rebase--interactive.sh > index 3dc659d..a9617a2 100755 > --- a/git-rebase--interactive.sh > +++ b/git-rebase--interactive.sh > @@ -442,6 +442,27 @@ do_rest () { > done > } > > +# skip picking commits whose parents are unchanged > +skip_unnecessary_picks () { > + current=$ONTO > + i=0 > + while read command sha1 rest > + do > + test pick = "$command" && > + test $current = "$(git rev-parse $sha1^)" || > + break > + current=$(git rev-parse $sha1) > + i=$(($i+1)) > + done < "$TODO" > + test $i = 0 || { > + sed -e "${i}q" < "$TODO" >> "$DONE" && > + sed -e "1,${i}d" < "$TODO" >> "$TODO".new && > + mv -f "$TODO".new "$TODO" && > + ONTO=$current || > + die "Could not skip $i pick commands" > + } > +} I do not think you have to count and then run two sed. this=$ONTO skip_pick=t while read command sha1 rest do sha1=$(git rev-parse "$sha1") case "$skip_pick,$command" in t,pick | t,p) if test "$this" = "$sha1" then echo >&3 "$command $sha1 $rest" this="$sha1" continue fi esac skip_pick=f echo "$command $sha1 $rest" done <"$TODO" >"$TODO.new" 3>>"$DONE" && ... -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html