Index: bash_completion =================================================================== RCS file: /cvsroot/quilt/quilt/bash_completion,v retrieving revision 1.19 diff -u -r1.19 bash_completion --- bash_completion 26 Aug 2005 10:20:48 -0000 1.19 +++ bash_completion 11 Sep 2005 01:58:28 -0000 @@ -132,8 +132,15 @@ esac ;; annotate) - _quilt_comfile - COMPREPLY=( address@hidden:-} $( compgen -W "-h" -- $cur ) ) + case $prev in + -p) + COMPREPLY=( $( compgen -W "$(quilt applied)" -- $cur ) ) + ;; + *) + _quilt_comfile + COMPREPLY=( address@hidden:-} $( compgen -W "-p -h" -- $cur ) ) + ;; + esac ;; applied) COMPREPLY=( $( compgen -W "-h $(quilt applied)" -- $cur ) ) Index: quilt/annotate.in =================================================================== RCS file: /cvsroot/quilt/quilt/quilt/annotate.in,v retrieving revision 1.5 diff -u -r1.5 annotate.in --- quilt/annotate.in 18 Jul 2005 10:18:13 -0000 1.5 +++ quilt/annotate.in 11 Sep 2005 01:58:29 -0000 @@ -19,12 +19,15 @@ usage() { - printf $"Usage: quilt annotate {file}\n" + printf $"Usage: quilt [-p patch] annotate {file}\n" if [ x$1 = x-h ] then printf $" Print an annotated listing of the specified file showing which -patches modify which lines. +patches modify which lines. Only applied patches are included. + +-p Stop checking for changes at the specified rather than the + topmost patch. " exit 0 else @@ -89,7 +92,7 @@ exec 4<&- } -options=`getopt -o h -- "$@"` +options=`getopt -o p:h -- "$@"` if [ $? -ne 0 ] then @@ -101,6 +104,13 @@ while true do case "$1" in + -p) + if ! opt_patch=$(find_patch $2) + then + printf $"Patch %s is not in series\n" "$2" >&2 + exit 1 + fi + shift 2 ;; -h) usage -h ;; --) @@ -115,12 +125,24 @@ fi opt_file="$SUBDIR$1" -for patch in $(cat_series); do +for patch in $(applied_patches); do if [ -f "$(backup_file_name $patch "$opt_file")" ] then address@hidden"$patch" fi + if [ "$opt_patch" = $patch ] + then + # We also need to know the next patch, if any + next_patch="$(next_patch_for_file "$opt_patch" "$opt_file")" + break + fi done +if [ -z "$next_patch" ] +then + last_file="$opt_file" +else + last_file="$(backup_file_name $next_patch "$opt_file")" +fi if [ address@hidden = 0 ] then @@ -148,11 +170,13 @@ empty_file ${patches[0]} "$opt_file" > $template for ((n = 0; n < address@hidden; n++)) do - annotation_for "${patches[$n]}" "${patches[$((n+1))]}" "$opt_file" \ + annotation_for "${patches[$n]}" \ + "${patches[$((n+1))]:-$next_patch}" \ + "$opt_file" \ $((n+1)) done \ | @PATCH@ $template -merge_files $template "$opt_file" +merge_files $template "$last_file" echo for ((n = 0; n < address@hidden; n++)) Index: test/annotate.test =================================================================== RCS file: /cvsroot/quilt/quilt/test/annotate.test,v retrieving revision 1.3 diff -u -r1.3 annotate.test --- test/annotate.test 9 Sep 2005 18:27:51 -0000 1.3 +++ test/annotate.test 11 Sep 2005 01:58:29 -0000 @@ -62,6 +62,29 @@ > 2 patches/patch2 > 3 patches/patch3 + $ quilt annotate -p patch3 foo + > foo + > 2 baz + > + > 1 patches/patch + > 2 patches/patch2 + > 3 patches/patch3 + + $ quilt annotate -p patch2 foo + > foo + > 1 Bar + > 2 baz + > + > 1 patches/patch + > 2 patches/patch2 + + $ quilt annotate -p patch foo + > foo + > 1 Bar + > 1 Baz + > + > 1 patches/patch + $ quilt new patch4 > Patch patches/patch4 is now on top