| Commit message (Collapse) | Author | Age |
|
|
|
|
|
|
| |
This avoids duplicating this rune (so the manpage can't get out of
date).
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
| |
Quite ugly due to #868527. Closes:#868526.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
|
| |
curl prints to stdout, as the rune expects.
Reported-by: Simon Tatham
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
|
| |
This involves creating a new "gitish-only" branch in the example
worktree.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|\ |
|
| |
| |
| |
| | |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Specifically, do dgit push --dry-run. This will check that the source
package and git tree agree - ie, that what we have produced can
round-trip through dpkg-source.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| | |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Experimentally, dpkg-source on stretch will create patches to create
new symlinks. (It will fail on attempts to modify existing symlinks
and it ignores attempts to change plain file executability.)
Implementation: add an alternative which tolerates the git symlink
mode. This replaces the check on $oldmode, which in this context we
know is all 0s and can therefore never match.
While we're here, change the error message.
Closes:#857382.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We don't care what the old mode was; if we tell dpkg-source to record
the deletion it can do so.
But we do care that it was a file. Experimentally, dpkg-source on
stretch ignores attempts to delete symlinks.
The removal of the check for $newmode has no functional change,
because in this context we know that $newmode is all 0s. If it
wasn't, we would have been in "both old and new files exist", above.
So that limb of the test will never match and should be removed.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| |
| | |
Specifically,
git-gc --aggressive --prune=all
This shrinks it quite a lot.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
But still insist on date, and hence on the actual committer and author
commit header fields. Peter Green reports that eg 66c65d90db100435 in
upstream linux.git is such a commit (and is accepted by github).
Closes:#863353.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| | |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| | |
This is really helpful when debugging.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
In most cases we could carry on and fail later. But creating a broken
symlink is undesirable, particularly because it might prevent dgit
from trying to make a non-broken symlink pointing elsewhere in future
(or prevent dget from downloading the file).
Even worse, if the dsc is in .. but an absolute path was provided, we
would make a circular symlink!
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Close examination of this code path reveals that:
* The error is generated only if $there contains no slash.
* This can only occur if $dscfn matches the first regexp,
ie $dscfn is [./]../X in which case $there becomes X
* So in this situation, $there is simply the dsc filename
which is supposed to be in ..
* What we should be testing is ../$f but that is $here
which is what are trying to create and which we statted
earlier and got ENOENT for.
So this occurs when the dsc is in .. and a file it refers to is
missing.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Provide a special error message if lstat succeeds but lstat fails.
This is not hypothetical - currently even dgit import ../blah.dsc can
generate this situation !
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |\
| | |
| | |
| | | |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| | |
| | |
| | |
| | | |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|\| |
| | |
| | |
| | | |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* Do not specified patch names which look like series filenames
* When we invent a filename based on a commit message, add ".patch".
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Without this option, git-diff-tree might detect a rename (or possibly
even a copy). If it does it prints a different output format with a
status of C or R *and a separate filename*. The latter is an
additional nul-terminated record and would get dgit's interpreter of
the git diff-tree output out of step.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |/
| |
| |
| | |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
There does not in fact seem to have been any code which implements
this line from dgit(7):
If a specified subsuite starts with - then mainsuite is prepended.
The code which canonicalises it back to the version with ",-" does
work, though.
Closes:#867189.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| |
| | |
This might be necessary if setup_mergechangelogs were disabled.
(This is something of a latent bug, since `git init' creates
.git/info.)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| | |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| | |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is slightly subtle.
We need $rmonerror in cmd_clone to be cleared. cmd_clone does that
only when clone itself returns. The multisuite plumbing means that
currently, clone returns only in the child which set up the tree and
set up the first suite. Unsetting $rmonerror there is correct because
we want to keep the tree on success, and the parent will remove it if
there is a later failure. (Ie, the child remains responsible for
removing the tree if it itself fails.)
In the parent, we get $multi_fetched==1 if not only our original clone
child succeeded, but all the other fetches worked too. We are now
responsible for the tree. If our final tasks are successful, again,
we need not to delete the tree.
Closes:#867434.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Closes:#867603.
In principle it might be nicer to copy more options. But we don't
want to duplicate the logic in prep_ud in dgit, and we don't want to
make this script too standalone. I'm not aware of other options that
are important, rather than nice-to-have tuneables.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
These share the user's object store and we should manipulate the
object store the way the user wants. In particular,
core.sharedRepository is important.
Prompted by #867603, which is the same bug in dgit-badcommit-fixup.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| | |
Closes:#857694.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Ie, work around #867702. See the bug there for discussion.
(We are perhaps flying a little close to the wind with our wrapper
script location, but it doesn't seem likely to break, to me.)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
For each operation which can meaningfully be run outside a git tree,
arrange to call no_local_git_cfg and thus avoid running
git config --local
There is one slight infelicity: some subcommands (notably
archive-api-query) could in theory be run within a git tree and expect
that git tree to influence their output. However, this seems
unlikely. In fact, I think there are probably only in-tree callers
and the in-tree callers do not do this.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The only thing in between pre_... and cmd_... os git_slurp_config.
The code now in pre_... does the following things, all of these should
be done before git_slurp_config:
* Sets some global variables affecting debugging and logging output.
If git_slurp_config is told to print debugging, it should be
affected by these changes.
* Rearranges its file descriptors so that stdin/stdout are as the
rest of dgit expects, and the protocol is on PI/PO. If
git_slurp_config were to use stdin/stdout, it ought to use the
"normal" versions, and not access the protocol streams.
* Checks and calculates the negotiated protocol version. This is not
affected by the config, only by the arguments form the caller and
our own idea of the protocol versions we support.
* Changes to the appropriate working tree. Doing this before
slurping the config arranges to honour the local git config from
build host working tree. (It also avoids rpush failing on newer
git due to asking for git config --local in the wrong place.)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| | |
buster's git rejects ext:: by default. See #XXXX and
man git-config |less +/'protocol.*allow'
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
We achieve this by passing -L to curl.
We also pass an appropriate-seeming --proto-redir, because the curl
manual is not entirely reassuring that following redirections with the
default configuration is safe.
This finally fixes #867185/#867309. What happens there is that curl
gets a redirect, along with an HTML error document. curl then exits
with status zero, effectively pretending that the error document is
the resource which was requested. dgit notices that something is
wrong because the file does not have the expected cryptographic
checksum.
I suspect that there are other download problems which would give a
similar effect. Sadly the curl manpage doesn't seem to suggest a way
to avoid this. At least, dgit will never carry on in such a
situation, since it insists that the file has the right hash. And if
it does have the right hash we don't really care how it was obtained.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
buildinfos are supposed to be signed. And, indeed, if they are
present, debsign wants to sign them. That means they need to be
transferred to the signing end, and back again.
We check that the filename is not totally unreasonable, but do not
attempt to verify it completely. If there are situations where
unwanted or confusing buildinfos are generated, this is the fault of
the build process. dgit rpush should, in this respect, do the same as
debsign+dput - ie faithfully sign and upload what the build has
provided.
We do check that the buildinfo doesn't look too much like a .changes,
and mentions the same files as the .changes (insofar as they mention
files in common). This is a rather nugatory defence against some
kinds of bait and switch attacks.
This is in some sense an incompatible protocol change: if the build
host has a new dgit, and sends buildinfos, an old dgit on the
initiator will declare a protocol violation. However, the new
protocol elements occur only when needed. in this situation, the only
way to get things to work at all with the old dgit at either end would
be to strip out the buildinfos, which is obviously undesirable.
Closes:#867693.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| | |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| | |
|
| |
| |
| |
| | |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
| |
| |
| |
| | |
modes (suppressing the pseudomerge).
|
|/
|
|
| |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
| |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
| |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
| |
Signed-off-by: Nicholas D Steeves <nsteeves@gmail.com>
|
|
|
|
| |
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some maintainers have written commas in the maintainer field of their
changelog entries. Such changelog entries could not be imported.
clogp_authline had code to replace multiple maintainers (which are
hypothetical right now) into just the first, but that trips on these
maintainers with commas.
Ultimately we should expect that the Maintainer: field from
dpkg-parsechangelog is in (a subset of) RFC5322 recipient field
format. In that format, any commas would need to be quoted.
So:
If the Maintainer field from dpkg-parsechangelog has a comma which has
no @ or " before it, then we consider it a single old-school
comma-containing maintainer. If it were intended as multiple
maintainers, then the first maintainer has no email address. Not
coping properly with that very-hypothetical future seems OK. We
simply delete the comma, so that the things we record in the git
history are more conservative.
If there is a " we leave things untouched in the hope that this is a
single address, albeit with some quoting. The alternative would be to
try to use a full RFC5322 parser. That's quite a risky change.
Perhaps we will revisit this after stretch.
For now this Closes:#852661.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
|
| |
Check that commits have smae authorship as appears in the changelog.
(Or, at least, the same authorship set.)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Specifically:
* Pass -q to git-symbolic-ref. That means that it doesn't print
an error message when HEAD is not a symbolic ref (ie, a
detached head), and it means that the exit status is then 1
rather than 128.
* If the return value from cmdoutput_errok is undef, check $? (which
is the exit status <<8) and then simply pass on the undef.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
|