summaryrefslogtreecommitdiff
path: root/dgit
Commit message (Collapse)AuthorAge
* -p option: Check against changelogIan Jackson2016-10-30
| | | | | | If -p is specified during push, we check that it's right. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Actually provide a -p (--package=) option (!)Ian Jackson2016-10-30
| | | | | | | | def02420f6d5 "-p option" abolished various adhocery in command line positional parameter parsing and documented the -p option. But it didn't implement it! Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Properly fetch all archive dgit view tags, as we intended.Ian Jackson2016-10-30
| | | | | | | | | | This deals with the possible "bad object" problem from an in-archive copy. Any such in-archive copy should come with either an update to the suite branch on the dgit-repos server (if maybe it needed a pseudomerge for centrally maintained history), or be identical to the upload's version tag. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git_fetch_us: More debugging (nfc)Ian Jackson2016-10-30
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Cope when cloning suite which doesn't receive uploads, like testing.Ian Jackson2016-10-30
| | | | | | | | | | | | | | | If $lastpush_hash is '', it means that the dgit git server does not have the suite branch. That can even happen if the current version in the suite was a .dsc with a Dgit field, if an in-archive copy moved the .dsc from whereever it was uploaded. Do not crash in this situation. Instead, give the user the Dgit hash (and maybe pseudomerge it with the user's history - sigh). There is still a possible problem: maybe the referenced commit is on another branch. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Reject `dgit pull' in split view quilt modesIan Jackson2016-10-30
| | | | | | | To avoid creating unfortunate wreckage on non-dgit-view branches. Closes:#842608. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit gbp-build will arrange to let gbp buildpackage generate .orig tarballsIan Jackson2016-10-30
| | | | | | if it seems applicable. Closes:#841094. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Introduce build_prep_earlyIan Jackson2016-10-30
| | | | | | | | | Currently only one call site which is only ever called once. We make it idempotent since we're going to want that. No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Introduce upstreamversionIan Jackson2016-10-30
| | | | | | And many call sites. No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Support dgit --delayed= pushIan Jackson2016-10-30
| | | | | | (with a warning in the manpage about possible skew). Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit clone: Set timestamps in cloned tree to a single unified time.Ian Jackson2016-10-30
| | | | | | | This makes it less likely that the user will trip over any timestamp-dependent FTBFS bugs (eg #842452). Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* New option --dgit-view-save= for split view quilt modes.Ian Jackson2016-10-30
| | | | | | | In particular, means that the output of a split view quilt-fixup is left somewhere useful. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* import-dsc: Actually print signature warning without --require-validIan Jackson2016-10-30
| | | | | | | If --require-valid-signature was not set, we would not print the warning if there was one. That is quite wrong. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* import-dsc: Support --require-valid-signatureIan Jackson2016-10-30
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* import-dsc: Check the signatureIan Jackson2016-10-30
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* import-dsc: Introduce ff checkingIan Jackson2016-10-30
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* import-dsc: Introduce $newhash (nfc)Ian Jackson2016-10-30
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* import-dsc: Introduce $info (nfc)Ian Jackson2016-10-30
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* import-dsc: Refuse to update a checked-out branchIan Jackson2016-10-30
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* import dsc: Actually permit --force-import-dsc-with-dgit-fieldIan Jackson2016-10-30
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* import-dsc: New featureIan Jackson2016-10-30
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Properly look for .origs etc. in .., fetching them less often.Ian Jackson2016-10-30
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* .dsc and file handling: Add some debugging outputIan Jackson2016-10-30
| | | | | | No other change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Break out parse_dscdata.Ian Jackson2016-10-30
| | | | | | No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Provide --force-changes-origs-exactlyIan Jackson2016-10-30
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Automatically calculate which .origs are requiredIan Jackson2016-10-30
| | | | | | | * Spot if any of our .origs have different hashes to the archive's * Update the .changes to have the set of .origs that the archive doesn't Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Test suite: Switch by default archive access method to dummycatapiIan Jackson2016-10-30
| | | | | | | Now dgit can, during the test suite, make file_in_archive queries, without exploding. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dummyapicat: New archive query methodIan Jackson2016-10-30
| | | | | | | | | | | | Like ftpmasterapi but knows that actually behind the scenes it's just mostly cat. Ths is relevant because file_in_archive_dummycatapi has to be different. (This is because the test suite can't sensibly predict what queries dgit might make, because the relevant bits of the test suite don't actually really know what .origs might be supposed to exist.) Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Some archive queries: Remove prototypesIan Jackson2016-10-30
| | | | | | | That makes these easier to reuse for another method. No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dopush: Break out $changes variableIan Jackson2016-10-30
| | | | | | No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dopush: Move $upstreamversion setting out to give it wider scopeIan Jackson2016-10-30
| | | | | | No functional change yet. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* @files_csum_info_fields: Provide ftpmaster api database field nameIan Jackson2016-10-30
| | | | | | No functional change as nothing looks here yet. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* archive_query: Provide file_in_archive methodsIan Jackson2016-10-30
| | | | | | No functional change as no callers yet. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* archive_query: Support further arguments to methodsIan Jackson2016-10-30
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* api query: Provide ability to tolerate 404Ian Jackson2016-10-30
| | | | | | | This is useful for backward-compatibility with earlier ftpmaster api versions. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Split brain mode: Fix --new. Closes:#842354.Ian Jackson2016-10-30
| | | | | | Test $archive_hash for undef early enough. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* build modes handling: Check for stray .changes on all split brain build entriesIan Jackson2016-10-25
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* build changes handling: Break out midbuild_checkchangesIan Jackson2016-10-25
| | | | | | No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* build changes handling: Run mergechanges when needed in non-sbuild build modesIan Jackson2016-10-25
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* build changes handling: Introduce postbuild_mergechangesIan Jackson2016-10-25
| | | | | | | | | | | | | | | Affects only the `sbuild' subcommand. Mostly code motion. Other changes include: * Provide in_parent, and use it. * "sbuild" changed to "build" in the msg_if_onlyone failure message * Unapply patches before merging changelogs * Reorganise so that it is possible to use this code when there is only one output changes file. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Import: Allow --force to enable/disableIan Jackson2016-10-24
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Ignore unknown force options (with a warning)Ian Jackson2016-10-24
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Provide --force-dsc-changes-mismatchIan Jackson2016-10-24
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Provide --force-unsupported-source-formatIan Jackson2016-10-24
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Import: Use absurd `git apply' emulation if gbp pq import failsIan Jackson2016-10-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gbp import can fail due to git apply not understanding patches. This is #841867 (against dgit). The underlying problem is #841866 (in gbp pq) which exposes things like #841865 and #829067 (in git). I imagine there are other lurking incompatibilities between git-apply and dpkg-source. We could in principle reimplement the gbp patch metadata extraction. But that would be quite tiresome and have its own compatibility problems. The real problem is just `git apply'. (Indeed gbp already tries git apply without, and then with, a whitespace fix option.) We work around the trouble by providing our own implementation of `git apply'. Specifically: We try to do things the sane way (just running gbp pq import) first. If that works, great. If it doesn't, we put /usr/share/dgit/absurd on the PATH. That contains only a sh script called `git'. This sh script figures out whether the caller is trying to invoke `git apply'. If not, it runs the real git. If the caller wanted git-apply, the absurd git script emulates it using dpkg-source --before-build. Conveniently, we know that the series file will not be touched by patches. So we can write just the patch we care about into the series file, and run --before-build, which applies just that one patch. The results are committed (minus the .pc), and for the next patch, dpkg-source sees again a tree with simply a single patch to apply. We try ordinary gbp pq first because our absurd approach is very slow on a big tree. Also we would like to maximise our chances of the import working. If git and/or gbp ever work better by themselves, all of this craziness will simply not happen. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Build system substitutions, for absurditiesIan Jackson2016-10-24
| | | | | | | | | | * Introduce absurddir, which is where the absurdities will go * Substitute the absurddir into the dgit script during make all * Install the substituted scripts rather than the originals in make install * Provide a default in dgit, based on $0 * Clean the substitutions up in make clean Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Provide --force-unrepresentable.Ian Jackson2016-10-23
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: --force-*: Provide frameworkIan Jackson2016-10-23
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: ftpmaster api fetch: Check http error code (!)Ian Jackson2016-10-23
| | | | | | | | | We are going to want to handle 404 specially so do not just use -f. Handle file:/// specially since curl just always invents 000 for the http error code in that case. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* curl invocation: archive-api-query subcommand: pass -f to curlIan Jackson2016-10-23
| | | | | | This makes it fail properly when it should. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>