summaryrefslogtreecommitdiff
path: root/git-debrebase
Commit message (Collapse)AuthorAge
...
* git-debrebase: fresh_workarea: Support $subdirIan Jackson2018-08-11
| | | | | | | | And use this in merge_series. NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Prettify subprocess failuresIan Jackson2018-08-11
| | | | | | | If we print STDERR in advance, there is a newline beforehand, which is undesirable. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Minor style and error message changeIan Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Call merge_failed in merge_seriesIan Jackson2018-08-11
| | | | | | Introduce $attempt_cmd for this purpose. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Defeat evals which might try to trap merge_failedIan Jackson2018-08-11
| | | | | | | | That would be dangerous because we're in the wrong directory and other things may be wrong. For example, if we continue we might overwrite wreckage with other wreckage. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Save wreckage in $maindirIan Jackson2018-08-11
| | | | | | We should change to $maindir before exiting. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Always save wreckageIan Jackson2018-08-11
| | | | | | There is no point configuring this. We tidy it up again soon enough. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Wreckage: tidy it up on successful commandsIan Jackson2018-08-11
| | | | | | | Whenever we do a final ref update, discard any wreckage. The wreckage can be autoregenerated, so it is not very important. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Break out merge_wreckage_cleaning (nfc)Ian Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Save wreckage if desiredIan Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Introduce new merge_failed subIan Jackson2018-08-11
| | | | | | | And call it from $nomerge in walk. Now we produce a sane error message. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Make mwrecknote call printdebugIan Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Miscellaneous mwrecknote fixesIan Jackson2018-08-11
| | | | | | | | | | | Add the missing commitish for the -patchqueue wrecknote. Defend against undef (or too few) args to mwrecknote. (The way we end up calling it means perl doesn't notice.) In walk, ensure that we initialise $cl->{MergeWreckNotes}. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Break out run_ref_updates_nowIan Jackson2018-08-11
| | | | | | NFC Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Introduce global mwrecknote subIan Jackson2018-08-11
| | | | | | NFC Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Do not crash on branches with no delta queueIan Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* 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: 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: 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: 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>
* 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: 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>
* 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>
* 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: 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>