##// END OF EJS Templates
contrib/compress: use store API instead of a collector
Benoit Boissinot -
r12019:456f0fed default
parent child Browse files
Show More
@@ -1,67 +1,66 b''
1 1 # Copyright 2010 Pradeepkumar Gayam <in3xes@gmail.com>
2 2 #
3 3 # Author(s):
4 4 # Pradeepkumar Gayam <in3xes@gmail.com>
5 5 #
6 6 # This software may be used and distributed according to the terms of the
7 7 # GNU General Public License version 2 or any later version.
8 8
9 9
10 from mercurial import hg, changegroup, localrepo
10 from mercurial import hg, localrepo
11 11 from mercurial.lock import release
12 12 import weakref
13 13
14 14 def compress(ui, repo, dest):
15 15 dest = hg.localpath(ui.expandpath(dest))
16 16 target = localrepo.instance(ui, dest, create=True)
17 17
18 18 tr = lock = tlock = None
19 19 try:
20 20 lock = repo.lock()
21 21 tlock = target.lock()
22 22 tr = target.transaction("compress")
23 23 trp = weakref.proxy(tr)
24 24
25 25 src_cl = repo.changelog
26 26 tar_cl = target.changelog
27 changedfiles = set()
28 mmfs = {}
29 collect = changegroup.collector(src_cl, mmfs, changedfiles)
30 27 total = len(repo)
31 28
32 29 for r in src_cl:
33 30 p = [src_cl.node(i) for i in src_cl.parentrevs(r)]
34 nd = tar_cl.addrevision(src_cl.revision(src_cl.node(r)), trp,
35 src_cl.linkrev(r), p[0], p[1])
36 collect(nd)
31 tar_cl.addrevision(src_cl.revision(src_cl.node(r)), trp,
32 src_cl.linkrev(r), p[0], p[1])
37 33 ui.progress(('adding changesets'), r, unit=('revisions'),
38 34 total=total)
39 35
40 36 src_mnfst = repo.manifest
41 37 tar_mnfst = target.manifest
42 38 for r in src_mnfst:
43 39 p = [src_mnfst.node(i) for i in src_mnfst.parentrevs(r)]
44 40 tar_mnfst.addrevision(src_mnfst.revision(src_mnfst.node(r)), trp,
45 41 src_mnfst.linkrev(r), p[0], p[1])
46 42 ui.progress(('adding manifest'), r, unit=('revisions'),
47 43 total=total)
48 44
49 total = len(changedfiles)
50 for cnt, f in enumerate(changedfiles):
45 # only keep indexes and filter "data/" prefix and ".i" suffix
46 datafiles = [fn[5:-2] for fn, f2, size in repo.store.datafiles()
47 if size and fn.endswith('.i')]
48 total = len(datafiles)
49 for cnt, f in enumerate(datafiles):
51 50 sf = repo.file(f)
52 51 tf = target.file(f)
53 52 for r in sf:
54 53 p = [sf.node(i) for i in sf.parentrevs(r)]
55 54 tf.addrevision(sf.revision(sf.node(r)), trp, sf.linkrev(r),
56 55 p[0], p[1])
57 56 ui.progress(('adding files'), cnt, item=f, unit=('file'),
58 57 total=total)
59 58 tr.close()
60 59 finally:
61 60 if tr:
62 61 tr.release()
63 62 release(tlock, lock)
64 63
65 64 cmdtable = {
66 65 "compress" : (compress, [], "DEST")
67 66 }
General Comments 0
You need to be logged in to leave comments. Login now