git: 'commit-difference' really excludes the ancestors of #:excluded.

* guix/git.scm (commit-difference): Initialize VISITED to the closure of
OLD and EXCLUDED, as written in the docstring.
* tests/git.scm ("commit-difference, excluded commits"): Adjust
accordingly.
This commit is contained in:
Ludovic Courtès 2020-06-08 21:39:55 +02:00
parent 5d95ac9178
commit 72357e2170
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
2 changed files with 4 additions and 3 deletions

View File

@ -416,7 +416,9 @@ Essentially, this computes the set difference between the closure of NEW and
that of OLD." that of OLD."
(let loop ((commits (list new)) (let loop ((commits (list new))
(result '()) (result '())
(visited (commit-closure old (list->setq excluded)))) (visited (fold commit-closure
(setq)
(cons old excluded))))
(match commits (match commits
(() (()
(reverse result)) (reverse result))

View File

@ -119,8 +119,7 @@
(list commit3 commit4)) (list commit3 commit4))
(lset= eq? (commit-difference commit4 commit1 (list commit3)) (lset= eq? (commit-difference commit4 commit1 (list commit3))
(list commit4)) (list commit4))
(lset= eq? (commit-difference commit4 commit1 (list commit5)) (null? (commit-difference commit4 commit1 (list commit5))))))))
(list commit2 commit3 commit4)))))))
(unless (which (git-command)) (test-skip 1)) (unless (which (git-command)) (test-skip 1))
(test-equal "commit-relation" (test-equal "commit-relation"