[PATCH] discovery: factor out calculation of heads to not warn about
Ryan McElroy
rm at fb.com
Fri Nov 6 11:47:36 CST 2015
On 11/5/2015 6:37 AM, Augie Fackler wrote:
> On Wed, Nov 04, 2015 at 06:18:49PM -0800, Ryan McElroy wrote:
>> # HG changeset patch
>> # User Ryan McElroy <rmcelroy at fb.com>
>> # Date 1446688886 28800
>> # Wed Nov 04 18:01:26 2015 -0800
>> # Node ID abe2392dfbee03f82c3e47974e929b3dbddb6ec3
>> # Parent f9984f76fd90e439221425d751e29bae17bec995
>> discovery: factor out calculation of heads to not warn about
> Queued, with a typo fix (towrds) in the log message. Thanks!
Crap I sent an unfixed version of this (I had it fixed in my workdir so
tests passed but forgot to amend, so this is broken). I'll send a v2
shortly (will also fix commit message).
>
>> In addition to taking a step towrds getting an unreasonably large function
>> factored into smaller, more manageable functions, this will allow extensions
>> such as remotenames have more control over what pushes are allowed or not.
>>
>> diff --git a/mercurial/discovery.py b/mercurial/discovery.py
>> --- a/mercurial/discovery.py
>> +++ b/mercurial/discovery.py
>> @@ -238,6 +238,23 @@ def _oldheadssummary(repo, remoteheads,
>> unsynced = set()
>> return {None: (oldheads, newheads, unsynced)}
>>
>> +def _nowarnheads(repo, remote):
>> + # Compute newly pushed bookmarks. We don't warn about bookmarked heads.
>> + localbookmarks = repo._bookmarks
>> + remotebookmarks = remote.listkeys('bookmarks')
>> + bookmarkedheads = set()
>> + for bm in localbookmarks:
>> + rnode = remotebookmarks.get(bm)
>> + if rnode and rnode in repo:
>> + lctx, rctx = repo[bm], repo[rnode]
>> + if bookmarks.validdest(repo, rctx, lctx):
>> + bookmarkedheads.add(lctx.node())
>> + else:
>> + if bm in newbookmarks and bm not in remotebookmarks:
>> + bookmarkedheads.add(repo[bm].node())
>> +
>> + return bookmarkedheads
>> +
>> def checkheads(repo, remote, outgoing, remoteheads, newbranch=False, inc=False,
>> newbookmarks=[]):
>> """Check that a push won't add any outgoing head
>> @@ -268,19 +285,8 @@ def checkheads(repo, remote, outgoing, r
>> hint=_("use 'hg push --new-branch' to create"
>> " new remote branches"))
>>
>> - # 2. Compute newly pushed bookmarks. We don't warn about bookmarked heads.
>> - localbookmarks = repo._bookmarks
>> - remotebookmarks = remote.listkeys('bookmarks')
>> - bookmarkedheads = set()
>> - for bm in localbookmarks:
>> - rnode = remotebookmarks.get(bm)
>> - if rnode and rnode in repo:
>> - lctx, rctx = repo[bm], repo[rnode]
>> - if bookmarks.validdest(repo, rctx, lctx):
>> - bookmarkedheads.add(lctx.node())
>> - else:
>> - if bm in newbookmarks and bm not in remotebookmarks:
>> - bookmarkedheads.add(repo[bm].node())
>> + # 2. Find heads that we need not warn about
>> + nowarnheads = _nowarnheads(repo, remote)
>>
>> # 3. Check for new heads.
>> # If there are more heads after the push than before, a suitable
>> @@ -366,7 +372,7 @@ def checkheads(repo, remote, outgoing, r
>> " pushing new heads")
>> elif len(newhs) > len(oldhs):
>> # remove bookmarked or existing remote heads from the new heads list
>> - dhs = sorted(newhs - bookmarkedheads - oldhs)
>> + dhs = sorted(newhs - nowarnheads - oldhs)
>> if dhs:
>> if errormsg is None:
>> if branch not in ('default', None):
>> _______________________________________________
>> Mercurial-devel mailing list
>> Mercurial-devel at selenic.com
>> https://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list