author | Pierre-Yves.David@ens-lyon.org |
Sun, 15 Jul 2012 14:42:21 +0200 | |
branch | stable |
changeset 366 | c67af39d1ae9 |
parent 289 | 9bb4217ddfce |
child 394 | f2168d0b5700 |
permissions | -rw-r--r-- |
228
5a17c0d41a00
proof-read documentation and docstrings
Nicolas Chauvat <nicolas.chauvat@logilab.fr>
parents:
220
diff
changeset
|
1 |
"""synchronize patches queues and evolving changesets""" |
153
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
2 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
3 |
import re |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
4 |
from cStringIO import StringIO |
220
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
5 |
import json |
153
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
6 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
7 |
from mercurial.i18n import _ |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
8 |
from mercurial import commands |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
9 |
from mercurial import patch |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
10 |
from mercurial import util |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
11 |
from mercurial.node import nullid, hex, short, bin |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
12 |
from mercurial import cmdutil |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
13 |
from mercurial import hg |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
14 |
from mercurial import scmutil |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
15 |
from mercurial import error |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
16 |
from mercurial import extensions |
220
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
17 |
from mercurial import phases |
153
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
18 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
19 |
### old compat code |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
20 |
############################# |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
21 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
22 |
BRANCHNAME="qsubmit2" |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
23 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
24 |
### new command |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
25 |
############################# |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
26 |
cmdtable = {} |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
27 |
command = cmdutil.command(cmdtable) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
28 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
29 |
@command('^qsync|sync', |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
30 |
[ |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
31 |
('a', 'review-all', False, _('mark all touched patches ready for review (no editor)')), |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
32 |
], |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
33 |
'') |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
34 |
def cmdsync(ui, repo, **opts): |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
35 |
'''Export draft changeset as mq patch in a mq patches repository commit. |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
36 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
37 |
This command get all changesets in draft phase and create an mq changeset: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
38 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
39 |
* on a "qsubmit2" branch (based on the last changeset) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
40 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
41 |
* one patch per draft changeset |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
42 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
43 |
* a series files listing all generated patch |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
44 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
45 |
* qsubmitdata holding useful information |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
46 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
47 |
It does use obsolete relation to update patches that already existing in the qsubmit2 branch. |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
48 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
49 |
Already existing patch which became public, draft or got killed are remove from the mq repo. |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
50 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
51 |
Patch name are generated using the summary line for changeset description. |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
52 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
53 |
.. warning:: Series files is ordered topologically. So two series with |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
54 |
interleaved changeset will appear interleaved. |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
55 |
''' |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
56 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
57 |
review = 'edit' |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
58 |
if opts['review_all']: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
59 |
review = 'all' |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
60 |
mqrepo = repo.mq.qrepo() |
251
a60d11973ff3
[qsync] abort properly of a patches repository does not exists
David Douard <david.douard@logilab.fr>
parents:
249
diff
changeset
|
61 |
if mqrepo is None: |
a60d11973ff3
[qsync] abort properly of a patches repository does not exists
David Douard <david.douard@logilab.fr>
parents:
249
diff
changeset
|
62 |
raise util.Abort('No patches repository') |
a60d11973ff3
[qsync] abort properly of a patches repository does not exists
David Douard <david.douard@logilab.fr>
parents:
249
diff
changeset
|
63 |
|
153
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
64 |
try: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
65 |
parent = mqrepo[BRANCHNAME] |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
66 |
except error.RepoLookupError: |
220
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
67 |
parent = initqsubmit(mqrepo) |
153
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
68 |
store, data, touched = fillstore(repo, parent) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
69 |
if not touched: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
70 |
raise util.Abort('Nothing changed') |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
71 |
files = ['qsubmitdata', 'series'] + touched |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
72 |
# mark some as ready for review |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
73 |
message = 'qsubmit commit\n\n' |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
74 |
review_list = [] |
220
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
75 |
applied_list = [] |
153
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
76 |
if review: |
220
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
77 |
olddata = get_old_data(parent) |
289
9bb4217ddfce
[qsync] fix: 'newerversion' expect node id, not hexid
David Douard <david.douard@logilab.fr>
parents:
251
diff
changeset
|
78 |
oldfiles = dict([(name, bin(ctxhex)) for ctxhex, name in olddata]) |
220
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
79 |
|
153
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
80 |
for patch_name in touched: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
81 |
try: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
82 |
store.getfile(patch_name) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
83 |
review_list.append(patch_name) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
84 |
except IOError: |
220
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
85 |
oldnode = oldfiles[patch_name] |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
86 |
obsolete = extensions.find('obsolete') |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
87 |
newnodes = obsolete.newerversion(repo, oldnode) |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
88 |
if newnodes: |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
89 |
newnodes = [n for n in newnodes if n] # remove killing |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
90 |
if not newnodes: |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
91 |
# changeset has been killed (eg. reject) |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
92 |
pass |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
93 |
else: |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
94 |
assert len(newnodes) == 1 # conflict!!! |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
95 |
newnode = newnodes[0] |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
96 |
assert len(newnode) == 1 # split unsupported for now |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
97 |
newnode = list(newnode)[0] |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
98 |
# XXX unmanaged case where a cs is obsoleted by an unavailable one |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
99 |
#if newnode.node() not in repo.changelog.nodemap: |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
100 |
# raise util.Abort('%s is obsoleted by an unknown node %s'% (oldnode, newnode)) |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
101 |
ctx = repo[newnode] |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
102 |
if ctx.phase() == phases.public: |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
103 |
# applied |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
104 |
applied_list.append(patch_name) |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
105 |
elif ctx.phase() == phases.secret: |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
106 |
# already exported changeset is now secret |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
107 |
repo.ui.warn("An already exported changeset is now secret!!!") |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
108 |
else: |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
109 |
# draft |
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
110 |
assert False, "Should be exported" |
153
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
111 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
112 |
if review: |
249
bd0917068cc7
qsync: fix mq commit message generation
David Douard <david.douard@logilab.fr>
parents:
228
diff
changeset
|
113 |
if applied_list: |
bd0917068cc7
qsync: fix mq commit message generation
David Douard <david.douard@logilab.fr>
parents:
228
diff
changeset
|
114 |
message += '\n'.join('* applied %s' % x for x in applied_list) + '\n' |
bd0917068cc7
qsync: fix mq commit message generation
David Douard <david.douard@logilab.fr>
parents:
228
diff
changeset
|
115 |
if review_list: |
bd0917068cc7
qsync: fix mq commit message generation
David Douard <david.douard@logilab.fr>
parents:
228
diff
changeset
|
116 |
message += '\n'.join('* %s ready for review' % x for x in review_list) + '\n' |
153
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
117 |
memctx = patch.makememctx(mqrepo, (parent.node(), nullid), |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
118 |
message, |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
119 |
None, |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
120 |
None, |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
121 |
parent.branch(), files, store, |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
122 |
editor=None) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
123 |
if review == 'edit': |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
124 |
memctx._text = cmdutil.commitforceeditor(mqrepo, memctx, []) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
125 |
mqrepo.savecommitmessage(memctx.description()) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
126 |
n = memctx.commit() |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
127 |
return 0 |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
128 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
129 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
130 |
def makename(ctx): |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
131 |
"""create a patch name form a changeset""" |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
132 |
descsummary = ctx.description().splitlines()[0] |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
133 |
descsummary = re.sub(r'\s+', '_', descsummary) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
134 |
descsummary = re.sub(r'\W+', '', descsummary) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
135 |
if len(descsummary) > 45: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
136 |
descsummary = descsummary[:42] + '.' |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
137 |
return '%s-%s.diff' % (ctx.branch().upper(), descsummary) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
138 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
139 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
140 |
def get_old_data(mqctx): |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
141 |
"""read qsubmit data to fetch previous export data |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
142 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
143 |
get old data from the content of an mq commit""" |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
144 |
try: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
145 |
old_data = mqctx['qsubmitdata'] |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
146 |
return json.loads(old_data.data()) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
147 |
except error.LookupError: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
148 |
return [] |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
149 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
150 |
def get_current_data(repo): |
220
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
151 |
"""Return what would be exported if no previous data exists""" |
153
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
152 |
data = [] |
195
ccbadfae1d06
ignore merge in qsync
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
153
diff
changeset
|
153 |
for ctx in repo.set('draft() - (obsolete() + merge())'): |
153
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
154 |
name = makename(ctx) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
155 |
data.append([ctx.hex(), makename(ctx)]) |
195
ccbadfae1d06
ignore merge in qsync
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
153
diff
changeset
|
156 |
merges = repo.revs('draft() and merge()') |
ccbadfae1d06
ignore merge in qsync
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
153
diff
changeset
|
157 |
if merges: |
ccbadfae1d06
ignore merge in qsync
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
153
diff
changeset
|
158 |
repo.ui.warn('ignoring %i merge\n' % len(merges)) |
153
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
159 |
return data |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
160 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
161 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
162 |
def patchmq(repo, store, olddata, newdata): |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
163 |
"""export the mq patches and return all useful data to be exported""" |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
164 |
finaldata = [] |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
165 |
touched = set() |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
166 |
currentdrafts = set(d[0] for d in newdata) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
167 |
usednew = set() |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
168 |
usedold = set() |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
169 |
obsolete = extensions.find('obsolete') |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
170 |
for oldhex, oldname in olddata: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
171 |
if oldhex in usedold: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
172 |
continue # no duplicate |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
173 |
usedold.add(oldhex) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
174 |
oldname = str(oldname) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
175 |
oldnode = bin(oldhex) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
176 |
newnodes = obsolete.newerversion(repo, oldnode) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
177 |
if newnodes: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
178 |
newnodes = [n for n in newnodes if n] # remove killing |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
179 |
if len(newnodes) > 1: |
201
94360b577857
qsync: display short node repr on error
David Douard <david.douard@logilab.fr>
parents:
195
diff
changeset
|
180 |
newnodes = [short(nodes[0]) for nodes in newnodes] |
153
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
181 |
raise util.Abort('%s have more than one newer version: %s'% (oldname, newnodes)) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
182 |
if newnodes: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
183 |
# else, changeset have been killed |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
184 |
newnode = list(newnodes)[0][0] |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
185 |
ctx = repo[newnode] |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
186 |
if ctx.hex() != oldhex and ctx.phase(): |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
187 |
fp = StringIO() |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
188 |
cmdutil.export(repo, [ctx.rev()], fp=fp) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
189 |
data = fp.getvalue() |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
190 |
store.setfile(oldname, data, (None, None)) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
191 |
finaldata.append([ctx.hex(), oldname]) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
192 |
usednew.add(ctx.hex()) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
193 |
touched.add(oldname) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
194 |
continue |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
195 |
if oldhex in currentdrafts: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
196 |
# else changeset is now public or secret |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
197 |
finaldata.append([oldhex, oldname]) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
198 |
usednew.add(ctx.hex()) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
199 |
continue |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
200 |
touched.add(oldname) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
201 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
202 |
for newhex, newname in newdata: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
203 |
if newhex in usednew: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
204 |
continue |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
205 |
newnode = bin(newhex) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
206 |
ctx = repo[newnode] |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
207 |
fp = StringIO() |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
208 |
cmdutil.export(repo, [ctx.rev()], fp=fp) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
209 |
data = fp.getvalue() |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
210 |
store.setfile(newname, data, (None, None)) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
211 |
finaldata.append([ctx.hex(), newname]) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
212 |
touched.add(newname) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
213 |
# sort by branchrev number |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
214 |
finaldata.sort(key=lambda x: sort_key(repo[x[0]])) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
215 |
# sort touched too (ease review list) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
216 |
stouched = [f[1] for f in finaldata if f[1] in touched] |
220
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
217 |
stouched += [x for x in touched if x not in stouched] |
153
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
218 |
return finaldata, stouched |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
219 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
220 |
def sort_key(ctx): |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
221 |
"""ctx sort key: (branch, rev)""" |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
222 |
return (ctx.branch(), ctx.rev()) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
223 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
224 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
225 |
def fillstore(repo, basemqctx): |
220
ff3158d0d7e8
qsync: support for synchronisation with applied patches from outer space and more
David Douard <david.douard@logilab.fr>
parents:
216
diff
changeset
|
226 |
"""fill store with patch data""" |
153
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
227 |
olddata = get_old_data(basemqctx) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
228 |
newdata = get_current_data(repo) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
229 |
store = patch.filestore() |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
230 |
try: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
231 |
data, touched = patchmq(repo, store, olddata, newdata) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
232 |
# put all name in the series |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
233 |
series ='\n'.join(d[1] for d in data) + '\n' |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
234 |
store.setfile('series', series, (False, False)) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
235 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
236 |
# export data to ease futur work |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
237 |
store.setfile('qsubmitdata', json.dumps(data, indent=True), |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
238 |
(False, False)) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
239 |
finally: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
240 |
store.close() |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
241 |
return store, data, touched |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
242 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
243 |
|
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
244 |
def initqsubmit(mqrepo): |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
245 |
"""create initial qsubmit branch""" |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
246 |
store = patch.filestore() |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
247 |
try: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
248 |
files = set() |
216
9400e234b3d7
qsync: add a warning file in qsync changeset.
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
201
diff
changeset
|
249 |
store.setfile('DO-NOT-EDIT-THIS-WORKING-COPY-BY-HAND', 'WE WARNED YOU!', (False, False)) |
153
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
250 |
store.setfile('.hgignore', '^status$\n', (False, False)) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
251 |
memctx = patch.makememctx(mqrepo, (nullid, nullid), |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
252 |
'qsubmit init', |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
253 |
None, |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
254 |
None, |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
255 |
BRANCHNAME, ('.hgignore',), store, |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
256 |
editor=None) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
257 |
mqrepo.savecommitmessage(memctx.description()) |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
258 |
n = memctx.commit() |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
259 |
finally: |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
260 |
store.close() |
c088f503cc97
add qsync extension to mutable history
Pierre-Yves David <pierre-yves.david@logilab.fr>
parents:
diff
changeset
|
261 |
return mqrepo[n] |