summaryrefslogtreecommitdiff
path: root/dgit
Commit message (Collapse)AuthorAge
* Terminology: Change "rewind" to "rewrite" where appropriateIan Jackson2020-02-02
| | | | | | | | | | | | | | | | | | | | | In #928473, Colin Watson writes: > the use of "rewind" as a synonym for "non-fast-forwarding", while > somewhat common in git terminology, is unfortunate. The terms seem > to be borrowed from video playback systems, where "rewind" is often > just the exact opposite of "fast-forward", and so when I see > "rewinding history" in a few places in dgit(1) my initial > interpretation is that it must mean "updating a ref to point to an > ancestor of the commit that it previously pointed to", whereas I > think dgit(1) means "any push that isn't a fast-forward". I don't > know if I'm the only one for whom it has that connotation. This makes sense. So, I am changing uses of "rewind" which do not mean precisely going back to an ancestor. I think we can often use the word "rewrite" for the more general case, but there are some places where another wording is better. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: absurd: Provide a way for absurd git to print warningsIan Jackson2020-02-01
| | | | | | | | The file ../../absurd-apply-warnings is dumped to dgit's stderr. Nothing writes to it yet, so no overall functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Once again cope with archive skewIan Jackson2019-09-06
| | | | | | | | | | | | | | | Since our http rearrangements, we have lost the ability to try multiple dsc versions which means we cope badly with archive skew. This was an editing error: in 7821907696db dgit: Abolish url_get in favour of url_fetch we omitted to notice that url_get implicitly does what url_fetch needs Ok404 to do. So we didn't add the Ok404 parameter. Fix this by adding it now. Closes: #935874 Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: curl: pass CURLOPT_FOLLOWLOCATIONIan Jackson2019-09-06
| | | | | | | This was accidentally dropped in the 9.6 http changes. Closes: #939564 Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Fail early when the archive/ tag already exists.Ian Jackson2019-09-05
| | | | | | | | | Suggest using a new version number. We need a new --force option to override this check. Closes: #935802 Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Warn when we see what look like our options passed too lateIan Jackson2019-09-05
| | | | | Closes: #934807 Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Use distro-info-data to resolve unknown suites to distrosIan Jackson2019-09-05
| | | | | Closes: #931212 Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Use $tarball_f_ext_re for test_source_only_changesIan Jackson2019-09-05
| | | | | | | The old ad-hoc regexp doesn't match .tar.gz.{asc,sig}. Closes: #939280 Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: vcs-git handling: Strip [...] a la Haskell TeamIan Jackson2019-08-11
| | | | | | | | | | The final syntax of this is not yet agreed but this regexp ought to do the right thing in all reasonable cases. (Ie, no [ ] inside the [ ].) See also #932696 against policy, which is discussing the spec. Closes: #932699 Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: update-vcs-git: Use vcs_git_url_of_ctrlIan Jackson2019-08-11
| | | | | | So we strip -b fragments as we ought. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: update-vcs-git: Print a less confusing message if unchangedIan Jackson2019-08-11
| | | | | | | Previously, we would say it was "already configured" which is unspecific and sounds a bit like an error. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: update-vcs-git: Do not crash if url is unchangedIan Jackson2019-08-11
| | | | | | | Previously, we would pass an empty command array to runcmd, causing a mysterious-looking failure. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Break out vcs_git_url_of_ctrlIan Jackson2019-08-11
| | | | | | This should have been done before. No functional change so far. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Fix on NFS (avoid leaking an open file in a directory to rm)Stéphane Glondu2019-08-11
| | | | | | | | | The file debian/source/format was open by "dgit fetch" but never closed, causing failure to remove the extracted tree on NFS. Closes: #933827 Signed-off-by: Stéphane Glondu <glondu@debian.org> Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: WWW::Curl: Double check that $response_body was setIan Jackson2019-08-11
| | | | | | | We are making some assumptions about how WWW::Curl behaves. This confess, with appropriate tests, should catch any future problems. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: WWW::Curl Set $response_body to '' explicitlyIan Jackson2019-08-11
| | | | | | | | | | | | | | | check_for_git calls url_fetch with a WWW::Curl parameter CURLOPT_NOBODY which suppresses saving the body. The result is that CURLOPT_WRITEDATA does not update $response_body. Then, even on success, url_fetch returns undef (which ought to mean 404). Strictly this is a bit sneaky of check_for_git. But, rather than trying to make this interface more formal, just make url_fetch set $response_body to ''. It does return this except in the success case, so the error cases are still handled right. Closes: #934126 Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Slightly more debugging for check_for_git with http[s]Ian Jackson2019-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Abolish url_get in favour of url_fetchIan Jackson2019-07-23
| | | | | | This removes use of LWP from dgit. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Use libcurl, not @curl, for git checkIan Jackson2019-07-23
| | | | | | | | | | This means that when we sort out our TLS problems this will be fixed too. The remaining use of command-line curl is just to download additional .dsc compoments. I intend to leave that as-is. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: url_fetch: Honour new CurlOptsIan Jackson2019-07-23
| | | | | | No functional change with the existing callers. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: url_fetch: Honour new AccessBaseIan Jackson2019-07-23
| | | | | | No functional change with the existing callers. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Reorganise url_fetchIan Jackson2019-07-23
| | | | | | | | | This was archive_api_query_curl. We're working on making it good for other things too. No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: libcurl usage: Install SIGPIPE handler ourselvIan Jackson2019-07-23
| | | | | | | | | | We don't want a global SIGPIPE setting. In particular we do not want to run any of subprocesses with SIGPIPE ignored. Just in case libcurl gets this wrong, tell it CURLOPT_NOSIGNAL, and do it ourselves. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Set $SIG{INT} to DEFAULTIan Jackson2019-07-23
| | | | | | | | | | | | | | There is a bug in libdpkg-perl, where Dpkg::Source::Package installs a handler on loading. This has the effect of making in-process C calls (eg to libcurl) uninterruptible by ^C. Work around it by unconditionally resetting SIGINT. (Anyone who deliberately invoked us with SIGINT ignored deserves to keep all the resulting pieces.) See #932841. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: archive_api_query_curl: Add a bit of debugIan Jackson2019-07-23
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Use WWW::Curl rather than invoking curl(1) for archive apiIan Jackson2019-07-23
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Drop support for old attempts at cert/key pinningIan Jackson2019-07-23
| | | | | | | | | | | I don't think anyone is using these. We are going to do something different to try fo fix #932570. When #790093 is fixed we may need something like archive-query-tls-key (or even exactly that) but we would have to reimplement it for WWW::Curl anyway. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Provide --for-push optionIan Jackson2019-07-23
| | | | | | | This is much more conveient and in some cases sensible than -cdgit-distro.DISTRO.readonly=0 Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Make cmd_archive_api_query call api_query_rawIan Jackson2019-07-23
| | | | | | | | | | | | In support of #932570. Now there is only one caller of archive_api_query_cmd. It is OK to pass `undef' because - archive_ No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Move $data check into api_queryIan Jackson2019-07-23
| | | | | | | In support of #932570. Our intended other caller doesn't have a $data. No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Break out api_query_rawIan Jackson2019-07-23
| | | | | | In support of #932570. No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit clone: No longer create an "origin" remoteIan Jackson2019-07-22
| | | | | | | | | | | | | | | | | | | | | This was a normal git remote pointing to the dgit git server. This is not really sensible because 1. it can't simply be pushed to 2. sometimes (if the package was never pushed with dgit) it doesn't even exist 3. it may be out of date with respect to the archive The effect of 2 is that it can break `git remote update'. This "git remote add" was introduced in 2013 in 39c6c123ab730d42ec7c9ed01c30e0175c7691e7 fix branch usage and was first included in 0.2. There doesn't seem to be any evidence of me having deeply considered the merits of this at the time. Closes: #932694 Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* copyright: credit Genome Research LimitedMatthew Vernon2019-07-21
| | | | | | | | | I work for the Wellcome Sanger Institute, but am employed by Genome Research Limited, so it is they who should be credited in Copyright notices. Signed-off-by: Matthew Vernon <mv3@sanger.ac.uk> Closes: #932630
* Dgit.pm: Abolish now-unused $t_local_git_cfg playtree_setup argIan Jackson2019-07-21
| | | | | | | | | | | This was there so that dgit's -c options would be honoured here. But now, we get this information via @git, which dgit adds -c options to, which we pass to git-playtree-create by invoking it via git. So this is no longer used and can be abolished. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Provide @gitIan Jackson2019-07-21
| | | | | | | | | This clears the way for some parts of Dgit.pm to honour dgit's git invocation conventions. No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Update copyright notices in many filesIan Jackson2019-07-20
| | | | | | Mostly, adding 2019. Also adding some missing credits to Sean Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: read-only access to the Ubuntu Cloud Archive (Closes: #932322)Matthew Vernon2019-07-20
| | | | | | | | | | | | | This adds -d ubuntucloud for the Ubuntu Cloud Archive (see https://wiki.ubuntu.com/OpenStack/CloudArchive for details thereof). Access is by the aptget: query mechanism, suites are spelled like bionic-updates:train or bionic-proposed:train, additionally the shorthand bionic:train for bionic-updates:train is allowed. Closes: #932322 Signed-off-by: Matthew Vernon <mv3@sanger.ac.uk> Acked-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: move suite name check to after suite rmapMatthew Vernon2019-07-19
| | | | | | | | | | The Ubuntu Cloud Archive has Codenames of the form bionic-updates/train (the / in which suitere doesn't match); this can be corrected by suite rmap, so apply that before doing the suitere sanity check. Signed-off-by: Matthew Vernon <mv3@sanger.ac.uk> Acked-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Do not translate tag subject linesIan Jackson2019-07-06
| | | | | | | These are parsed by dgit-repos-server. Translating them breaks things. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Include dgit tag metadata in maintainer view tag tooIan Jackson2019-07-06
| | | | | | | This is for the use of git-debpush and other tools which want to figure out the quilt mode from the git history. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: tags: Add missing blank lines to messagesIan Jackson2019-07-06
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Move tag metadata calculation earlierIan Jackson2019-07-06
| | | | | | No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Allow -p with various push modesIan Jackson2019-07-06
| | | | | | This checks the supplied package name against the changelog. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Move $suite_re from dgitIan Jackson2019-07-06
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Include quilt mode in archive/ tag in split viewIan Jackson2019-07-05
| | | | | | | | | | | | | | | | | | | | | | | | After this, a program examining this tag can see one of the following possibilities: "split --quilt=<splitting>" splitting quilt view, `3.0 (quilt)' "split --quilt=<nonsplitting>" `3.0 (quilt)', mostly-dgit-compatible branch, but split view (bureaucracy commits not on maintainer branch) "no-split --quilt=<nonsplitting>" `3.0 (quilt)', maintainer uses dgit branch "split" / "no-split" non-`3.0 (quilt)' No "split" or "no-split" generated by old versions of dgit, quilt transformation information not captured in machine-readable form Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: rpush protocol version 6: Include splitbrain paramIan Jackson2019-07-05
| | | | | | | | And, in the push responder, check that we agree. No overall functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: rpush protocol: Actually select version 5 !Ian Jackson2019-07-05
| | | | | | | | | These must be most-preferred first, ie in reverse order. Change the comment, to mention this. The information about protocol changes is in the detailed protocol description. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: determine_whether_split_brain: Make it take $formatIan Jackson2019-07-05
| | | | | | | Rather than returning it. Adjust the two call sites. No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: rpush: Move push_parse_dsc earlierIan Jackson2019-07-05
| | | | | | | | We are going to want this information sooner. No overall functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: push_mktags: Provide $formatIan Jackson2019-07-05
| | | | | | No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>