aboutsummaryrefslogtreecommitdiffstats
path: root/CHANGES.rst
diff options
context:
space:
mode:
authorAdam Spiers <git@adamspiers.org>2021-04-04 00:19:32 +0100
committerAdam Spiers <git@adamspiers.org>2021-04-04 00:58:23 +0100
commit47461a0fde1566a51d3cde54038afc1f200fd8d2 (patch)
treeca52b9becd2e3bca34884f54defa39703bf91c8a /CHANGES.rst
parent79ba58747deb986a8e6f5e6b1485c4c51d312bec (diff)
downloadgit-deps-47461a0fde1566a51d3cde54038afc1f200fd8d2.tar.gz
Update CHANGES.rst
Diffstat (limited to 'CHANGES.rst')
-rw-r--r--CHANGES.rst63
1 files changed, 63 insertions, 0 deletions
diff --git a/CHANGES.rst b/CHANGES.rst
index de83234..c36d5e2 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -2,6 +2,69 @@
Changelog
=========
+Version 1.1.0
+=============
+
+- Improve support for Python 3.
+
+- ALGORITHM CHANGE: only diff tree with first parent.
+
+ Running ``git deps`` on ``FOO^!`` is effectively answering the
+ question "which commits would I need in order to be able to cleanly
+ cherry-pick commit ``FOO``?" Drilling down further, that could be
+ rephrased more precisely as "which commits would I need in my
+ current branch in order to be able to cleanly apply the diff which
+ commit ``FOO`` applies to its parent?"
+
+ However, in the case where ``FOO`` is a merge commit with multiple
+ parents, typically the first parent ``P1`` is the parent which is
+ contained by the merge's target branch ``B1``. That means that the
+ merge commit ``FOO`` has the effect of applying the diff between
+ ``P1``'s tree and the ``FOO``'s tree to ``P1``. This could be
+ expressed as::
+
+ tree(P1) + diff(tree(P1), tree(FOO)) == tree(FOO)
+
+ Therefore the question ``git deps`` needs to answer when operating
+ on a commit with multiple parents is "which commits would I need in
+ my current branch in order to be able to cleanly apply
+ ``diff(tree(P1), tree(FOO))`` to it?"
+
+ However, the current algorithm runs the blame analysis not only on
+ ``diff(tree(P1), tree(FOO))``, but on ``diff(tree(Px), tree(FOO))``
+ for *every* parent. This is problematic, because for instance if
+ the target branch contains commits which are not on ``P2``'s
+ branch, then::
+
+ diff(tree(P2), tree(FOO))
+
+ will regress any changes provided by those commits. This will
+ introduce extra dependencies which incorrectly answer the above
+ question we are trying to answer.
+
+ Therefore change the algorithm to only diff against the first parent.
+
+ This is very similar in nature to the ``-m`` option of ``git cherry-pick``:
+
+ https://stackoverflow.com/questions/12626754/git-cherry-pick-syntax-and-merge-branches/12628579#12628579
+
+ In the future it may be desirable to add an analogous ``-m`` option
+ to ``git deps``.
+
+- Add ``git-fixup``.
+
+- Allow clean interruption via ``Control+C``.
+
+- Fix output buffering issue.
+
+- Upgrade jQuery.
+
+- Improve debugging output.
+
+- Refactor internals.
+
+- Improve documentation.
+
Version 1.0.2
=============