summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Jackson <ijackson@chiark.greenend.org.uk>2019-01-06 02:15:31 +0000
committerIan Jackson <ijackson@chiark.greenend.org.uk>2019-01-06 13:36:45 +0000
commit9453958d76cb530bbc0af1802cfeaadd26e19c6c (patch)
treeb7f833b525b903e4490aa6ea572ca136d0b9be30
parentdc9df4ad8714bab9656d932854ef5631b46c124e (diff)
dgit: clean: Do check the tree even when building in playtree
If we might be doing quilt fixup, then the quilt fixup's attempt to merge back into master might fail if there are uncommitted debian/patches. So it is sometimes wrong to just not clean at all. We don't want the behaviour to depend on the source package format, and ideally not on the clean mode. Also, the user may have forgotten to `git add', in which case they will thank us for spotting their mistake. In the original design table in https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=910705#56 says this for this case /: disregarded would be fine to delete but ** better to trip ? ** ** want opt to disregard ** but this was not implemented at the time. So implement that now. I think I have concluded that with -wg and -wgf the right way to turn these new failures into successes is to have a way to have the clean actually done. If that is not wanted, one can say -wn instead. This is particularly true given that ignoring the problem can produce confusing failure, as seen in #914317. So there will be a new --clean=git[-ff],always shortly. Closes: #914317 Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
-rwxr-xr-xdgit6
-rw-r--r--tests/lib-build-modes2
2 files changed, 3 insertions, 5 deletions
diff --git a/dgit b/dgit
index 55c8070..22441d7 100755
--- a/dgit
+++ b/dgit
@@ -6238,7 +6238,6 @@ END
}
sub clean_tree_check () {
- # Not yet fully implemented.
# This function needs to not care about modified but tracked files.
# That was done by check_not_dirty, and by now we may have run
# the rules clean target which might modify tracked files (!)
@@ -6249,9 +6248,8 @@ sub clean_tree_check () {
clean_tree_check_git_wd __
"tree contains uncommitted files (NB dgit didn't run rules clean)";
} elsif ($cleanmode =~ m{^git}) {
- # If we were actually cleaning these files would be summarily
- # deleted. Since we're not, and not using the working tree
- # anyway, we can just ignore them - nothing will use them.
+ clean_tree_check_git_wd __
+ "tree contains uncommitted files";
} elsif ($cleanmode eq 'none') {
} else {
confess "$cleanmode ?";
diff --git a/tests/lib-build-modes b/tests/lib-build-modes
index bc8b2aa..8c05af6 100644
--- a/tests/lib-build-modes
+++ b/tests/lib-build-modes
@@ -160,7 +160,7 @@ bm-compute-expected () {
;;
none|Cnone) ;;
Cdpkg-source*) ;; # handled below
- Cgit|Cgit-ff) ;;
+ Cgit|Cgit-ff) echo >&4 'BUILD-MODES PROGRAM git clean -dn' ;;
*) fail "t-compute-expected-run $cleanmode ??" ;;
esac