summaryrefslogtreecommitdiff
path: root/Debian/Dgit.pm
Commit message (Collapse)AuthorAge
* 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.pm: printcmd: Print in one goIan Jackson2019-07-17
| | | | | | | | | | | | | | | | | | | | | | | Sometimes this message is used to report failure of `git fetch' etc. But when such operations fail, they may interleave output from the remote git, which typically prints fatal: The remote end hung up unexpectedly (referring to the local end as the `remote' end, from its point of view), after the the local end printed its message and failed. This sets up a race between Dgit.pm's printcmd and the message from the remote. If we're really unlucky, the remote's message interrupts the output from printcmd. We can avoid the within-line interleaving - at least, the interruption of our message - by printing the whole message in one go, so do that. (Strictly, the approach we use here only ensures that the message appears in a single write(2) call if it fits in the stdio buffer.) One of our test cases (tagupl) depends on this message not being split and has a small chance of failing without this fix. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: resolve_upstream_version: Report tag, where sensibleIan Jackson2019-07-17
| | | | | | | | | | | | | This affect what is show in commit messages (including the parseable parts) made by dgit and git-debrebase. Now they prefer to refer to the tag name if the caller specified refs/tags/ and the tag name is a nice one. This is not expected to make much difference for human callers (who will probably not explicitly qualify their tag refs). But it will make a difference for scripts. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: reflog_cache_insert: Use ensurepath for the reflogIan Jackson2019-07-17
| | | | | | Otherwise quilt fixup can fail in a too-fresh git tree. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Provide `ensurepath'Ian Jackson2019-07-17
| | | | | | | | | | Like `ensuredir' but also a bit like a more controlled `mkdir -p'. We use make_path from File::Path. It dies on failure. No caller yet. 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.pm: read_tree_*: Treat '' as meaning 'delete this'Ian Jackson2019-06-30
| | | | | | No functional change with existing callers. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: resolve_upstream_version: Return a message tooIan Jackson2019-06-29
| | | | | | No functional change for existing callers. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Move hash_commit from dgitIan Jackson2019-06-29
| | | | | | No functional change other than to no longer honour @git. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Move make_commit (git-commit-tree wrapper) from gdrIan Jackson2019-06-29
| | | | | | No functional change other than to no longer honour @git. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Rename various *make_commit* to *hash_commit*Ian Jackson2019-06-29
| | | | | | | | This avoids a subroutine name clash with make_commit in gdr. No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Move read-tree wrappers from git-debrebaseIan Jackson2019-06-29
| | | | | | No functional change other than to no longer honour @git. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Move resolve_upstream_version from git-debrebaseIan Jackson2019-06-29
| | | | | | No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Move upstream_commitish_search from git-debrebaseIan Jackson2019-06-29
| | | | | | No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Tidying up after tag format: Drop debiantag_oldIan Jackson2019-06-28
| | | | | | | | | The one remaining call site was in debiantags, where debiantag_maintview is (also) correct. No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Replace `confess $!' with `confess "$!"', to actually print errnoIan Jackson2019-05-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | $ perl -e 'use Carp; open X, ">/dev/eacces" or die $!' Permission denied at -e line 1. $ perl -e 'use Carp; open X, ">/dev/eacces" or confess $!' at -e line 1. $ perl -e 'use Carp; open X, ">/dev/eacces" or confess "$!"' Permission denied at -e line 1. $ confess will get references to its arguments in @_. Its documentation says it saves/restores $!. I conjecture that these interact as we see here: $ perl -e '$!=1; sub x { print ">@_<\n"; } x $!;' >Operation not permitted< $ perl -e '$!=1; sub x { local $!; print ">@_<\n"; } x $!;' >< Quoting "$!" averts the reference (and it will also ensure that we get the string value of $!, in case confess were to do anything in the future which would mess that up). This commit was made like this: perl -i -pe 's/confess \$!/confess "\$!"/g' dgit perl -i -pe 's/confess \$!/confess "\$!"/g' git-debrebase perl -i -pe 's/confess \$!/confess "\$!"/g' Debian/Dgit.pm I have manually reviewed each hunk and it all looks good to me. Closes: #929549 Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Allow uppercase (ascii) letters in multi-orig componentsIan Jackson2019-01-06
| | | | | | | | | | | | | | We didn't recognise files like firefox-esr_60.4.0esr.orig-l10n-sv-SE.tar.bz2 as orig files. As a result, dgit would see all the things in the corresponding subdirectory as having been added in Debian changes, leading it making inaccurate complaints and bombing out. See also #918438 against policy, where I (effectively) argue that this is a design error in the `3.0 (quilt)' format. Closes: #916926 Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* changedir_git_toplevel: Special error for not in git treeIan Jackson2018-10-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Move changedir_git_toplevel from git-debrebaseIan Jackson2018-10-11
| | | | | | NFC other than hardcoded qw(git). Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: rename_link_xf: Avoid copying if src is a link to dstIan Jackson2018-10-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: rename_link_xf: Always use cpIan Jackson2018-10-11
| | | | | | If we use mv on a symlink, it moves the link, not the file. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: rename_link_xf: Minor style fixIan Jackson2018-10-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Provide rename_link_xfIan Jackson2018-10-11
| | | | | | This will be used for cross-filesystem support. No callers yet. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: git_cat_file: When passed undef, crash with \n at endIan Jackson2018-10-09
| | | | | | | | | Interpolating $objname into this string means that the crash occors before "GCFF>| " has been "printed" - but actually sits in a stdio buffer, waiting to appear after the output from confess. Reported-by: Mattia Rizzolo <mattia@debian.org> Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: reflog_cache_lookup: Replace `confess' with `die' after execIan Jackson2018-10-02
| | | | | | | | | | | | | | With `confess' after `exec', perl complains Statement unlikely to be reached at /usr/share/perl5/Debian/Dgit.pm line 770. (Maybe you meant system() when you said exec()?) The error message's suggestion is not right here - what is wrong is that confess is not really appropriate in the child in this way. Replace it with die, using a better error string. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* i18n: Dgit.pm: mark final batch of messages (2)Ian Jackson2018-10-01
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: parsecontrol: Improve error message for failed openIan Jackson2018-10-01
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Split here doc for reflog cache commit message (nfc)Ian Jackson2018-10-01
| | | | | | This will make the translation markup auditable. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Improve message for control file parse failureIan Jackson2018-10-01
| | | | | | Use fail rather than die. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Improve symlink failure messageIan Jackson2018-10-01
| | | | | | | Use fail rather than die, and print a newline. This is used sometimes to link origs etc. Hopefully if this fails the user will know why. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Replace many die calls with confessIan Jackson2018-10-01
| | | | | | | | As a rule of thumb, anything where we would end up printing the line number in Dgit.pm is wrong. Most of these are internal errors or unexpected syscall failures. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* i18n: Dgit.pm: mark some of messages (1)Ian Jackson2018-10-01
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Improve getcwd failure messageIan Jackson2018-10-01
| | | | | | Don't print the pointless line number in Dgit.pm. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* i18n: Rename ___ to f_Ian Jackson2018-09-29
| | | | | | | | I have decided that's a better name. Not _f because, unlike printf (where f is done first, and then print), here the _ is done first and then f. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* i18n: Flag a handful of messages for translationIan Jackson2018-09-29
| | | | | | This is just useful for testing the forthcoming machinery, so far. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* i18n: Source-level framework: call setlocale, provide __ and ___Ian Jackson2018-09-29
| | | | | | | This is the general plumbing for looking up translated messages - the consumer-side. No actual messages are flagged for translation yet. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Move reflog_cache_* from dgitIan Jackson2018-08-12
| | | | | | | | We are going to want this for git-debrebase merge resolutions. NFC other than the usual change to literal `git'. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Move $maindir* up the file.Ian Jackson2018-08-12
| | | | | | | | We're going to want these for the reflog cache functions. NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Move make_commit_text from dgitIan Jackson2018-08-12
| | | | | | NFC other than the usual change to literal `git'. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: failmsg: Remove all double newlines, not just the firstIan Jackson2018-08-11
| | | | | | | I don't think this makes any difference with the current error messages. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: printdebug: Selectively print $debugprefix, and add a docIan Jackson2018-08-11
| | | | | | | | | Remember whether the last printdebug ended in a \n. If it didn't, suppress printing the next newline. I don't think anywhere calls printdebug without @_ right now. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: printdebug: Strip empty strings from @_ and maybe quit earlyIan Jackson2018-08-11
| | | | | | Now the meat of the function always has nonempty $_[-1]. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: printdebug: Break apart the printIan Jackson2018-08-11
| | | | | | NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: printdebug: Refactor slightlyIan Jackson2018-08-11
| | | | | | This will make the next commits easier. NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Introduce $debugcmd_when_debuglevelIan Jackson2018-08-11
| | | | | | | | | This is also intended to be usefully localisable, and works by localising $printdebug_when_debuglevel. NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Introduce $printdebug_when_debuglevelIan Jackson2018-08-11
| | | | | | | | This is intended to be usefully localisable. NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Move upstreamversion from dgitIan Jackson2018-08-03
| | | | | | NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Deconfuse argument orders of is_orig_file_of_p_v etc.Ian Jackson2018-08-03
| | | | | | NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Move is_orig_file_of_p_v and its dependencies from dgitIan Jackson2018-08-03
| | | | | | | | | We want is_orig_file_of_p_v, so move it and all the things it depends on. NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Dgit.pm: Move debinatag_maintview from dgitIan Jackson2018-07-08
| | | | | | | git-debrebase is about to want this for convert-from-gbp dgit split brain fixup. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>