On Wednesday 16 September 2009 02:30:52, Steven Rostedt wrote:
> I just updated my Debian distribution to find that quilt remove is no
> longer available. This is quite annoying. I see there is a quilt revert
> which is nice and useful, but it is by far no means a replacement for
> quilt remove.
> 

> Please, do not replace a valuable operation with something that is not
> equivalent.

100% agreed!  To work around this, I've been using quilt git + the
patch below, which blindly restores back the removed command from an
earlier revision.  (I don't remember if I had to do any tweaks to
adjust it to recent changes though).

I've love to have this feature restored properly.

-- 
Pedro Alves
---
 quilt/remove.in |  112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 112 insertions(+)

Index: quilt/quilt/remove.in
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ quilt/quilt/remove.in	2009-06-24 00:40:43.000000000 +0100
@@ -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
_______________________________________________
Quilt-dev mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/quilt-dev

Reply via email to