diff -r fe9c4d614600 -r e6e1884df298 mercurial/tags.py --- a/mercurial/tags.py Tue Mar 28 10:14:55 2017 +0200 +++ b/mercurial/tags.py Tue Mar 28 10:15:02 2017 +0200 @@ -129,6 +129,44 @@ entries.sort() return entries +def writediff(fp, difflist): + """write tags diff information to a file. + + Data are stored with a line based format: + + \n + + Action are defined as follow: + -R tag is removed, + +A tag is added, + -M tag is moved (old value), + +M tag is moved (new value), + + Example: + + +A 875517b4806a848f942811a315a5bce30804ae85 t5 + + See documentation of difftags output for details about the input. + """ + add = '+A %s %s\n' + remove = '-R %s %s\n' + updateold = '-M %s %s\n' + updatenew = '+M %s %s\n' + for tag, old, new in difflist: + # translate to hex + if old is not None: + old = hex(old) + if new is not None: + new = hex(new) + # write to file + if old is None: + fp.write(add % (new, tag)) + elif new is None: + fp.write(remove % (old, tag)) + else: + fp.write(updateold % (old, tag)) + fp.write(updatenew % (new, tag)) + def findglobaltags(ui, repo): '''Find global tags in a repo: return a tagsmap