Hi, On Sun, 1 Mar 2009, Junio C Hamano wrote: > 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" && > ... Or even current=$ONTO fd=3 while read command sha1 rest do case "$fd,$command,$current" in 3,pick,"$sha1"*|t,p,"$sha1"*) current=$sha1 ;; *) fd=1 ;; esac echo "$command $sha1 $rest" >&$fd done < "$TODO" > "$TODO.new" 3>> "$DONE" && mv "$TODO.new" "$TODO" Hmm? Ciao, Dscho -- 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