diff options
-rw-r--r-- | quilt.changes | 7 | ||||
-rw-r--r-- | quilt/remove.in | 112 |
2 files changed, 119 insertions, 0 deletions
diff --git a/quilt.changes b/quilt.changes index dc30d80..5227620 100644 --- a/quilt.changes +++ b/quilt.changes @@ -1,4 +1,11 @@ ------------------------------------------------------------------- +Thu Sep 17 22:11:54 CEST 2009 - agruen@suse.de + +- Restore the "remove" command which a few people were missing + since its replacement by "revert" in April 2007. (Patch from + Pedro Alves.) + +------------------------------------------------------------------- Wed Sep 9 14:59:10 CEST 2009 - agruen@suse.de - French translation update from from diff --git a/quilt/remove.in b/quilt/remove.in new file mode 100644 index 0000000..a11db0a --- /dev/null +++ b/quilt/remove.in @@ -0,0 +1,112 @@ +#! @BASH@ + +# This script is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# See the COPYING and AUTHORS files for more details. + +# Read in library functions +if [ "$(type -t patch_file_name)" != function ] +then + if ! [ -r $QUILT_DIR/scripts/patchfns ] + then + echo "Cannot read library $QUILT_DIR/scripts/patchfns" >&2 + exit 1 + fi + . $QUILT_DIR/scripts/patchfns +fi + +usage() +{ + printf $"Usage: quilt remove [-P patch] {file} ...\n" + if [ x$1 = x-h ] + then + printf $" +Remove one or more files from the topmost or named patch. Files that +are modified by patches on top of the specified patch cannot be removed. + +-P patch + Remove named files from the named patch. +" + exit 0 + else + exit 1 + fi +} + +options=`getopt -o P:h -- "$@"` + +if [ $? -ne 0 ] +then + usage +fi + +eval set -- "$options" + +while true +do + case "$1" in + -P) + opt_patch="$2" + shift 2 ;; + -h) + usage -h ;; + --) + shift + break ;; + esac +done + +if [ $# -lt 1 ] +then + usage +fi + +patch=$(find_applied_patch "$opt_patch") || exit 1 + +status=0 +for file in $* +do + if ! file_in_patch $SUBDIR$file $patch + then + printf $"File %s is not in patch %s\n" \ + "$SUBDIR$file" "$(print_patch $patch)" >&2 + status=1 + continue + fi + + next_patch=$(next_patch_for_file $patch $SUBDIR$file) + if [ -n "$next_patch" ] + then + printf $"File %s modified by patch %s\n" \ + "$SUBDIR$file" "$(print_patch $next_patch)" + status=1 + continue + fi + + # Restore file from backup + if ! $QUILT_LIB/backup-files -r -t -s -B $QUILT_PC/$patch/ $SUBDIR$file + then + printf $"Failed to remove file %s from patch %s\n" \ + "$SUBDIR$file" "$(print_patch $patch)" >&2 + status=1 + continue + fi + + if [ -e $(dirname $QUILT_PC/$patch~refresh) -a \ + -e $(patch_file_name $patch) ] + then + # The patch must be refreshed in order to get rid of the + # patch permanently. + touch $QUILT_PC/$patch~refresh + fi + + printf $"File %s removed from patch %s\n" \ + "$SUBDIR$file" "$(print_patch $patch)" +done +exit $status +### Local Variables: +### mode: shell-script +### End: +# vim:filetype=sh |