chiark / gitweb /
dgit.git
4 years agoRename various *make_commit* to *hash_commit*
Ian Jackson [Fri, 28 Jun 2019 23:22:01 +0000 (00:22 +0100)]
Rename various *make_commit* to *hash_commit*

This avoids a subroutine name clash with make_commit in gdr.

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agoDgit.pm: Move read-tree wrappers from git-debrebase
Ian Jackson [Fri, 28 Jun 2019 23:11:49 +0000 (00:11 +0100)]
Dgit.pm: Move read-tree wrappers from git-debrebase

No functional change other than to no longer honour @git.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agoDgit.pm: Move resolve_upstream_version from git-debrebase
Ian Jackson [Fri, 28 Jun 2019 16:30:55 +0000 (17:30 +0100)]
Dgit.pm: Move resolve_upstream_version from git-debrebase

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agoDgit.pm: Move upstream_commitish_search from git-debrebase
Ian Jackson [Fri, 28 Jun 2019 16:29:02 +0000 (17:29 +0100)]
Dgit.pm: Move upstream_commitish_search from git-debrebase

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodocs: Document --split-view and change terminology
Ian Jackson [Fri, 28 Jun 2019 15:48:37 +0000 (16:48 +0100)]
docs: Document --split-view and change terminology

We now speak in the docs of
  * splitting quilt mode(s)
  * split view (being) in operation

Closes: #926640
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agotest suite: new test forcesplit-linear
Ian Jackson [Tue, 18 Jun 2019 19:23:01 +0000 (20:23 +0100)]
test suite: new test forcesplit-linear

Test split view with non-splitting quilt mode.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agotest suite: forcesplit-overwrite: Test with bare --overwrite
Ian Jackson [Tue, 18 Jun 2019 18:45:15 +0000 (19:45 +0100)]
test suite: forcesplit-overwrite: Test with bare --overwrite

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agotest suite: forcesplit-overwrite: Test without --overwrite
Ian Jackson [Tue, 18 Jun 2019 18:44:15 +0000 (19:44 +0100)]
test suite: forcesplit-overwrite: Test without --overwrite

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agotest suite: forcesplit-overwrite: Break out "try"
Ian Jackson [Tue, 18 Jun 2019 18:41:42 +0000 (19:41 +0100)]
test suite: forcesplit-overwrite: Break out "try"

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agotest suite: forcesplit-overwrite: Check -pushed-good
Ian Jackson [Tue, 18 Jun 2019 17:58:05 +0000 (18:58 +0100)]
test suite: forcesplit-overwrite: Check -pushed-good

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agotest suite; New test forcesplit-overwrite
Ian Jackson [Sat, 15 Jun 2019 10:22:25 +0000 (11:22 +0100)]
test suite; New test forcesplit-overwrite

Still needs:
 * checking that we didn't move HEAD
 * checking HEAD tree is equal

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Reject split view with correct message
Ian Jackson [Sat, 15 Jun 2019 10:49:33 +0000 (11:49 +0100)]
dgit: Reject split view with correct message

Now, it is not just a splitting quilt mode which might cause this, but
also an explicit request for split view.

This has some duplicated text, which I understand is easier for
translators.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Support split view in non-splitting quilt modes
Ian Jackson [Sat, 15 Jun 2019 10:49:17 +0000 (11:49 +0100)]
dgit: Support split view in non-splitting quilt modes

Provide --split-view|brain=auto|always|never and the corresponding
access cfg option .split-view.

This is not documented or tested yet.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: In code, rename splitbrain quilt modes to splitting
Ian Jackson [Fri, 28 Jun 2019 14:17:53 +0000 (15:17 +0100)]
dgit: In code, rename splitbrain quilt modes to splitting

A "splitting" quilt mode is going to be one which requires split brain
mode.  But split brain mode is going to be possible in other quilt
modes too.

The existing name of the splitbrain quilt cache is correct: it is used
precisely for quilt fixup, in split brain modes (even for non
splitting quilt modes, now).  In split brain mode without quilt, it is
not needed or used.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Reject dgit pull in split brain mode
Ian Jackson [Fri, 28 Jun 2019 14:13:52 +0000 (15:13 +0100)]
dgit: Reject dgit pull in split brain mode

In splitting quilt modes dgit pull would have to back-convert the
changes and currently there is no code to do this, and these cases
were correctly rejected before.

But in other quilt modes it would still have to strip off pseudomerges
or quilt fixup commits.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Move determine_whether_split_brain further up the file
Ian Jackson [Fri, 28 Jun 2019 14:13:17 +0000 (15:13 +0100)]
dgit: Move determine_whether_split_brain further up the file

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Break out determine_whether_split_brain
Ian Jackson [Fri, 28 Jun 2019 14:10:19 +0000 (15:10 +0100)]
dgit: Break out determine_whether_split_brain

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Crash if we forgot to set $do_split_brain
Ian Jackson [Fri, 28 Jun 2019 14:09:13 +0000 (15:09 +0100)]
dgit: Crash if we forgot to set $do_split_brain

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Put !! inside do_split_brain()
Ian Jackson [Fri, 28 Jun 2019 14:06:36 +0000 (15:06 +0100)]
dgit: Put !! inside do_split_brain()

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Introduce do_split_brain()
Ian Jackson [Fri, 28 Jun 2019 14:04:42 +0000 (15:04 +0100)]
dgit: Introduce do_split_brain()

No functional change yet.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit(1): Tidying up after tag format: Drop splitbrain conditional
Ian Jackson [Fri, 28 Jun 2019 13:42:19 +0000 (14:42 +0100)]
dgit(1): Tidying up after tag format: Drop splitbrain conditional

Now, debiantags is always just debiantag_new plus
debiantag_maintview.  So we can drop this complexity.

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Tidying up after tag format: Drop debiantag
Ian Jackson [Fri, 28 Jun 2019 13:24:37 +0000 (14:24 +0100)]
dgit: Tidying up after tag format: Drop debiantag

Remove the now-superfluous level of indirection.

No functional change.

At some future point we may rename debiantag_new to debiantag
everywhere, but not right now.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agoDgit.pm: Tidying up after tag format: Drop debiantag_old
Ian Jackson [Fri, 28 Jun 2019 13:22:29 +0000 (14:22 +0100)]
Dgit.pm: Tidying up after tag format: Drop debiantag_old

The one remaining call site was in debiantags, where
debiantag_maintview is (also) correct.

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit(1): Tidying up after tag format: Drop qualifications
Ian Jackson [Fri, 28 Jun 2019 13:36:14 +0000 (14:36 +0100)]
dgit(1): Tidying up after tag format: Drop qualifications

All servers are now assumed to cope with split view tags.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit(1): Correct --always-dep14tag
Ian Jackson [Fri, 28 Jun 2019 13:35:21 +0000 (14:35 +0100)]
dgit(1): Correct --always-dep14tag

This was documented as --always-dep14tag but dgit only accepts
--dep14tag-always.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Tidying up after tag format: Collapse $dodep14tag test
Ian Jackson [Fri, 28 Jun 2019 13:20:30 +0000 (14:20 +0100)]
dgit: Tidying up after tag format: Collapse $dodep14tag test

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agoinfra: Drop support for old tag name on server side
Ian Jackson [Fri, 28 Jun 2019 13:19:25 +0000 (14:19 +0100)]
infra: Drop support for old tag name on server side

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Introduce $protovsn 5; part of tidying up after tag format
Ian Jackson [Fri, 28 Jun 2019 11:56:55 +0000 (12:56 +0100)]
dgit: Introduce $protovsn 5; part of tidying up after tag format

This drops the tagformat param; the semantics are as if `new'
were specified.  Eventually, when we can drop support for
$protovsn 4, all traces of this parameter can then be gone.

No overall functional change.
No immediate compatibility implications.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Drop $protovsn < 4; part of tidying up after tag format
Ian Jackson [Fri, 28 Jun 2019 11:09:20 +0000 (12:09 +0100)]
dgit: Drop $protovsn < 4; part of tidying up after tag format

This drops support for rpush where our peer is older than dgit 2.0.
(This does not include the dgit in any Debian release.)

No nontrivial functional change, since we already rejected older dgits
due to them implying the old tag format.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Tidying up after tag format: drop ..._can_splitbrain
Ian Jackson [Fri, 28 Jun 2019 11:06:39 +0000 (12:06 +0100)]
dgit: Tidying up after tag format: drop ..._can_splitbrain

Substitute this fixed value into its call sites.  No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Drop support for old tag format
Ian Jackson [Thu, 27 Jun 2019 19:29:27 +0000 (20:29 +0100)]
dgit: Drop support for old tag format

access_cfg_tagformats_can_splitbrain always returns true now.  We'll
delete it in a moment.

We now insist on protocol version 4 because older ones imply the old
tag format.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: tag format: Add missing $protovsn comment re tagformat param
Ian Jackson [Fri, 28 Jun 2019 11:53:50 +0000 (12:53 +0100)]
dgit: tag format: Add missing $protovsn comment re tagformat param

No fuctional change.  We are going to get rid of this in a moment, but
this change makes clearer what is going on.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agotest suite: Drop all testing of old tag formats, and compatibility
Ian Jackson [Thu, 27 Jun 2019 18:57:12 +0000 (19:57 +0100)]
test suite: Drop all testing of old tag formats, and compatibility

This is quite old now.  We are dropping support for it.

The new tags came in in dgit 2.0 in October 2016.  No version of dgit
without them was in any Debian release.  We don't expect there are any
sites using old servers which do not support the new format, or anyone
using a dgit client older than 2.x who cannot upgrade.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agotest suite: break out t-splitbrain-rm-1-patch
Ian Jackson [Thu, 27 Jun 2019 18:33:13 +0000 (19:33 +0100)]
test suite: break out t-splitbrain-rm-1-patch

We are going to call this from one of the force split tests.

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agotest suite: t-{unapplied,dpm}-pushed-good: set $suite
Ian Jackson [Sat, 22 Jun 2019 23:04:25 +0000 (00:04 +0100)]
test suite: t-{unapplied,dpm}-pushed-good: set $suite

t-pushed-good-core wants suite to be set.  Rather than having it
implicit, make it an argument.  Fix the two call sites where suite was
not trivially `sid'.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Do split brain cache and saving in build_maybe_quilt_fixup
Ian Jackson [Tue, 18 Jun 2019 19:28:15 +0000 (20:28 +0100)]
dgit: Do split brain cache and saving in build_maybe_quilt_fixup

This wants to happy whenever we have a split brain, not only in
splitting multipatch modes.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Fix --dgit-view-save option
Ian Jackson [Tue, 18 Jun 2019 19:11:03 +0000 (20:11 +0100)]
dgit: Fix --dgit-view-save option

This was supposed to be an alias for --save-dgit-view but didn't work
because || forced scalar context.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: quiltify: Go back to dgit-view if appropriate
Ian Jackson [Tue, 18 Jun 2019 19:06:40 +0000 (20:06 +0100)]
dgit: quiltify: Go back to dgit-view if appropriate

Going back to master is fine with a unified view, but we are going to
want to cope with a split view here.

No functional change since $do_split_brain is not ever set here, yet.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Move git chedckout master out of quiltify
Ian Jackson [Tue, 18 Jun 2019 19:02:30 +0000 (20:02 +0100)]
dgit: Move git chedckout master out of quiltify

This is closer to where it is going to be used, and a bit less
confusing.

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: When propagating pseudomerge error, strip leading \n
Ian Jackson [Sat, 15 Jun 2019 15:13:14 +0000 (16:13 +0100)]
dgit: When propagating pseudomerge error, strip leading \n

fail adds an initial \n to provide a blank line separating the error
message from previous output.  We want to strip any such thing away
again.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Split out default_from_access_cfg
Ian Jackson [Sat, 15 Jun 2019 10:23:47 +0000 (11:23 +0100)]
dgit: Split out default_from_access_cfg

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: clean mode: Correctly reject bad modes from config
Ian Jackson [Sat, 15 Jun 2019 10:23:01 +0000 (11:23 +0100)]
dgit: clean mode: Correctly reject bad modes from config

Add the missing ^ and $ (which do not appear in $cleanmode_re).

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: split brain reorg: Slight internal error check improvements
Ian Jackson [Thu, 6 Jun 2019 15:33:10 +0000 (16:33 +0100)]
dgit: split brain reorg: Slight internal error check improvements

Move the $made_split_brain and $do_split_brain checks outside various
conditionals.  And change a die to a confess.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: split brain reorg: Rename $made_split_brain
Ian Jackson [Thu, 6 Jun 2019 15:28:57 +0000 (16:28 +0100)]
dgit: split brain reorg: Rename $made_split_brain

This variable is not technnically necessary any more.  But tracking
this means if we introduce bugs which mean that we didn't do the split
brain work, we will get much saner misbehaviour: a crash.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: split brain reorg: Check $split_brain against $do_split_brain
Ian Jackson [Thu, 6 Jun 2019 15:23:43 +0000 (16:23 +0100)]
dgit: split brain reorg: Check $split_brain against $do_split_brain

I think by now, $do_split_brain is always set early enough that
$split_brain here implies $do_split_brain.  And if $split_brain were
not set but $do_split_brain was, that would mean we hadn't actually
done the necessary work (constructing the and switching to the
dgit-view branch in the playtree or computing $dgithead).

Double check this with a couple of calls to confess.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: split brain reorg: debug print quilt mode in XXX
Ian Jackson [Thu, 6 Jun 2019 14:22:03 +0000 (15:22 +0100)]
dgit: split brain reorg: debug print quilt mode in XXX

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Fix check for --include-dirty --quilt=<splitting>
Ian Jackson [Thu, 6 Jun 2019 14:02:05 +0000 (15:02 +0100)]
dgit: Fix check for --include-dirty --quilt=<splitting>

This needs to know whether we are actually in split brain mode.
build_or_push_prep_modes has just determined the answer, so put it
there.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: split brain reorg: Move do_split_brain setting
Ian Jackson [Thu, 6 Jun 2019 14:01:48 +0000 (15:01 +0100)]
dgit: split brain reorg: Move do_split_brain setting

We have to introduce a new "time", build_or_push_prep_modes, which is
the point at which we know we have a working tree, and know the quilt
mode, and know we are pushing or building.

There is one call to build_or_push_prep_modes near every call to
build_or_push_prep_early - after pushing/notpushing (which also means
after parseopts_late_defaults).

There is one nontrivial functional difference: Now we use the format
from the working tree, rather than from the .dsc.  But these ought to
be identical in any sane situation.  If they are not then the user has
done something very strange.  The quilt fixup machinery may go wrong,
but we should detect a problem later, during the dpkg-source -x check,
so nothing wrong will be pushed anywhere.

Otherwise no overall functional change other than to debug output.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Add a comment about a bug we are about to eliminate.
Ian Jackson [Thu, 6 Jun 2019 13:53:17 +0000 (14:53 +0100)]
dgit: Add a comment about a bug we are about to eliminate.

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: split brain reorg: Move some split brain code further out.
Ian Jackson [Thu, 6 Jun 2019 12:54:48 +0000 (13:54 +0100)]
dgit: split brain reorg: Move some split brain code further out.

We are going to want this in other quilt modes.  Logically, it should
occur in build_maybe_quilt_fixup.  Specifically, move:
 * the quilt cache check
 * the splitting of the dgit-view branch and setting $split_brain
out of quilt_fixup_multipatch.  quilt_fixup_multipatch now gets
$upstreamversion as a parameter.

Right now this logic in build_maybe_quilt_fixup is a bit flabby and
confusing.  We hope to tidy it up a bit later.

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: split brain reorg: Change an internal error die to confess
Ian Jackson [Thu, 6 Jun 2019 11:54:33 +0000 (12:54 +0100)]
dgit: split brain reorg: Change an internal error die to confess

No functional change in non-error cases.  This was wrong before.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Reject split brain quilt modes with single-debian-patch
Ian Jackson [Fri, 31 May 2019 19:36:37 +0000 (20:36 +0100)]
dgit: Reject split brain quilt modes with single-debian-patch

Right now, this malfunctions in dgit: we do not do the split brain
stuff.  And most of these combinations do not appear to make very much
sense.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: split brain reorg: Check quilt cache iff $do_split_brain (2)
Ian Jackson [Fri, 31 May 2019 19:17:16 +0000 (20:17 +0100)]
dgit: split brain reorg: Check quilt cache iff $do_split_brain (2)

When $do_split_brain becomes set when !quiltmode_splitbrain(), we want
to check the cache even in the non split brain case.

Change the quilt fixup, just before generating a new multipatch
conversion.

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: split brain reorg: Check quilt cache iff $do_split_brain (1)
Ian Jackson [Fri, 31 May 2019 19:13:46 +0000 (20:13 +0100)]
dgit: split brain reorg: Check quilt cache iff $do_split_brain (1)

When $do_split_brain becomes set when !quiltmode_splitbrain(), we want
to check the cache even in the non split brain case.

Change in dopush, where we check the cache.

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Write down quilt mode split brain plans in a comment
Ian Jackson [Fri, 31 May 2019 19:11:01 +0000 (20:11 +0100)]
dgit: Write down quilt mode split brain plans in a comment

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Move quilt_need_fake_dsc into the places that require it
Ian Jackson [Fri, 31 May 2019 17:43:39 +0000 (18:43 +0100)]
dgit: Move quilt_need_fake_dsc into the places that require it

No overall functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: gdr linear quilt fixup: Do it in a playtree
Ian Jackson [Mon, 20 May 2019 22:38:24 +0000 (23:38 +0100)]
dgit: gdr linear quilt fixup: Do it in a playtree

It will work there, since this operation does not need any of the
magic gdr refs.  And this means that it will DTRT in split brain mode,
when we enable that.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: quilt_need_fake_dsc: Make idempotent
Ian Jackson [Sun, 26 May 2019 11:48:59 +0000 (12:48 +0100)]
dgit: quilt_need_fake_dsc: Make idempotent

No overall functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: unpack_playtree_need_cd_work: Make idempotent
Ian Jackson [Sun, 26 May 2019 11:31:11 +0000 (12:31 +0100)]
dgit: unpack_playtree_need_cd_work: Make idempotent

This won't be able to recover from a truly-messed-up "work" but this
is good enough not to have to explicitly arrange for each place that
uses it to know whether it has been done already.

Checking in the filesystem is OK because mktree_in_ud_here calls
playtree_setup which expects the playground to have been set up
already - ie, all our callers have called prep_ud already.
Add a comment about this requirement.

No overall functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: rename unpack_playtree_mk_cd_work (from _mkwork)
Ian Jackson [Sun, 26 May 2019 10:26:07 +0000 (11:26 +0100)]
dgit: rename unpack_playtree_mk_cd_work (from _mkwork)

This makes the effect on cwd less confusing.

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: quilt fixup: Move split brain branch creation out a bit
Ian Jackson [Mon, 20 May 2019 22:52:00 +0000 (23:52 +0100)]
dgit: quilt fixup: Move split brain branch creation out a bit

Move the playtree git branch, and the setting $split_brain from
quiltify_splitbrain (inside quilt_fixup_multipatch, conditional on
quiltmode_splitbrain) to quilt_fixup_multipatch.

This is still not quite right - it needs to be further out, because it
should affect quilt_fixup_singlepatch too.  Right now singlepatch DTWT
in split brain mode.

No functional change for now, anyway.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: dopush pseudomerge, break apart from quilt fixup
Ian Jackson [Tue, 21 May 2019 12:39:44 +0000 (13:39 +0100)]
dgit: dopush pseudomerge, break apart from quilt fixup

In the future, we are going to have split brain in situations without
any quilt fixup.  We will use $do_split_brain for this.

In that situation, do the splitbrain pseudomerge too.

No actual functional change yet.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Separate out build_check_quilt_splitbrain
Ian Jackson [Mon, 20 May 2019 22:02:25 +0000 (23:02 +0100)]
dgit: Separate out build_check_quilt_splitbrain

The only effect of this is to move the tag format check from before
the main work of build_maybe_quilt_fixup to later, and to not check it
at all for `dgit quilt-fixup'.

We don't really care about this any more; this tag format stuff is
obsolete and we will delete it at some point...

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Move quiltify_splitbrain_needed into its one call site
Ian Jackson [Mon, 20 May 2019 20:55:06 +0000 (21:55 +0100)]
dgit: Move quiltify_splitbrain_needed into its one call site

I think $split_brain is always 0 on entry.  It is this
quiltify_splitbrain which used to calculate whether actually splitting
brain was needed based on the quilt mode and the state of the tree.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: split brain reorg: Always _needed in split brain quilt modss
Ian Jackson [Mon, 20 May 2019 20:43:41 +0000 (21:43 +0100)]
dgit: split brain reorg: Always _needed in split brain quilt modss

The only differences are:

1. Call quiltify_splitbrain_needed earlier.  This is of no
consequence.

2. Call it even dpm mode when .gitignore was not edited.  This is
actually somewhat more correct.  In dpm mode we are very likely later
going to need split brain to keep the pseudomerge of the dgit view
off the maintainer branch.

And in fact that is what will happen because dopush fetches the quilt
view from the cache and that sets $split_brain unconditionally.  With
the current code structure dgit's quilt fixup imagines that it can do
a quilt fixup for dpm mode without split brain, when the .gitignore is
not edited.  But actually what is happening is that this is an empty
tree fixup, and the history inclusion *will* be done split brain, but
later.

So overall this change will have no actual overall effect.  But it is
a move towards helping untangle the quilt mode from split brain.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: Drop "dgit view: changes are required..." message
Ian Jackson [Mon, 20 May 2019 20:53:05 +0000 (21:53 +0100)]
dgit: Drop "dgit view: changes are required..." message

We are going to stop caring whether any changes are required, so we
will no longer have this information to report.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agotest suite: rpush-quilt: New test to check rpush with splitting buster
Ian Jackson [Fri, 28 Jun 2019 11:34:33 +0000 (12:34 +0100)]
test suite: rpush-quilt: New test to check rpush with splitting

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agodgit: rpush: Work in splitting quilt modes, again
Ian Jackson [Fri, 28 Jun 2019 11:32:18 +0000 (12:32 +0100)]
dgit: rpush: Work in splitting quilt modes, again

The failure case is missing the obviously-necessary check that the
protocol version is, indeed, insufficient!

This was broken in
  045ec681a42fd823280cdec86a177309ddd741f0
  Split tags: Genrate maintainer-view tag too
which was first uploaded as part of dgit 2.0.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agochangelog: start 8.6
Ian Jackson [Sun, 26 May 2019 23:24:20 +0000 (00:24 +0100)]
changelog: start 8.6

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agochangelog: finalise 8.5 archive/debian/8.5 debian/8.5
Ian Jackson [Sun, 26 May 2019 23:21:23 +0000 (00:21 +0100)]
changelog: finalise 8.5

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agochangelog: Document the 8.5 bugfix.
Ian Jackson [Sun, 26 May 2019 22:38:48 +0000 (23:38 +0100)]
changelog: Document the 8.5 bugfix.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
4 years agoReplace `confess $!' with `confess "$!"', to actually print errno
Ian Jackson [Sun, 26 May 2019 09:50:23 +0000 (10:50 +0100)]
Replace `confess $!' with `confess "$!"', to actually print errno

  $ perl -e 'use Carp; open X, ">/dev/eacces" or die $!'
  Permission denied at -e line 1.
  $ perl -e 'use Carp; open X, ">/dev/eacces" or confess $!'
   at -e line 1.
  $ perl -e 'use Carp; open X, ">/dev/eacces" or confess "$!"'
  Permission denied at -e line 1.
  $

confess will get references to its arguments in @_.  Its documentation
says it saves/restores $!.  I conjecture that these interact as we see
here:
  $ perl -e '$!=1; sub x { print ">@_<\n"; }  x $!;'
  >Operation not permitted<
  $ perl -e '$!=1; sub x { local $!; print ">@_<\n"; }  x $!;'
  ><

Quoting "$!" averts the reference (and it will also ensure that we
get the string value of $!, in case confess were to do anything in the
future which would mess that up).

This commit was made like this:

  perl -i -pe 's/confess \$!/confess "\$!"/g' dgit
  perl -i -pe 's/confess \$!/confess "\$!"/g' git-debrebase
  perl -i -pe 's/confess \$!/confess "\$!"/g' Debian/Dgit.pm

I have manually reviewed each hunk and it all looks good to me.

Closes: #929549
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agochangelog: start 8.5~
Ian Jackson [Fri, 1 Mar 2019 22:53:07 +0000 (22:53 +0000)]
changelog: start 8.5~

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agochangelog: finalise 8.4 archive/debian/8.4 debian/8.4
Ian Jackson [Fri, 1 Mar 2019 21:53:48 +0000 (21:53 +0000)]
changelog: finalise 8.4

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agoi18n-commit - autogenerated
Ian Jackson [Fri, 1 Mar 2019 21:54:07 +0000 (21:54 +0000)]
i18n-commit - autogenerated

5 years agochangelog: Reformat and clarify etc.
Ian Jackson [Fri, 1 Mar 2019 21:24:29 +0000 (21:24 +0000)]
changelog: Reformat and clarify etc.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agochangelog: More from gbp-dch
Ian Jackson [Fri, 1 Mar 2019 20:49:02 +0000 (20:49 +0000)]
changelog: More from gbp-dch

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agogit-debrebase: convert-*: Fix two broken error messages
Ian Jackson [Fri, 1 Mar 2019 18:36:50 +0000 (18:36 +0000)]
git-debrebase: convert-*: Fix two broken error messages

If you failed to specify the upstream version, some of the messages
would still attempt to report what you specified, causing a crash.

Closes: #922462
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agogit-debrebase: resolve_upstream_version: Return $used too
Ian Jackson [Fri, 1 Mar 2019 18:19:06 +0000 (18:19 +0000)]
git-debrebase: resolve_upstream_version: Return $used too

Update both callers but right now they just throw the information
away.  So no overall functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agodgit: Do not misrecognise some initial packaging as gdr-processable
Ian Jackson [Fri, 1 Mar 2019 18:01:18 +0000 (18:01 +0000)]
dgit: Do not misrecognise some initial packaging as gdr-processable

git-debrebase expects a breakwater start commit to not make any
changes to upstream files.  This means that sometimes dgit would fail
to make this check, and expect gdr to be able to make patches; but
then gdr would reject the branch.

It is still of course possible for dgit to ask gdr to make patches for
branches that the user does not *intend* to be handled by gdr, but
that is OK so long as gdr will DTRT.

Closes: #922446
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agoi18n: nl: unfuzz the translations again
Ian Jackson [Fri, 1 Mar 2019 17:02:28 +0000 (17:02 +0000)]
i18n: nl: unfuzz the translations again

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agoi18n-commit - autogenerated
Ian Jackson [Fri, 1 Mar 2019 16:59:14 +0000 (16:59 +0000)]
i18n-commit - autogenerated

5 years agodgit.1: Write the leading dash of an option as '\-'
Bjarni Ingi Gislason [Fri, 1 Mar 2019 16:55:34 +0000 (16:55 +0000)]
dgit.1: Write the leading dash of an option as '\-'

Closes: #921965
5 years agochangelog: document translation
Ian Jackson [Fri, 1 Mar 2019 16:30:59 +0000 (16:30 +0000)]
changelog: document translation

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agoMerge branch 'wip.i18n-nl' into master
Ian Jackson [Fri, 1 Mar 2019 20:33:37 +0000 (20:33 +0000)]
Merge branch 'wip.i18n-nl' into master

Conflicts:
po/nl.po

5 years agodgit: New relative path handling: debugging output
Ian Jackson [Fri, 1 Mar 2019 17:42:55 +0000 (17:42 +0000)]
dgit: New relative path handling: debugging output

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agochangelog: changes on master so far
Ian Jackson [Fri, 1 Mar 2019 15:33:27 +0000 (15:33 +0000)]
changelog: changes on master so far

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agodgit: Fix another tiny typo in an error message
Ian Jackson [Thu, 31 Jan 2019 18:52:42 +0000 (18:52 +0000)]
dgit: Fix another tiny typo in an error message

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agoi18n: unfuzz some of the Dutch translations
Ian Jackson [Thu, 31 Jan 2019 18:47:29 +0000 (18:47 +0000)]
i18n: unfuzz some of the Dutch translations

I can't do these all, but I can do these.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agochangelog: Document typo fixes.
Ian Jackson [Thu, 31 Jan 2019 18:35:56 +0000 (18:35 +0000)]
changelog: Document typo fixes.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agodocumentation style: Two hunks of my personal preference
Ian Jackson [Fri, 11 Jan 2019 21:45:11 +0000 (21:45 +0000)]
documentation style: Two hunks of my personal preference

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agodocumentation style: Do not put "" around C<..>
Ian Jackson [Fri, 11 Jan 2019 21:46:17 +0000 (21:46 +0000)]
documentation style: Do not put "" around C<..>

In the default text manpage rendering, C produces a pair of quotes and
the result is   ""..""   which is not desirable.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agodocumentation style: "branch" may be another kind ref
Ian Jackson [Fri, 11 Jan 2019 21:42:21 +0000 (21:42 +0000)]
documentation style: "branch" may be another kind ref

The thing being referred to here is `branch', not `the branch', since
it may not be a branch.  Put it in italics to make it clear that what
is referred to is the metasyntactic variable.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agodocumentation style: No "if ... ; consequence".
Ian Jackson [Fri, 11 Jan 2019 21:41:32 +0000 (21:41 +0000)]
documentation style: No "if ... ; consequence".

I think the parts of an if and its consequence may not be separated by
a semicolon.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agodocumentation style: there is no "the restricted command"
Ian Jackson [Fri, 11 Jan 2019 21:37:22 +0000 (21:37 +0000)]
documentation style: there is no "the restricted command"

I see "ssh restricted command" as a feature.  There is no command
provided; alternatively one could argue that the user is to provide a
script, which they will configure as the restricted command, in which
case "to make writing the ssh restricted command
script|implementation" or something, but that seems wordy.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agodocumentation style: "appropriate configuration" as a mass noun
Ian Jackson [Fri, 11 Jan 2019 21:37:13 +0000 (21:37 +0000)]
documentation style: "appropriate configuration" as a mass noun

This is correct IMO.  dput has, of course, multiple configuration
files, and one might use a wrapper or something, or perhaps (unisely)
dgit command line options.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agodocumentation: typo suggestions from Paul Hardy
Paul Hardy [Thu, 10 Jan 2019 06:35:39 +0000 (22:35 -0800)]
documentation: typo suggestions from Paul Hardy

Signed-off-by: Paul Hardy <unifoundry@gmail.com>
5 years agodgit: import-dsc: New test for abs/rel dsc component links
Ian Jackson [Sun, 13 Jan 2019 18:36:18 +0000 (18:36 +0000)]
dgit: import-dsc: New test for abs/rel dsc component links

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
5 years agodgit: import-dsc: Handle relative symlinks correctly
Ian Jackson [Sun, 13 Jan 2019 18:35:53 +0000 (18:35 +0000)]
dgit: import-dsc: Handle relative symlinks correctly

The logic here was correct only with bpd = `..'.

Closes: #913259
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
squash!! dgit: import-dsc: Handle relative symlinks correctly

5 years agoi18n: nl: updated Dutch po file
Frans Spiesschaert [Fri, 1 Mar 2019 15:40:55 +0000 (15:40 +0000)]
i18n: nl: updated Dutch po file

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>