# # # patch "TODO" # from [c5efe0fd195a8bb369f40218c69aebf4b0cb175f] # to [4c936ee41b3775920b24300ec4645bb8f88f1a6b] # # patch "monotone.py" # from [2ff57530c29ccc9e7bef17975925d0be8ef48981] # to [293fd3e671dabca2056a9b5ad9471e01249f6a43] # # patch "revision.psp" # from [eaa0dfc96d1f9c9e93878cb589a87680cfcede9c] # to [8b65ca428414125f517b6a0332d04ef450541bcc] # ============================================================ --- TODO c5efe0fd195a8bb369f40218c69aebf4b0cb175f +++ TODO 4c936ee41b3775920b24300ec4645bb8f88f1a6b @@ -1,20 +1,6 @@ BUGS: - * diff links only link to one of the ancestor revisions; there should be - a link to each ancestor in which the file is different from the revision - we are displaying - - * for some reason enscript on MacOS isn't doing colour highlighting - - * seen at: - http://glamdring.local/~grahame/viewmtn/revision.psp?id=ea14ea3aadb3a02ffe5041e0a98db15306cbcd81 - Add file client/plugins/debiansecurity.py with revision [client/plugins/address@hidden - - * seen at: - http://glamdring.local/~grahame/viewmtn/manifest.psp?id=b80c8b2f6faa12d11cde7ccb967a1bf90ff67190&path=client - some changes not being found in the history, and this case not being handled that well - TODO: * support for translation, and see if we can get some people to help with that @@ -25,6 +11,8 @@ * a revision selector interface - make sure it prints out the revision selector to the person, so that they can use it on the command line later + ** make this AJAX; show the results *as the person types* ** + ** this feature would blow people out of the water ** * optionally pop-up a window (or some sort of AJAX box lurking someplace) which updates with the commands that have been run - useful for debugging, @@ -40,10 +28,7 @@ applicable) to give context that the image being shown is part of a large overall graph. - * Show information when mousing over long hex strings. Also, it might - be more readable if the hex strings are in [ ] as they tend to merge - together when looking at them. This is how MT presents the data a lot - of the time, anyway. + * Show information when mousing over long hex strings. * Colour and format diffs (files are already done). ============================================================ --- monotone.py 2ff57530c29ccc9e7bef17975925d0be8ef48981 +++ monotone.py 293fd3e671dabca2056a9b5ad9471e01249f6a43 @@ -21,7 +21,7 @@ dash_re = re.compile(r'^-+$') cert_value_re = re.compile(r'^(\S*) *: (.*)$') basic_io_re = re.compile(r'^ *(\S+) [\"\[](.*)[\"\]]$') -basic_io_hex_re = re.compile(r'^ *(\S+) (\[[0-9A-Za-z]+\])$') +basic_io_hex_re = re.compile(r'^ *(\S+) (\[[0-9A-Fa-f]*\])$') basic_io_string_re = re.compile(r'^ *(\S+) (\".*)$') manifest_entry_re = re.compile(r'^(\S+) *(.*)$') log_entry_re = re.compile(r'^(\S+): (.*)$') ============================================================ --- revision.psp eaa0dfc96d1f9c9e93878cb589a87680cfcede9c +++ revision.psp 8b65ca428414125f517b6a0332d04ef450541bcc @@ -86,40 +86,47 @@ <% -old_revision = None +old_revisions = [] for type in revision.keys(): value = "" for stanza in revision[type]: if type == "patch": fname, from_id, to_id = stanza[1], stanza[3], stanza[5] - if not from_id: - value += 'Add file %s with revision %s
' % (hq(fname), link("file", [id, fname])) - else: - # FIXME; possible bug here; we might need N diff links where N is the number of ancestors - value += 'Patch file %s from %s to %s (%s)
' % (hq(fname), link("download", [from_id, fname]), link("download", [to_id, fname]), link("diff", [old_revision, id, fname])) + # if from_id == None, then this is a new file; we're showing + # that information under "Add file" anyway. + if from_id: + diff_links = ','.join([link("diff", [t, id, fname]) for t in old_revisions]) + value += 'Patch file %s (%s)
' % \ + (link("file", [id, fname], fname), + diff_links) elif type == "old_revision": old_revision, old_manifest = stanza[1], stanza[3] - value += 'Old revision is: %s (%s)
Old manifest: %s
' % (link("revision", old_revision), link("diff", [old_revision, id]), link("manifest", old_revision)) + old_revisions.append(old_revision) + value += 'Old revision is: %s (%s)
' % \ + (link("revision", old_revision), + link("diff", [old_revision, id])) elif type == "new_manifest": # swallow this, it's not useful - new_manifest = stanza[1] - value += 'New manifest is: %s
' % (link("manifest", id)) + pass + # new_manifest = stanza[1] + # value += 'New manifest is: %s
' % (link("manifest", id)) elif type == "add_file": - new_file = stanza[1] - value += "Add file: %s
" % (hq(new_file)) + fname = stanza[1] + value += "Add file: %s
" % (link("file", [id, fname], fname)) elif type == "delete_file": - delete_file = stanza[1] - value += "Delete file: %s
" % (hq(delete_file)) + fname = stanza[1] + value += "Delete file: %s
" % (link("file", [id, fname], fname)) elif type == "delete_dir": - delete_directory = stanza[1] - value += "Delete directory: %s
" % (hq(delete_directory)) + fname = stanza[1] + value += "Delete directory: %s
" % (link("file", [id, fname], fname)) elif type == "rename_file": old_name, new_name = stanza[1], stanza[3] - value += "Rename file %s as %s
" % (hq(old_name), hq(new_name)) + value += "Rename file %s as %s
" % (hq(old_name), link("file", [id, new_name], new_name)) elif type == "rename_dir": old_name, new_name = stanza[1], stanza[3] value += "Rename directory %s as %s
" % (hq(old_name), hq(new_name)) - req.write('' % (prettify(type), value)) + if value: + req.write('' % (prettify(type), value)) %>
%s%s
%s%s