author | Benoit Boissinot <benoit.boissinot@ens-lyon.org> |
Sun, 22 Aug 2010 18:29:30 +0200 | |
changeset 12018 | fd206fabc14f |
parent 12017 | 9182f434ec58 |
child 12019 | 456f0fed8f17 |
permissions | -rw-r--r-- |
11933
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
1 |
# Copyright 2010 Pradeepkumar Gayam <in3xes@gmail.com> |
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
2 |
# |
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
3 |
# Author(s): |
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
4 |
# Pradeepkumar Gayam <in3xes@gmail.com> |
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
5 |
# |
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
6 |
# This software may be used and distributed according to the terms of the |
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
7 |
# GNU General Public License version 2 or any later version. |
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
8 |
|
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
9 |
|
12017
9182f434ec58
contrib/compress: use hg API to compute the destination path
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12016
diff
changeset
|
10 |
from mercurial import hg, changegroup, localrepo |
12018
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
11 |
from mercurial.lock import release |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
12 |
import weakref |
11933
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
13 |
|
12015
73940fe84cbf
contrib/compress: remove unused variables
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
11933
diff
changeset
|
14 |
def compress(ui, repo, dest): |
12017
9182f434ec58
contrib/compress: use hg API to compute the destination path
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12016
diff
changeset
|
15 |
dest = hg.localpath(ui.expandpath(dest)) |
9182f434ec58
contrib/compress: use hg API to compute the destination path
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12016
diff
changeset
|
16 |
target = localrepo.instance(ui, dest, create=True) |
12018
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
17 |
|
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
18 |
tr = lock = tlock = None |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
19 |
try: |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
20 |
lock = repo.lock() |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
21 |
tlock = target.lock() |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
22 |
tr = target.transaction("compress") |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
23 |
trp = weakref.proxy(tr) |
11933
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
24 |
|
12018
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
25 |
src_cl = repo.changelog |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
26 |
tar_cl = target.changelog |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
27 |
changedfiles = set() |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
28 |
mmfs = {} |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
29 |
collect = changegroup.collector(src_cl, mmfs, changedfiles) |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
30 |
total = len(repo) |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
31 |
|
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
32 |
for r in src_cl: |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
33 |
p = [src_cl.node(i) for i in src_cl.parentrevs(r)] |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
34 |
nd = tar_cl.addrevision(src_cl.revision(src_cl.node(r)), trp, |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
35 |
src_cl.linkrev(r), p[0], p[1]) |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
36 |
collect(nd) |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
37 |
ui.progress(('adding changesets'), r, unit=('revisions'), |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
38 |
total=total) |
11933
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
39 |
|
12018
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
40 |
src_mnfst = repo.manifest |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
41 |
tar_mnfst = target.manifest |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
42 |
for r in src_mnfst: |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
43 |
p = [src_mnfst.node(i) for i in src_mnfst.parentrevs(r)] |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
44 |
tar_mnfst.addrevision(src_mnfst.revision(src_mnfst.node(r)), trp, |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
45 |
src_mnfst.linkrev(r), p[0], p[1]) |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
46 |
ui.progress(('adding manifest'), r, unit=('revisions'), |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
47 |
total=total) |
11933
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
48 |
|
12018
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
49 |
total = len(changedfiles) |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
50 |
for cnt, f in enumerate(changedfiles): |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
51 |
sf = repo.file(f) |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
52 |
tf = target.file(f) |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
53 |
for r in sf: |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
54 |
p = [sf.node(i) for i in sf.parentrevs(r)] |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
55 |
tf.addrevision(sf.revision(sf.node(r)), trp, sf.linkrev(r), |
11933
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
56 |
p[0], p[1]) |
12018
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
57 |
ui.progress(('adding files'), cnt, item=f, unit=('file'), |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
58 |
total=total) |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
59 |
tr.close() |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
60 |
finally: |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
61 |
if tr: |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
62 |
tr.release() |
fd206fabc14f
contrib/compress: proper lock handling
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
12017
diff
changeset
|
63 |
release(tlock, lock) |
11933
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
64 |
|
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
65 |
cmdtable = { |
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
66 |
"compress" : (compress, [], "DEST") |
293afcfb66a8
contrib: simple extension to practically convert a repo from tip delta to parentdelta
Pradeepkumar Gayam <in3xes@gmail.com>
parents:
diff
changeset
|
67 |
} |