summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
...
* test suite: gdr-import-nostitch: New testIan Jackson2018-08-19
| | | | | | | Generate this situation and check it's OK. Also check that the messages contain the expected hint. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: convert-from-gbp; on stitch failure, clarify messageIan Jackson2018-08-19
| | | | | | | | | Clarify what the preceding failure messages mean, and what the consequences are. This is part of #906641. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* test suite: gdr-convert-gbp: Break the start out into lib-gdrIan Jackson2018-08-19
| | | | | | | This will allow us to test other things to do with this conversion without making tests/setup/gdr-convert-gbp more complicated. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: convert-from-gbp: Print a success message.Ian Jackson2018-08-19
| | | | | | This is part of #906641. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* changelog: Add close note for #905400 to changelog entry for 6.5.Ian Jackson2018-08-19
| | | | | | | | The commit git-debrebase: Properly reject bare dgit dsc imports. fixed #905400. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* test suite: gdr-convert-gbp: test snag on unused patchesIan Jackson2018-08-19
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: convert-from-*: Snag on unused patchesIan Jackson2018-08-19
| | | | | | | | | | | Patches in d/patches which are not in series will be deleted, and not represented in the output. So call them a snag. Closes:#904997. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: get_tree: Support $precheck and $recurseIan Jackson2018-08-19
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* test suite: gdr-subcommands: Test raw conversion from gbpIan Jackson2018-08-19
| | | | | | | | | Make a branch which strips off the pseudomerge generated by gdr to stitch the dgit history, and then run some tests on that. These new tests detect #905975. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* test suite: gdr-subcommands: Use $peel, not $work, for a few checksIan Jackson2018-08-19
| | | | | | | | | | | | The definition of P says P result is add-patches, remaining letters apply to result~ But this was not hnoured by N n Z. Honour it. No change with existing tests, which do not follow P with any of those. But, this will be important in a moment, Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* test suite: gdr-convert-gbp: Save converted-from-gbpIan Jackson2018-08-19
| | | | | | This new branch will be useful in a moment. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: On rebase, always save ffq-prevIan Jackson2018-08-19
| | | | | | | | Even if we were both stitched and laundered. Closes:#905975. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: `prepush' is now a silent no-op if unstitched.Ian Jackson2018-08-19
| | | | | | This is more friendly. Update the docs accordingly. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* changelog: Add perf numbersIan Jackson2018-08-19
| | | | | | | | | | | | | This is from tests on my laptop with the branch the Debian kernel folks shared with me, ie c6eb63c6ed0694b0d22fbe5aaff953d209a3fc4e. avoid new runtimes in [s] before read-tree get_differs git-debrebase 78.574 3.699 1.419 git-debrebase status 3.359 unchanged 0.818 Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Rewrite get_differs in terms of trees_diff_walkIan Jackson2018-08-19
| | | | | | | | | | | As noted, git-diff-tree is quite slow. We can do much better, by stepping across the two trees ourselves. There should be no particularly significant change: the answers should be the same for reasonable inputs. Unreasonable inputs (particularly, executable files etc.) may be handled better, even. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: get_tree: Support '' for nonexistent objectsIan Jackson2018-08-19
| | | | | | This is going to be convenient in a moment. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: New get_tree machinery: Fix debuggingIan Jackson2018-08-19
| | | | | | | | | When we localise, we get a new variable, rather than localising the binding imported from Debian::Dgit. How annoying. Also, add two new debug prints at level 3. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Fix comment documenting D_DEB_*Ian Jackson2018-08-19
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Actually avoid read-tree in walk when not rewritingIan Jackson2018-08-19
| | | | | | | | | | | | | | | | | | | | See git-debrebase: Prep for avoid read-tree in walk when not rewriting for the motivation. Here we try to check that the commit we would make, if we were actually calling read-tree, write-tree and hash-object, would be identical to the one we are reusing. In particular, we check that the upstream files, and the debian/ directory, have the contents we would feed to read-tree. And we check that the parent list is the same. With these checks this new algorithm is, I think, safe enough to just use always. So set $opt_careful to 0. We will abolish this variable in a moment. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Provide new get_tree and trees_diff_walkIan Jackson2018-08-19
| | | | | | | | | | | | | | These are ways to avoid calling git-diff-tree, which is very slow even with --name-only --no-renames and without recursion. I think it is doing all the work to make nice actual diffs, and then throwing them away. Two calls to git-ls-tree is about 20x faster than git-diff-tree on the Linux kernel, for example. No functional change in this commit, since no callers yet. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* test suite: unset GIT_EDITOR, so it works if user has that set.Ian Jackson2018-08-19
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Rename $want_tree_ to $want_Ian Jackson2018-08-19
| | | | | | NFC Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Prep for avoid read-tree in walk when not rewritingIan Jackson2018-08-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because the git index is a flat list of files, not a directory hierarchy, git-read-tree can be very slow. We want to avoid it if possible. Introduce a new way of working, where we defer calls to read-tree. In detail: * $read_tree_upstream and $read_tree_debian, which are the only ways that walk invokes read-tree, simply record their argument; * The actual read-tree is done just before the write-tree and commit generation. read_tree_upstream, conveniently, does both halves, if it gets both arguments. * Put all of the read-tree and commit regeneration in a branch triggered if we are rewriting or "trying to be careful". Right now we are always careful, but I have tested this with a hack setting $opt_careful to 0, and the performance on the example branch in #905995 is much improved: 3.4s rather than 77s for `git-debrebase'. This is not suitable for enabling in its current form. I want to actuallly abolish the $opt_careful, and, instead, check with get_differs or git-cat-file that the tree segments, and the parent lists, are identical. When we do that we won't be checking any more that the commit generation can generate identical commits when not rewriting. But it doesn't really matter much any more provided the commits are well-formed and right, and the test suite will check that. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* dgit(1): Encourage --overwrite rather than --overwrite=version.Ian Jackson2018-08-19
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: walk: Introduce $read_tree_debianIan Jackson2018-08-12
| | | | | | We are going to make these do something more efficient, sometimes. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: walk: Move $read_tree_upstream into the loopIan Jackson2018-08-12
| | | | | | NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: Drop a redundant call to $read_tree_upstreamIan Jackson2018-08-12
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: conflict: Some xxx's now doneIan Jackson2018-08-12
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: test conflict: Test resolution via patchIan Jackson2018-08-12
| | | | | | | This is a really horrible way to do things. We need a better way to let the user help resolve this kind of merge. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Actually use merge resolutionsIan Jackson2018-08-12
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Actually record merge resolutionsIan Jackson2018-08-12
| | | | | | | | And, destroy it on scrap. Nothing consumes this yet. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: scrap works properly when it does only rebase --abortIan Jackson2018-08-12
| | | | | | | We use @deferred_updates to see if we actually did anything for --noop-ok purposes. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: test conflict: Break out no-wreckageIan Jackson2018-08-12
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Change wreckage to refs/debrebase/wreckage/*Ian Jackson2018-08-12
| | | | 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>
* git-debrebase: merge: New record-resolved-merge subcommand, WIPIan Jackson2018-08-12
| | | | | | | Right now this seems to be able to generate some commit, but it doesn't know how to record it. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Split off merge_series_patchqueue_convertIan Jackson2018-08-11
| | | | | | | | We're about to reuse this. NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Record the new-base in the wreckage.Ian Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Use a fresh branch and check out againIan Jackson2018-08-11
| | | | | | | | We are going to want this in a moment. No overall functional change. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Introduce $merged_pqIan Jackson2018-08-11
| | | | | | | | We are going to want this in a moment. NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Use a couple of globals insteadIan Jackson2018-08-11
| | | | | | | | | We are going to make some of this into its own sub, and copying the convenience functions seems annoying, so do this. NFC. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Introduce merge_attempt_cmd globalIan Jackson2018-08-11
| | | | | | NFC Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: Do wreckage cleaning separatelyIan Jackson2018-08-11
| | | | | | | git-update-ref hates us if we delete a ref and reintroduce it, in the same transaction. In this case we don't mind doing it in two goes. Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* 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: test gdr-merge-conflicts: Test late wreckageIan Jackson2018-08-11
| | | | Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
* git-debrebase: merge: test gdr-merge-conflicts: Break out wreckage-*Ian Jackson2018-08-11
| | | | | | NFC 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>