author | Pierre-Yves David <pierre-yves.david@octobus.net> |
Fri, 05 Jan 2018 04:37:19 +0100 | |
changeset 3369 | c7fbb79cd366 |
parent 3368 | 7310f3ef6dee |
child 3426 | be284a34b822 |
permissions | -rw-r--r-- |
2047
ce39d0f9976d
serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
1 |
# Various utility function for the evolve extension |
ce39d0f9976d
serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
2 |
# |
ce39d0f9976d
serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
3 |
# Copyright 2017 Pierre-Yves David <pierre-yves.david@ens-lyon.org> |
ce39d0f9976d
serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
4 |
# |
ce39d0f9976d
serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
5 |
# This software may be used and distributed according to the terms of the |
ce39d0f9976d
serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
6 |
# GNU General Public License version 2 or any later version. |
ce39d0f9976d
serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
7 |
|
3309
09db38b34cb9
parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2763
diff
changeset
|
8 |
from mercurial.node import nullrev |
09db38b34cb9
parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2763
diff
changeset
|
9 |
|
2763
4a5b0c373e65
commands: move the touch to the 'evocommands' module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2125
diff
changeset
|
10 |
shorttemplate = "[{label('evolve.rev', rev)}] {desc|firstline}\n" |
4a5b0c373e65
commands: move the touch to the 'evocommands' module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2125
diff
changeset
|
11 |
|
2047
ce39d0f9976d
serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
12 |
def obsexcmsg(ui, message, important=False): |
ce39d0f9976d
serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
13 |
verbose = ui.configbool('experimental', 'verbose-obsolescence-exchange', |
ce39d0f9976d
serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
14 |
False) |
ce39d0f9976d
serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
15 |
if verbose: |
ce39d0f9976d
serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
16 |
message = 'OBSEXC: ' + message |
ce39d0f9976d
serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
17 |
if important or verbose: |
ce39d0f9976d
serveronly: give the sub extension a way to access to the 'evolve' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
diff
changeset
|
18 |
ui.status(message) |
2054
f9d65d24b9f9
discovery: split discovery related code in 'obsdiscovery'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2047
diff
changeset
|
19 |
|
f9d65d24b9f9
discovery: split discovery related code in 'obsdiscovery'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2047
diff
changeset
|
20 |
def obsexcprg(ui, *args, **kwargs): |
f9d65d24b9f9
discovery: split discovery related code in 'obsdiscovery'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2047
diff
changeset
|
21 |
topic = 'obsmarkers exchange' |
f9d65d24b9f9
discovery: split discovery related code in 'obsdiscovery'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2047
diff
changeset
|
22 |
if ui.configbool('experimental', 'verbose-obsolescence-exchange', False): |
f9d65d24b9f9
discovery: split discovery related code in 'obsdiscovery'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2047
diff
changeset
|
23 |
topic = 'OBSEXC' |
f9d65d24b9f9
discovery: split discovery related code in 'obsdiscovery'
Pierre-Yves David <pierre-yves.david@ens-lyon.org>
parents:
2047
diff
changeset
|
24 |
ui.progress(topic, *args, **kwargs) |
3309
09db38b34cb9
parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2763
diff
changeset
|
25 |
|
09db38b34cb9
parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2763
diff
changeset
|
26 |
def filterparents(parents): |
09db38b34cb9
parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2763
diff
changeset
|
27 |
"""filter nullrev parents |
09db38b34cb9
parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2763
diff
changeset
|
28 |
|
09db38b34cb9
parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2763
diff
changeset
|
29 |
(and other crazyness)""" |
09db38b34cb9
parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2763
diff
changeset
|
30 |
p1, p2 = parents |
09db38b34cb9
parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2763
diff
changeset
|
31 |
if p1 == nullrev and p2 == nullrev: |
09db38b34cb9
parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2763
diff
changeset
|
32 |
return () |
09db38b34cb9
parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2763
diff
changeset
|
33 |
elif p1 != nullrev and (p2 == nullrev or p1 == p2): |
09db38b34cb9
parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2763
diff
changeset
|
34 |
return (p1,) |
09db38b34cb9
parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2763
diff
changeset
|
35 |
elif p1 == nullrev and p2 != nullrev: |
09db38b34cb9
parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2763
diff
changeset
|
36 |
return (p2,) |
09db38b34cb9
parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2763
diff
changeset
|
37 |
else: |
09db38b34cb9
parents: add a utility to filter parents
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
2763
diff
changeset
|
38 |
return parents |
3340
fd90e73bf79a
caches: factorise the cache warming check
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3309
diff
changeset
|
39 |
|
3366
83b372eceb81
caches: pass the transaction to the "shouldwarncache" logic
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3346
diff
changeset
|
40 |
def shouldwarmcache(repo, tr): |
3340
fd90e73bf79a
caches: factorise the cache warming check
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3309
diff
changeset
|
41 |
configbool = repo.ui.configbool |
3368
7310f3ef6dee
caches: add a 'auto' option for obshashrange cache warming
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3367
diff
changeset
|
42 |
config = repo.ui.config |
7310f3ef6dee
caches: add a 'auto' option for obshashrange cache warming
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3367
diff
changeset
|
43 |
desc = getattr(tr, 'desc', '') |
7310f3ef6dee
caches: add a 'auto' option for obshashrange cache warming
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3367
diff
changeset
|
44 |
|
7310f3ef6dee
caches: add a 'auto' option for obshashrange cache warming
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3367
diff
changeset
|
45 |
autocase = tr is None or desc.startswith('push') or desc.startswith('serve') |
7310f3ef6dee
caches: add a 'auto' option for obshashrange cache warming
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3367
diff
changeset
|
46 |
autocache = config('experimental', 'obshashrange.warm-cache', |
3369
c7fbb79cd366
caches: switch to 'auto' warming by default
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3368
diff
changeset
|
47 |
'auto') == 'auto' |
3368
7310f3ef6dee
caches: add a 'auto' option for obshashrange cache warming
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3367
diff
changeset
|
48 |
if autocache: |
7310f3ef6dee
caches: add a 'auto' option for obshashrange cache warming
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3367
diff
changeset
|
49 |
warm = autocase |
7310f3ef6dee
caches: add a 'auto' option for obshashrange cache warming
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3367
diff
changeset
|
50 |
else: |
3369
c7fbb79cd366
caches: switch to 'auto' warming by default
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3368
diff
changeset
|
51 |
# note: we should not get to the default case |
3368
7310f3ef6dee
caches: add a 'auto' option for obshashrange cache warming
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3367
diff
changeset
|
52 |
warm = configbool('experimental', 'obshashrange.warm-cache', True) |
3367
c26dc74b828d
caches: extract some config reading in 'shouldwarmcache'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3366
diff
changeset
|
53 |
|
3340
fd90e73bf79a
caches: factorise the cache warming check
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3309
diff
changeset
|
54 |
if not configbool('experimental', 'obshashrange', False): |
fd90e73bf79a
caches: factorise the cache warming check
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3309
diff
changeset
|
55 |
return False |
3367
c26dc74b828d
caches: extract some config reading in 'shouldwarmcache'
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3366
diff
changeset
|
56 |
if not warm: |
3340
fd90e73bf79a
caches: factorise the cache warming check
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3309
diff
changeset
|
57 |
return False |
3346
f4e28b781143
stablerange: use mergepoint based algorithm for the official stable range
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3340
diff
changeset
|
58 |
maxrevs = repo.ui.configint('experimental', 'obshashrange.max-revs', None) |
f4e28b781143
stablerange: use mergepoint based algorithm for the official stable range
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3340
diff
changeset
|
59 |
if maxrevs is not None and maxrevs < len(repo.unfiltered()): |
f4e28b781143
stablerange: use mergepoint based algorithm for the official stable range
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3340
diff
changeset
|
60 |
return False |
3340
fd90e73bf79a
caches: factorise the cache warming check
Pierre-Yves David <pierre-yves.david@octobus.net>
parents:
3309
diff
changeset
|
61 |
return True |