Mercurial > hgsubversion
comparison util.py @ 34:50d55c3e0d85
Some refactors of the previous change, including transparent upgrade of old-style pickled dictionaries.
author | Augie Fackler <durin42@gmail.com> |
---|---|
date | Fri, 17 Oct 2008 11:03:52 -0500 |
parents | 1267b1944cd7 |
children | b3c7b844b782 |
comparison
equal
deleted
inserted
replaced
33:a9c15cae50e5 | 34:50d55c3e0d85 |
---|---|
1 import os | 1 import os |
2 import pickle | |
2 import shutil | 3 import shutil |
4 | |
5 from mercurial import node | |
3 | 6 |
4 svn_subcommands = { } | 7 svn_subcommands = { } |
5 | 8 |
6 def register_subcommand(name): | 9 def register_subcommand(name): |
7 def inner(fn): | 10 def inner(fn): |
16 f = os.path.join(hg_wc_path, f) | 19 f = os.path.join(hg_wc_path, f) |
17 if os.path.isdir(f): | 20 if os.path.isdir(f): |
18 shutil.rmtree(f) | 21 shutil.rmtree(f) |
19 else: | 22 else: |
20 os.remove(f) | 23 os.remove(f) |
24 | |
25 REVMAP_FILE_VERSION = 1 | |
26 def parse_revmap(revmap_filename): | |
27 revmap = {} | |
28 f = open(revmap_filename) | |
29 try: | |
30 # Remove compat code after March of 2009. That should be more than long | |
31 # enough. | |
32 revmap = pickle.load(f) | |
33 f.close() | |
34 f = open(revmap_filename, 'w') | |
35 f.write('1\n') | |
36 for key, value in sorted(revmap.items()): | |
37 f.write('%s %s %s\n' % (str(key[0]), node.hex(value), key[1] or '')) | |
38 f.close() | |
39 except: | |
40 f.close() | |
41 f = open(revmap_filename) | |
42 ver = int(f.readline()) | |
43 if ver == 1: | |
44 for l in f: | |
45 revnum, node_hash, branch = l.split(' ', 2) | |
46 if branch == '\n': | |
47 branch = None | |
48 else: | |
49 branch = branch[:-1] | |
50 revmap[int(revnum), branch] = node.bin(node_hash) | |
51 f.close() | |
52 else: | |
53 print ('Your revmap was made by a newer version of hgsubversion.' | |
54 ' Please upgrade.') | |
55 raise NotImplementedError | |
56 return revmap | |
57 |