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