comparison svncommand.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 a9c15cae50e5
children ef5d7a7aabb0
comparison
equal deleted inserted replaced
33:a9c15cae50e5 34:50d55c3e0d85
62 f = open(os.path.join(hg_repo_path, '.hg', 'localtags'), 'w') 62 f = open(os.path.join(hg_repo_path, '.hg', 'localtags'), 'w')
63 for tag, source in tag_info.iteritems(): 63 for tag, source in tag_info.iteritems():
64 source_ha = hg_editor.get_parent_revision(source[1]+1, source[0]) 64 source_ha = hg_editor.get_parent_revision(source[1]+1, source[0])
65 f.write('%s tag/%s\n' % (node.hex(source_ha), tag)) 65 f.write('%s tag/%s\n' % (node.hex(source_ha), tag))
66 66
67 def parse_revmap(revmap_filename):
68 revmap = {}
69 f = open(revmap_filename)
70 for l in f:
71 revnum, node_hash, branch = l.split(' ', 2)
72 if branch == '\n':
73 branch = None
74 else:
75 branch = branch[:-1]
76 revmap[int(revnum), branch] = node.bin(node_hash)
77 f.close()
78 return revmap
79
80 @register_subcommand('up') 67 @register_subcommand('up')
81 def update(ui, args, repo, clean=False, **opts): 68 def update(ui, args, repo, clean=False, **opts):
82 """Update to a specified Subversion revision number. 69 """Update to a specified Subversion revision number.
83 """ 70 """
84 assert len(args) == 1 71 assert len(args) == 1
85 rev = int(args[0]) 72 rev = int(args[0])
86 path = os.path.join(repo.path, 'svn', 'rev_map') 73 path = os.path.join(repo.path, 'svn', 'rev_map')
87 answers = [] 74 answers = []
88 for k,v in parse_revmap(path).iteritems(): 75 for k,v in util.parse_revmap(path).iteritems():
89 if k[0] == rev: 76 if k[0] == rev:
90 answers.append((v, k[1])) 77 answers.append((v, k[1]))
91 if len(answers) == 1: 78 if len(answers) == 1:
92 if clean: 79 if clean:
93 return hg.clean(repo, answers[0][0]) 80 return hg.clean(repo, answers[0][0])
150 unknown=True) == ([], [], [], [], [], [], []) 137 unknown=True) == ([], [], [], [], [], [], [])
151 start_rev = 0 138 start_rev = 0
152 args = list(args) 139 args = list(args)
153 if args: 140 if args:
154 start_rev = int(args.pop(0)) 141 start_rev = int(args.pop(0))
155 revmap = parse_revmap(os.path.join(repo.path, 'svn', 'rev_map')) 142 revmap = util.parse_revmap(os.path.join(repo.path, 'svn', 'rev_map'))
156 revs = sorted(revmap.keys()) 143 revs = sorted(revmap.keys())
157 for revnum, br in revs: 144 for revnum, br in revs:
158 if revnum < start_rev: 145 if revnum < start_rev:
159 continue 146 continue
160 res = verify_revision(ui, [revnum], repo, force=True) 147 res = verify_revision(ui, [revnum], repo, force=True)