X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=debian%2Ftg2quilt.mk;h=f4ca0dbf3078a36d467a2779a3d3b91ff4f0af1e;hb=86d0708a06440824ccf0a73afa1828ff6ee89d46;hp=66e9d4123ac0ab758c334ebea0e64819f387b308;hpb=58b53a7ee85c43d59017a5eacfe559369436bfa9;p=topgit.git diff --git a/debian/tg2quilt.mk b/debian/tg2quilt.mk index 66e9d41..f4ca0db 100644 --- a/debian/tg2quilt.mk +++ b/debian/tg2quilt.mk @@ -31,7 +31,9 @@ # target, and invokes tg-rmdir # # tg-rmdir: tries to remove debian/patches, but only if there are no -# non-TopGit files under the directory. +# non-TopGit files under the directory, the repository has +# no uncommitted changes, and there are not quilt patches +# applied. # The heuristic is to find files that do not contain a line # matchines /^tg:/, minus the series file. If any such files # are found, an error occurs. Otherwise, the directory is @@ -75,6 +77,9 @@ ifdef PATCHES_DIR QUILT_PATCH_DIR := $(PATCHES_DIR) endif +QUILT_PATCH_DIR ?= debian/patches +QUILT_STAMPFN ?= patch + # Hook tg-export into quilt's make(1) snippet such that it gets executed # before quilt patches or unpatches. $(QUILT_STAMPFN): tg-export @@ -117,12 +122,25 @@ else tg-rmdir: __TG_FILES := $(shell find $(QUILT_PATCH_DIR) -type f -a -not -path \*/series \ | xargs grep -l '^tg:') tg-rmdir: + QUILT_PATCHES=$(QUILT_PATCH_DIR) quilt pop -a + @if quilt applied >/dev/null 2>&1; then \ + echo "E: there are applied quilt patches." >&2; \ + echo "E: please unapply (pop) all patches and try again." >&2; \ + false; \ + fi + @if git status -am. >/dev/null; then \ + echo "E: there are uncommitted changes in the working directory." >&2; \ + echo "E: please commit or revert all changes." >&2; \ + false; \ + fi # remove all files whose contents matches /^tg:/ - test -n "$(__TG_FILES)" && rm $(__TG_FILES) || : - # remove the series file - test -f $(QUILT_PATCH_DIR)/series && rm $(QUILT_PATCH_DIR)/series || : + rm -f $(__TG_FILES) + # remove the series file + rm -f $(QUILT_PATCH_DIR)/series + # remove dpkg v3 file + rm -f $(QUILT_PATCH_DIR)/.dpkg-source-applied # try to remove directories - find $(QUILT_PATCH_DIR) -type d | tac | xargs rmdir 2>/dev/null || : + find $(QUILT_PATCH_DIR) -depth -type d -empty -execdir rmdir {} + # fail if the directory could not be removed and still exists @test ! -d $(QUILT_PATCH_DIR) || { \ echo "E: $(QUILT_PATCH_DIR) contains non-TopGit-generated files:" >&2; \ @@ -143,7 +161,7 @@ tg-cleanexport: tg-rmdir endif -.PHONY: tg-clean tg-export tg-forceclean tg-rmdir +.PHONY: tg-clean tg-export tg-forceclean tg-rmdir tg-cleanexport # vim:ft=make:ts=8:noet # -*- Makefile -*-, you silly Emacs! (shamelessly stolen from quilt)