[PATCH 10 of 10] phabricator: do not read a same revision twice
Augie Fackler
raf at durin42.com
Wed Jul 5 18:30:04 EDT 2017
On Tue, Jul 04, 2017 at 06:58:35PM -0700, Jun Wu wrote:
> # HG changeset patch
> # User Jun Wu <quark at fb.com>
> # Date 1499219548 25200
> # Tue Jul 04 18:52:28 2017 -0700
> # Node ID 6f1f74ecc788edf66ab9b0e8717724b97666f037
> # Parent 0e2c9cf54e09bacb4a019bc51693a9fecf1051a3
> # Available At https://bitbucket.org/quark-zju/hg-draft
> # hg pull https://bitbucket.org/quark-zju/hg-draft -r 6f1f74ecc788
> phabricator: do not read a same revision twice
Queued this one too, thanks
(That leaves only patch 9, where I had some questions)
>
> It's possible to set up non-linear dependencies in Phabricator like:
>
> o D4
> |\
> | o D3
> | |
> o | D2
> |/
> o D1
>
> The old `phabread` code will print D1 twice. This patch adds de-duplication
> to prevent that.
>
> Test Plan:
> Construct the above dependencies in a Phabricator test instance and make
> sure the old code prints D1 twice while the new code won't.
>
> diff --git a/contrib/phabricator.py b/contrib/phabricator.py
> --- a/contrib/phabricator.py
> +++ b/contrib/phabricator.py
> @@ -382,4 +382,5 @@ def querydrev(repo, params, stack=False)
> return prefetched[key]
>
> + visited = set()
> result = []
> queue = [params]
> @@ -387,4 +388,7 @@ def querydrev(repo, params, stack=False)
> params = queue.pop()
> drev = fetch(params)
> + if drev[r'id'] in visited:
> + continue
> + visited.add(drev[r'id'])
> result.append(drev)
> if stack:
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at mercurial-scm.org
> https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list