| Commit message (Collapse) | Author | Age |
|
|
|
| |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
| |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Big comment explains.
Amongst other things:
* Introduce the mergeinfo concept
* Abolish fetchspec in favour of lrfetchref
* Synthesize a pseudo-merge linking the archive's .dsc with the dgit
server's git branch, as appropriate.
* Introduce mergeinfo_version.
I have tried to ensure that where the import done by previous versions
of dgit would be correct, the new import is the same.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
| |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We introduce a new `maint' possibility in to the dgit-tag-format
access cfg list, presence of which indicates that the receiver is
content to receive DEP-14-style maintainer-view (ie, non-dgit0 tags.
For now, we default this to true. However, repos handled by
dgit-repos-server cannot currently cope with this, because:
* dgit-repos-server currently tries to be compatible with old
dgits which send DEP-14-named dgit tags;
* dgit-repos-server doesn't currently permit the creation of
`extraneous' (ie, non-dgit) tags and branches.
So for Debian, we do not set this flag.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
push_tagwants gets a new argument, $maintviewhead, which is defined
iff the quilt mode means we want split tags. It then specifies the
generation of both tags.
push_mktags gains the ability to make the new `maint' view tag (and
checks that the view is not something else unexpected).
Introduce a function debiantag_maintview for calculating the
maintainer's idea of the tag. Currently we use DEP-14 encoding (and
this function is a clone-and-hack of Dgit.pm::debiantag_old, but
perhaps we should do something more complicated (depending on the
quilt mode).
For now we do not push the maint view tag anywhere. The ability to do
that, where appropriate, will come in a moment.
This commit introduces protocol version 4, which includes the new
`maint-view' param. When have a split brain quilt mode, we need to be
sure that we're using protocol version 4 or out peer may not honour
this, resulting in an annoying failure later (the responder sending a
different number of tags to the number expected).
We also have to check that we're using the new tag format (or we might
want to try to generate two different tags with the same name, which
is madness).
When the quilt mode is not a split brain one, this whole commit should
produce no overall functional change (even though a higher protocol
version may be negotiated).
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We are going to have different branches at once. Rename some
variables to permit this distinction.
We have $actualhead (whatever HEAD is), $dgithead (the dgit view), and
$maintviewhead (the maintainer's view if different, or undef if not0.
Change the existing references. Also change one reference to HEAD to
$dgithead: when we update the local tracking ref for the dgit view, we
need to use $dgitview.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We are going to want to generate two tags. The current code structure
is not really set up for this. Also the knowledge of what tags are
being made needs to be used both in dopush and in the push responder.
So:
* Introduce push_tagwants, which calculates which tags we are going
to be making, including some details of them.
* `View' indicates which tag this is. For now there is only one,
`dgit'. But the tags are going to be in a defined order - or,
at least, the `dgit' tag will come first.
* Have push_parse_changelog no longer return the single tag name,
and abolish the corresponding $i_tag varaiable.
* push_mktag bcomes push_mktags and takes much of its instruction
from @$tagwants.
* push_mktags does more than just making tags - it also updates
the dsc, and does some checks, so it needs to fish the relevant
object id out of the dgit view tag.
* $mktag in push_tagwants can now operate on a tagwant, and
the tag-making part of push_mktags just iterates over the tagwants.
* The filename plumbing in dopush is somewhat generalised: we
collect the filenames out of push_mtags or responder_receive_files,
and then substitute them into the tagwants.
* The tag checking iterates over the tagwants.
* The push spec computation iterates over the tagwants.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
|
|
|
|
| |
No major functional change.
However, we do preserve the previous override value, so that
need_tagformat's caller is happy, we still override the access
configuration.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
| |
No functional change.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
| |
No functional change.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
push_mktag is going to want to become push_mktags, and make perhaps
two tags.
For now, break the actual tag-making out into a subref. Rename the
arguments to push_mktag to ensure we caught all the references in
$mktag.
push_mktag now wants to return an array; make sure that the call sites
all give it array context.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
|
| |
Send the tag format as a param and check that it is the same at both
ends. This check _ought_ not ever to fail, but I want to be sure.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
| |
No functional change.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
| |
When automatically generating quilt patch, honour GIT_COMMITTER_DATE
for filename creation (makes filename deterministic in test suite).
|
|
|
|
|
|
|
|
|
|
|
|
| |
Introduce machinery for deciding what format tag to make, during push.
The computation is slightly ad-hoc.
Currently it always returns `old' and does as before, so no overall
functional change with existing configs and existing command lines.
Reserve protocol version 4 for new tag support.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
| |
We are going to want to know about all of these.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We are going to change the tag name of the main signed tag used by
dgit to signal the user's intent to the archive server.
Prepare for this by changing debiantag to debiantag_old and changing
all call sites outside dgit itself.
dgit will want to be able to generate either, depending on whether
it's cooperating in an rpush with a new or old dgit so reintroduce a
wrapper called debiantag there. This will also allow us to have dgit
generate old tags for testing.
No functional change.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
|
| |
progress, supplementary-message, previously, and param csuite, were
all missing. Document them.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
| |
We now do set $split_brain, and we don't do anythig with the cached
dgit view, so we'll crash at the die, in a moment.
|
|
|
|
| |
When it finds multiple subdirs, print them.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When system(3perl) fails due to syscall error, it sets only $!. When
it succeeds it sets only $? and sometimes trashes $!. Conversely,
close of a popened filehandle always sets both in all cases.
Document this in a comment.
So when using system and relying on $?/$! (rather than looking at
system's return value), such as when about to use failedcmd, it's
necessary to initialise $? to -1.
Fix the three call sites where system might be followed by failedcmd
but this wasn't done.
|
|
|
|
|
| |
If the remote command failed, do not try to match the undef value
against the various regexps.
|
|
|
|
|
| |
failecmd wants to look at $? too and anyway the full command is not of
much interest in these cases.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Look only at dgit and Debian/Dgit.
The prompt for this is that some of our submodules seem to dynamically
load some of their components depending on what dgit does, making the
cache key unstable.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
reset from printing a confusing message about HEAD.
|
|
|
|
|
|
| |
Otherwise the cache entry's .dsc contains the hash of a fake
debian.tar.gz which has had a timestamp put in it by gzip, defeating
the cache.
|
| |
|
|
|
|
| |
Not documented yet.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Everywhere we invoke dpkg-buildpackage, check if we need to apply the
patches. And at the end of every command that might have done this,
check if we did, and unapply them if so.
We don't try to unapply patches in case of error. That seems likely
to be quite fragile.
Print a warning when we apply patches, suggesting ways to avoid the
need.
|
| |
|
|
|
|
|
| |
We use runcmd shell_cmd for gbp pq import, and the other commands not
produce undesirable output.
|
| |
|
|
|
|
| |
This can make a radical difference!
|
|
|
|
|
|
|
| |
Do the quiltify_splitbrain_needed if there _are_ patches, not if there
aren't. And if we're told it was an unapplied tree, check that HEAD
and orig are indeed the same (excluding debian/*, of course) and print
a useful message if not.
|
| |
|
|
|
|
|
| |
And, after the source build is done, copy the resulting files out into
the invocation directory's parent, where people expect to find them.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
* Move the fast forward die to where we will need to make the
synthetic commit, so that the tree equality check is done on the
thing we will actually push.
* Crash if we are trying to do split brain without split build.
(This should never happen.)
* Set split build if we need split brain.
|
|
|
|
|
| |
This variable name was very confusing. Also, add a comment explaining
the semantics.
|
| |
|
| |
|