summaryrefslogtreecommitdiff
path: root/git-debrebase
Commit message (Collapse)AuthorAge
* git-debrebase: keycommits abolish use of last etc.Ian Jackson2018-06-16
| | | | | | | | | Previously, presumably, this little fragment was within an anonymous sub. Now it isn't any more, and we can simply return. No functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: keycommits: Pass $cl to callbacksIan Jackson2018-06-16
| | | | | | No overall functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: keycommits: Move up $cl (nfc)Ian Jackson2018-06-16
| | | | | | We are going to want this within the scope of the anon sub $x. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Fix multi-orig handlingIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Fix snaggingIan Jackson2018-06-16
| | | | | | | | | | | | | | * Rename $snags_checked to $snags_summarised and make it a counter of the snags we have summarised in snags_maybe_bail. * Introduce all_snags_summarised, which uses arithmetic to see if we have had new snags since the most recent snags_maybe_bail, * Use this in run_deferred_updates rather than the existing approach; this means we can crash if there were new snags for which we should have bailed. * Make snags_maybe_bail not produce a redundant identical summary. * Initialise counters to 0 so arithmetic does not give undef warnings. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Some notes on anchor parent orderingIan Jackson2018-06-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the result of some playing around with gitk. Notably, for example, git-branch -f t dgit/stretch-security && ~/things/Dgit/play/swap-pseudomerges -f RELEASE-4.8.0..t where dgit/stretch-security is c9517ee45383271e90f40b7a9773d1e6fefaeca7 and swap-pseudomerges is something like this #!/bin/sh # # runs # git-filter-branch --some-filters "$@" set -e git-filter-branch --parent-filter ' case "$(git cat-file commit $GIT_COMMIT)" in *"git-debrebase new-upstream breakwater"*|*"git-debrebase anchor"*) perl -ne '\'' chomp; print join " ", reverse split / +(?=-p )/; print "\n"; '\'' ;; *) cat esac ' "$@" or .... *"git-debrebase new-upstream breakwater"*|*"git-debrebase anchor"*) .... and then runes like gitk --first-parent dgit/stretch-security & gitk dgit/stretch-security -- ':/' ':!/debian' & etc. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* Commentary: explain why pseudomerges are the way round they areIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Change badusage exit status to 8Ian Jackson2018-06-16
| | | | | | This matches dgit. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* exit status: Fix git-debrebase to use Debian::Dgit::ExitStatusIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Implement make-patchesIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Run gbp pq export only from (perhaps private) laundered branchIan Jackson2018-06-16
| | | | | | | | | | When the branch is stitched, gbp pq will descend into both sides of the pseudomerge. This will duplicate patches and be generally bad. So instead, use walk to generate, privately, a laundered version of HEAD, to use to generate the patches. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Break out make_patches_staged (nfc)Ian Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: conclude, quick: uncleanness after laundry is fatalIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Defend against missing snags_maybe_bail callsIan Jackson2018-06-16
| | | | | | | | | Almost the only thing gdr does as an output is to update HEAD and other refs. That's done with run_deferred_updates. So, there, check that (i) we have called snags_maybe_bail at least once; (ii) we have not had any snags since. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Add a several missing snags_maybe_bail callsIan Jackson2018-06-16
| | | | | | | That these were missing is a bit alarming. I am about to add some more defences against missing this check. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Fix a message to use "" properlyIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Do not mind stitching an unlaundered branchIan Jackson2018-06-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | <Diziet> I discover that stitch treats non-launderedness as a snag. <Diziet> This is not quite compatible with these newfangled push-your-unlaundered-stuff workflows. <Diziet> It would be possible to make one of prepush or stitch (currently synonyms) behave differently in this respect. <spwhitton> do you know why stitch treats non-launderedness as a snag? <spwhitton> given that we expect [most people] to use `git debrebase conclude`, which launders, and never invoke `git debrebase stitch` explicitly, it would be okay to change that such that `git debrebase stitch` does not consider non-launderedness to be a snag. <Diziet> I think it does that just because I am the kind of person who thinks, when writing some routine, "what could I check here?" :-) <Diziet> I think you are perhaps right that it ought not to. <Diziet> "conclude" didn't exist then of course. <spwhitton> okay. git-debrebase(1) could note "you probably want conclude because you probably want to launder" <Diziet> Mmmm. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: do_stitch: Introduce $unclean argumentIan Jackson2018-06-16
| | | | | | Update all call sites. No functional change just yet. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Provide "prepush"Ian Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Provide and test "conclude"Ian Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Rename `conclude' to `quick'Ian Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: comment: explain why tagged linear anchors are evilIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Only make finalised changelog entriesIan Jackson2018-06-16
| | | | | | | | | | Unfortunately, finalised UNRELEASED has become the dominant convention in Debian. So conform to that. Also this breaks a test, which assumed that the operation date did not leak into the output tree. But, sadly, now it does. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Do not run a no-op rebase in default modeIan Jackson2018-06-16
| | | | | | | No functional change: this is always a no-op, since $breakwater is one of HEAD's ancestors. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Handle -i option as a git-rebase optionIan Jackson2018-06-16
| | | | | | Ie, as a request to do a rebase. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Provide conclude subcommandIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: break out do_stitch (nfc)Ian Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: avoid stack trace from badusage()Ian Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Improve/fix handling of $proseIan Jackson2018-06-16
| | | | | | | | | Allow specification of the whole prose. Set the default in cmd_stitch. Always include the word `stitch' in the reflog. Also fix a comment typo. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Rename `problem'/`fproblem' to `snag'Ian Jackson2018-06-16
| | | | | | | And add a cross-reference the first time it's mentioned in the manpage. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: introduce ffq_prev_info (nfc)Ian Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Break out do_launder_head (nfc)Ian Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: break out stitch() (nfc)Ian Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: rename $drlast to $gdrlast (nfc)Ian Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Provide anchor subcommandIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Rework keycommits out of breakwater_ofIan Jackson2018-06-16
| | | | | | | | * Return the anchor too * More flexible special case handling * Call sites adjusted, resulting in fixes to special case handling Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: stitch: make noop actually be a no-opIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: stitch: check the branch is launderedIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: breakwater_of: permit unclean to be an fproblemIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: maintain debrebase-lastIan Jackson2018-06-16
| | | | | | | This is mostly for the benefit of dgit(1), which wants to know whether to run gdr to do quilt fixup. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: ffq_prev_branchinfo: return $drlastIan Jackson2018-06-16
| | | | | | No functional change yet as no-one uses this information. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: move some todo/notes to NOTESIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase(1): document record-ffq-prevIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase(1): document some moreIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase(1): document convert-to-gbpIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase(1): document convert-from-gbpIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase(1): wipIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase(5): Document commit message annotationsIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: provide --anchor optionIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: new-upstream-v0: allow upstream to be omittedIan Jackson2018-06-16
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>