Improve support for Python 3.
ALGORITHM CHANGE: only diff tree with first parent.
Running
git deps
onFOO^!
is effectively answering the question "which commits would I need in order to be able to cleanly cherry-pick commitFOO
?" 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 commitFOO
applies to its parent?"However, in the case where
FOO
is a merge commit with multiple parents, typically the first parentP1
is the parent which is contained by the merge's target branchB1
. That means that the merge commitFOO
has the effect of applying the diff betweenP1
's tree and theFOO
's tree toP1
. 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 applydiff(tree(P1), tree(FOO))
to it?"However, the current algorithm runs the blame analysis not only on
diff(tree(P1), tree(FOO))
, but ondiff(tree(Px), tree(FOO))
for every parent. This is problematic, because for instance if the target branch contains commits which are not onP2
'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 ofgit cherry-pick
:In the future it may be desirable to add an analogous
-m
option togit deps
.Add
git-fixup
.Allow clean interruption via
Control+C
.Fix output buffering issue.
Upgrade jQuery.
Improve debugging output.
Refactor internals.
Improve documentation.
- Improve documentation.
- Add a guide for maintainers.
- Add a tox environment for sdist building.
- Update dagre Javascript module to address security issues.
- Documentation improvements.
- Avoid PyScaffold bug.
- Repackage Javascript modules using newer npm, to avoid problem with timestamps which causes building of wheels to fail: npm/npm#19968
- Turned into a proper Python module, using PyScaffold.