summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* git-debrebase: Do not bail making patches if there aren't any.Ian Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: test: Introduce t-merge-conflicted-*Ian Jackson2018-08-11
| | | | | | NFC Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: test: Drop stuff cloned from gdr-viagitIan Jackson2018-08-11
| | | | | | We don't much are about this here. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Add wreck note recording to merge_seriesIan Jackson2018-08-11
| | | | | | | We also add a LeftRight to the merge base delta queue hashref, so that it can be treated the same as the left and right delta queues. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Clarify an internal commit messageIan Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Break out $mdebugIan Jackson2018-08-11
| | | | | | NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Pass wreckage hashref to merge_seriesIan Jackson2018-08-11
| | | | | | NFC so far. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Introduce $mwrecknote in walk analysis halfIan Jackson2018-08-11
| | | | | | | | | | We collect various git objects that we may want to present to the user as wreckage. Currently we dump them in $cl and print them out in $nomerge. We'll want to do better than that of course. Also, we don't collect any wreckage for the actual series merge yet. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Whitespace changesIan Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Refactor interchange merge-base computationIan Jackson2018-08-11
| | | | | | | We need to unpack this a bit so that we can insert some wrecknote stuff, which will come in a moment. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Fix a $nomerge messageIan Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Add a comment about rewritingIan Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Remove a redundant checkIan Jackson2018-08-11
| | | | | | | MergedBreakwaters commits are now handled by a completely other branch of the if, so this check is now redundant. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: mergedbreakwaters_anchor: Check consistencyIan Jackson2018-08-11
| | | | | | | Check that the result contains all the other anchors. This is ensured by walk, and required of VanillaMerges. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Avoid needlessly walking MergedBreakwatersIan Jackson2018-08-11
| | | | | | | We will not ever need to rewrite one of these, so we can just ask keycommits for its anchor. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: test suite: Use t-ref-same-startIan Jackson2018-08-11
| | | | | | | | This is better than t-gdr-good laundered because (i) it is faster (ii) it checks that the second laundry was a no-op (and did not rewrite unnecessarily). Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: test suite: test avoiding re-merge of debian/Ian Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Avoid asking user to re-merge debian/Ian Jackson2018-08-11
| | | | | | | If it had conflicts, they will have been resolved earlier and we can just take that resolution. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: test suite: Do a bit more testingIan Jackson2018-08-11
| | | | | | We can now call t-gdr-good laundered, because it works. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* test suite: lib-gdr: t-gdr-good: Handle MergedBreakwatersIan Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Add another xxx commentIan Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: walk: Reintroduce the local $read_tree_upstream subIan Jackson2018-08-11
| | | | | | | | | | | | | | | Now that we have the $tree_with_debian parameter to the global read_tree_upstream, we can use it to avoid the git-write-tree call and pass $build as the $tree_with_debian. This thus partially reverts dfc092e0ec3d932e51a071000519477d0e33525c git-debrebase: Make read_tree_upstream global (nfc) The combined effect is now that $read_tree_upstream does exactly the git commands it did before. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Get debian/ parts of new patch queue rightIan Jackson2018-08-11
| | | | | | | | | | We want the newly generated delta queue commits to have the $newbase's debian/. Previously we let read_tree_upstream save and restore debian/, but the contents of debian/ in the index are not right: they're the result of the git merge, which is whatever is left over from earlier. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: read_tree_upstream: New $tree_with_debian parameterIan Jackson2018-08-11
| | | | | | | | If not passed, this function does the same as it did before. NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Generate some more debugging commitsIan Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: keycommits: Handle merged-breakwater commitsIan Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: keycommits: New $claimed_bw optional argumentIan Jackson2018-08-11
| | | | | | No users yet, so NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Generate merged-breakwaters with correct metadataIan Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: keycommits: Break out $found_anchorIan Jackson2018-08-11
| | | | | | We are going to want to reuse this. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* test suite: lib-gdr: t-gdr-good: Introduce t-gdr-analyseIan Jackson2018-08-11
| | | | | | | | NFC This will allow us to recurse. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* test suite: lib-gdr: t-gdr-good: Introduce $analIan Jackson2018-08-11
| | | | | | NFC Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Check that merge resolution is correctIan Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Comment about laundry of merge of unstitchedIan Jackson2018-08-11
| | | | | | | | I have concluded that this is not a problem avoidable by git-debrebase, and that any trouble will be tolerable (at least, not data loss). The user should try to avoid doing this. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Improve some xxx commentsIan Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: test suite: Test both with and without `after'Ian Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Do not sometimes drop the first patch!Ian Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Set $debugcmd_when_debuglevel = 2Ian Jackson2018-08-11
| | | | | | | | | | | This produces much better (less noisy) debug output. git-debrebase calls subcommands an awful lot and they are generally very uninteresting. If this now turns out to be insufficient, we will add additional calls to printdebug. 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>
* git-debrebase: Reverse argumennts to check diff error messageIan Jackson2018-08-11
| | | | | | | | | | "Old, new" is more conventional. This makes debug output and error messages a bit easier to understand. We must keep the backward order for get_differs because we need to detect patch deletion, which shows up (reversed) as D_PAT_ADD. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Add a lot of printdebugIan Jackson2018-08-11
| | | | | | | | | | | | We also operated on sorted patch lists, and reorganise the prereq computation slightly, to make this possible. This `print DEBUG ... if' is not very nice. This is needed because printdebug unconditionally prints $debugprefix. These new debug prints are nearly the first which want to do multi-stage printing outside dgit (and dgit normally operates without $debugprefix set). 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>
* git-debrebase: merge: Detect octopi laterIan Jackson2018-08-11
| | | | | | | | | If git-debrebase or dgit were to make an octopus merge, we should recognise that as an unknown kind of gdr/dgit merge, not as a general octopus merge. This code motion leaves a spot where such a new kind of merge could be classified. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Add an xxxIan Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: test suite: New gdr-merge testIan Jackson2018-08-11
| | | | | | | | This still has a lot of xxx's, but as it is right now it passes, despite all the bugs. This seems like a reasonable baseline for more work. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: New merge handing, experimental and preliminaryIan Jackson2018-08-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Classification: * Classify octopus merges as unknown, separately * Classify 2-parent general merges as VanillaMerge, if feature enabled * Introduce new merged-breakwater commit tag, classify as MergedBreakwaters * Classify other gdr-generated 2-parent merges as unknown Inspection (keycommits): * VanillaMerge commits require laundry, much like dgit imports, and prevent discernment of the actual breakwater and anchor Laundry (walk): * Rewrite VanillaMerge using new merge_series function Test suite: * We get a slightly different error message in gdr-unprocessable, now. Later, when we make this non-experimental all the time, we are going to have to soup up gdr-unprocessable to make a worse test commit. There are a lot of known bugs and infelicites, marked with "xxx". There is a test (which will appear in a moment) but it's rather a poor test, so there will be many uknown bugs. So all of this is enabled only if GIT_DEBREBASE_EXPERIMENTAL_MERGE is set in the environment. (Strictly, only the classification is gated, but that is sufficient.) No significant functional change without this setting. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: read_tree_upstream: New option $keep_patchesIan Jackson2018-08-11
| | | | | | NFC with existing callers. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>