diff --git a/hgext/histedit.py b/hgext/histedit.py --- a/hgext/histedit.py +++ b/hgext/histedit.py @@ -362,50 +362,12 @@ def _load(self): fp = self.repo.vfs('histedit-state', 'r') - lines = [l[:-1] for l in fp.readlines()] - - index = 0 - lines[index] # version number - index += 1 - - parentctxnode = node.bin(lines[index]) - index += 1 - - topmost = node.bin(lines[index]) - index += 1 - - keep = lines[index] == 'True' - index += 1 - - # Rules - rules = [] - rulelen = int(lines[index]) - index += 1 - for i in xrange(rulelen): - ruleaction = lines[index] - index += 1 - rule = lines[index] - index += 1 - rules.append((ruleaction, rule)) - - # Replacements - replacements = [] - replacementlen = int(lines[index]) - index += 1 - for i in xrange(replacementlen): - replacement = lines[index] - original = node.bin(replacement[:40]) - succ = [node.bin(replacement[i:i + 40]) for i in - range(40, len(replacement), 40)] - replacements.append((original, succ)) - index += 1 - - backupfile = lines[index] - index += 1 - + statedict = oldhisteditstate(fp) fp.close() - return parentctxnode, rules, keep, topmost, replacements, backupfile + return (statedict['parentctxnode'], statedict['rules'], + statedict['keep'], statedict['topmost'], + statedict['replacements'], statedict['backupfile']) def clear(self): if self.inprogress(): @@ -414,6 +376,51 @@ def inprogress(self): return self.repo.vfs.exists('histedit-state') +def oldhisteditstate(fp): + statedict = {} + lines = [l[:-1] for l in fp.readlines()] + + index = 0 + statedict['version'] = lines[index] # version number + index += 1 + + statedict['parentctxnode'] = node.bin(lines[index]) + index += 1 + + statedict['topmost'] = node.bin(lines[index]) + index += 1 + + statedict['keep'] = lines[index] == 'True' + index += 1 + + # Rules + rules = [] + rulelen = int(lines[index]) + index += 1 + for i in xrange(rulelen): + ruleaction = lines[index] + index += 1 + rule = lines[index] + index += 1 + rules.append((ruleaction, rule)) + + statedict['rules'] = rules + + # Replacements + replacements = [] + replacementlen = int(lines[index]) + index += 1 + for i in xrange(replacementlen): + replacement = lines[index] + original = node.bin(replacement[:40]) + succ = [node.bin(replacement[i:i + 40]) for i in + range(40, len(replacement), 40)] + replacements.append((original, succ)) + index += 1 + + statedict['replacements'] = replacements + statedict['backupfile'] = lines[index] + return statedict class histeditaction(object): def __init__(self, state, node):