summaryrefslogtreecommitdiff
path: root/dgit
Commit message (Collapse)AuthorAge
* dgit: --deliberately-not-fast-forward works properly in split view quilt ↵Ian Jackson2017-02-12
| | | | modes (suppressing the pseudomerge).
* dgit: importing: Better handle commas in changelog maintainer fieldsIan Jackson2017-02-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* dgit: Do not fail when run with detached HEAD. Closes:#853022.Ian Jackson2017-02-05
| | | | | | | | | | | | | | 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>
* dgit: branchsuite: Break out @cmdIan Jackson2017-02-05
| | | | | | | | We are going to need to reuse this to print a proper error message. No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Strip initial newline from Changes line from dpkg-parsechangelogIan Jackson2017-02-05
| | | | | | so as to avoid blank line in commit messages. Closes:#853093. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Copy several user.* settings from main tree git local configIan Jackson2017-02-05
| | | | | | Copy to dgit private workarea. Closes:#853085. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit --overwrite: Check $gf->('Distribution')Ian Jackson2017-01-25
| | | | | | | | | | | | | Check that the overwritten version's changelog entry is not UNRELEASED. This could easily happen if this release was being made from a git branch which predates the previous package upload, with working practices which commit finalised UNRELEASED changelog entries with the complete version number for the next upload. (Such practices seem quite common.) Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* pseudomerge_version_check; Break out $gfIan Jackson2017-01-25
| | | | | | No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* config and suite handling: Make dgit-setup-* work in default distro.Ian Jackson2017-01-23
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: repos_server_url: Set $access_forpush to 1Ian Jackson2017-01-19
| | | | | | | | | | | In 468edf05661e "dgit: clone-dgit-repos-server: Set $access_forpush" we set this to 0. But this is wrong. The dgit-repos-server is used for pushing, not for readonly access. The readonly url may be entirely wrong, and indeed it is, for Debian. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: repos_server_url: Set $isuiteIan Jackson2017-01-19
| | | | | | | | We need to set this or access_*() fails. Set it to a dummy value. The user will need to specify -d to get the server for a non-default distro, which is hopefully obvious. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: repos_server_url(): Break outIan Jackson2017-01-19
| | | | | | No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: aptget archive access methodPeter Michael Green2017-01-19
| | | | | Add dummy implementation of file_in_archive_aptget copied from file_in_archive_dummycat. Re:#851697.
* dgit: git_lrfetch_sane: Take $url, and pass it right value in importIan Jackson2017-01-18
| | | | | | | This means we actually use the url from a Dgit .dsc field naming an unknown distro. Closes:#851728. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: git_get_config: Use confess, not croakIan Jackson2017-01-18
| | | | | | Using croak was simply a mistake. I always wanted a stack trace. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: clonee: Do setup_new_tree earlier.Ian Jackson2017-01-17
| | | | | | | This avoids printing a spurious warning about actually-defused gitattributes when cloning. Closes:#851624. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Defuse gitattributes in private working area, alwaysIan Jackson2017-01-17
| | | | | | | Even if we don't do it in the user's tree because config setup-gitattributes=false. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Improve comment left in .git/info/attributes.Ian Jackson2017-01-17
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* gitattributes: Docs and message wordsmithingIan Jackson2017-01-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* gitattributes: Issue a warning on un-defused .gitattributesIan Jackson2017-01-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* gitattributes: dgit: setup-gitattributes: New actionIan Jackson2017-01-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* gitattributes: Suppress transformations in our cloned treesIan Jackson2017-01-16
| | | | | | | The user wants a checkout of the actual source tree, so that their checkout and the source package are identical. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* gitattributes: Suppress transformations in udIan Jackson2017-01-16
| | | | | | | | | | We want all of our own manipulations to be unaffected by gitattributes transformations, so that the imported git *trees* are identical to the source packages. (Ie, if transformations are in effect, the *checkout* of such a tree might not be identical to the source package.) Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: gitattributes: Provide setup_gitattrs (internal function)Ian Jackson2017-01-16
| | | | | | | This is the idempotent function which adds the appropriate runes to .git/info/attributes. No callers yet. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: import_dsc: Break out import_dsc_resultIan Jackson2017-01-16
| | | | | | No functional change other than slight change to messages. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Remove redundant use of List::Util qw(any). Closes:#851280.Ian Jackson2017-01-13
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Option parsing: Fix undefined $suite in some import-dsc.Ian Jackson2017-01-13
| | | | | | | | | | | | | | | | | | | | | | | * Set $isuite to a dummy value. In import-dsc we aren't operating on a suite. We have to set it to something (because the config likes to look at the suite) and this avoids picking up information relating to the default suite. * Set $idistro (if -d not supplied) to the distro from (or implied by) the .dsc. This is needed so that we do not use any config from the default distro. In particular, the default commands (like what `git' command to use to access the dgit git server) need to be found via the dsc's distro's cmd-git setting, and this is done by parseopts_late_defaults() in pushing(). So we must set $idistro before then. * Move notpushing earlier, so that we call it before we call resolve_dsc_field_commit(). (It doesn't matter there for $idistro, because it sets that itself, but the git command does.) Closes:#851213. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Set default dsc import distro when suppressing Dgit field.Ian Jackson2017-01-13
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Break out parse_dsc_field_def_dsc_distro as global subIan Jackson2017-01-13
| | | | | | No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Set default dsc import distro when there is no Dgit field.Ian Jackson2017-01-13
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: parse_dsc_field: Break out $def_dsc_distroIan Jackson2017-01-13
| | | | | | No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Remove a leftover debugging print.Ian Jackson2017-01-13
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Fix a warning message about ref (mainly, tag) updates.Ian Jackson2017-01-12
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Fix a typo in a comment.Ian Jackson2017-01-12
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* option parsing: Rework --dep14tag options, introducing `defoptmodes'Ian Jackson2017-01-12
| | | | | | No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Do not execute END blocks in children.Ian Jackson2017-01-12
| | | | | | | | | | | END blocks run inside children created by fork or piped open (the latter, if they run perl code), on exit or (I think maybe) die. This is far from appropriate. So far symptoms of this bug seem to be limited to duplicated error messages but I have not done a thorough analysis. Closes:#850052. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Call forkcheck_setup in multisuite childrenIan Jackson2017-01-12
| | | | | | | We want execute our SIGWARN handler in these explicitly created children. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: buile_prep_early: Call notpushing() after getting $isuiteIan Jackson2017-01-10
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: dsc download handling: save as ,fetch if need beIan Jackson2017-01-10
| | | | | | | | | | | | | | | | | | | | * Pass \$refetched to complete_file_from_dsc, so that we refetch files whose hashes are wrong. * When saving files we refetched, save them as F,fetch if saving them as F gives EEXIST. So we can save refetched files. * When looking for files to reuse, look for F,fetch first. We do this only here in generate_commits_from_dsc, not in ensure_we_have_orig. This is because, in practice, this all won't be very effective for origs which need to be referred to by various .dscs. The main use case is when the user did a build without changing the version number. This would otherwise break fetch: Closes:#850824. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: complete_file_from_dsc: Introduce $refetchedIan Jackson2017-01-10
| | | | | | | | | Make have a option which, if set, causes hash mismatches to result in a refetch rather than a crash. No functional change because no call sites pass it. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: complete_file_from_dsc: Reorganise $fetchhashIan Jackson2017-01-10
| | | | | | No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: complete_file_from_dsc: Introduce $checkhashIan Jackson2017-01-10
| | | | | | No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: generate_commits_from_dsc: Introduce $upper_fIan Jackson2017-01-10
| | | | | | No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: After downloading .debian.* files, save them in `..', tooIan Jackson2017-01-10
| | | | | | | Ie do this not just for .origs. We don't want the user needlessly re-downloading them on each fetch. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: import-dsc: Add missing call to notpushing().Ian Jackson2017-01-10
| | | | | | Avoids crashing with undefined $isuite. Closes:#850781. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: Do not nedlessly re-fetch the rewrite map.Ian Jackson2017-01-09
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: rpush: Use $isuite for $isuite, not $csuiteIan Jackson2017-01-09
| | | | | | | | | | Send isuite as a parameter, and use it if it's provided, instead of csuite. This means config lookups like dgit-distro.SUITE.distro only need the user-provided suite name (eg `unstable'), and don't need to be duplicated for the canonical name (eg `sid'). Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: $isuite handling: Defer calls to access_* until first `want'Ian Jackson2017-01-09
| | | | | | | | | | | pushing, rpush_handle_protovsn_bothends, and quiltmode, all depend on access_*. For that we need $isuite, but we only get that (in the form of $csuite) from the build host. We can move all of these calls into i_resp_want, which is called the first time the build host actually wants something from us. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: $isuite fixes: defer pushing and rpush_handle_protovsn_bothends in rpushIan Jackson2017-01-09
| | | | | | | | | | | | | We mustn't call pushing until we have parsed the arguments enough to find $isuite. So remove the call to pushing from cmd_remote_push_build_host. Now we rely on cmd_push's call to pushing, which it does after the argument parsing. We then need to move rpush_handle_protovsn_bothends (which implicitly calls accesss_*) too, until we have got $isuite and called pushing(). We can move that into dopush. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit: rpush: suppress changelog tag format checkIan Jackson2017-01-09
| | | | | | | | | | | The changelog might be received (and therefore parsed) before we have been told the suite. So we can't check the tag format because we cannot know the distro yet. Simply suppress this early check. If the tag format is wrong, we will discover this later. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>