# # # patch "tracvc/mtn/automate.py" # from [0738e3db2fa627c03867f68e054fef5a5e26d404] # to [cd549cdc1a713a56ca4dce3e3ad8650c6e2f6d56] # ============================================================ --- tracvc/mtn/automate.py 0738e3db2fa627c03867f68e054fef5a5e26d404 +++ tracvc/mtn/automate.py cd549cdc1a713a56ca4dce3e3ad8650c6e2f6d56 @@ -261,34 +261,42 @@ changeset = [] if status != 0: return changeset renames = {} + oldrev = None + + def add_slash(path): return '/' + path + + def append_edit(path, oldrev): + path = add_slash(path) + if path in renames: + (oldpath, oldrev_for_path) = renames[path] + changeset.append((path, 'file', 'edit', oldpath, oldrev_for_path)) + else: + changeset.append((path, 'file', 'edit', path, oldrev)) + for stanza in basic_io.get_stanzas(result): entry = basic_io.get_hash_from_stanza(stanza) if entry.has_key('old_revision'): # oldrev is in effect until overwritten by a later stanza oldrev = entry['old_revision'] elif entry.has_key('add_dir'): - path = '/' + entry['add_dir'] + path = add_slash(entry['add_dir']) changeset.append((path, 'dir', 'add', None, None)) elif entry.has_key('add_file'): - path = '/' + entry['add_file'] + path = add_slash(entry['add_file']) changeset.append((path, 'file', 'add', None, None)) elif entry.has_key('delete'): - path = '/' + entry['delete'] + path = add_slash(entry['delete']) changeset.append((None, None, 'delete', path, oldrev)) elif entry.has_key('rename'): - oldpath = '/' + entry['rename'] - newpath = '/' + entry['to'] + oldpath = add_slash(entry['rename']) + newpath = add_slash(entry['to']) # remember renames for edits renames[newpath] = (oldpath, oldrev) changeset.append((newpath, None, 'move', oldpath, oldrev)) elif entry.has_key('patch'): - path = '/' + entry['patch'] - if path in renames: - (oldpath, oldrev_for_path) = renames[path] - changeset.append((path, 'file', 'edit', oldpath, oldrev_for_path)) - else: - changeset.append((path, 'file', 'edit', path, oldrev)) - # fixme: add clear and set + append_edit(entry['patch'], oldrev) + # fixme: what about 'set' and 'clear'? These are edits, + # but not if applied to new files. return changeset def branches(self): @@ -316,3 +324,4 @@ for match in TAGS_RULE.finditer(self.list.get_list("tags")): tags.append((self._u(match.group('tag')), match.group('rev'))) return tags +