diff options
author | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2019-01-06 02:15:31 +0000 |
---|---|---|
committer | Ian Jackson <ijackson@chiark.greenend.org.uk> | 2019-01-06 13:36:45 +0000 |
commit | 9453958d76cb530bbc0af1802cfeaadd26e19c6c (patch) | |
tree | b7f833b525b903e4490aa6ea572ca136d0b9be30 | |
parent | dc9df4ad8714bab9656d932854ef5631b46c124e (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-x | dgit | 6 | ||||
-rw-r--r-- | tests/lib-build-modes | 2 |
2 files changed, 3 insertions, 5 deletions
@@ -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 |