aboutsummaryrefslogtreecommitdiffstats
path: root/libbe/diff.py
Commit message (Collapse)AuthorAgeFilesLines
* Cleaned up be-handle-mail's subscriber notification emails (fewer attachments).W. Trevor King2009-07-271-20/+20
| | | | | | | | | | | Previously, every node in the DiffTree created it's own attachment. Now they're consolidated into a single attachment per bug. higher level nodes are still one attachment per node. Also: * added send_pgp_mime.append_text() * pulled guess_encoding() out of send_pgp_mime.encodedMIMEText(). * renamed data_string -> data_part in libbe.diff, since it needn't be a string.
* Tweaked the output text for modified bugs in libbe.diff and be-handle-mail.W. Trevor King2009-07-271-1/+3
|
* Added cmp functions to libbe.comment, and fleshed them out in libbe.bug.W. Trevor King2009-07-271-6/+14
| | | | | | | | | | Previous comment comparison had just been the default Tree.__cmp__. Fleshed out so A == B ensures no meaningful differences between A and B. Also added first line of comments to new comment output in libbe.diff, and added a comment/"settings" node and .comment_mod_string() (to mirror bugdir and bug).
* Cache data strings in libbe.diff.DiffTree.W. Trevor King2009-07-271-0/+3
| | | | | This makes repeated .report() generation from the same tree more efficient.
* Major rewrite of libbe.diff introduces DiffTree and Diff classes.W. Trevor King2009-07-271-94/+368
| | | | | | | | | | | | | To make the interface proposed by becommands/subscribers.py easier to implement, I've moved the libbe.diff functionality into classes. Now it should be easy two tweak the output as desired by subclassing these classes. The basic idea is that Diff.report_tree() generates a diff_tree tree of changes between two bugdirs, where diff_tree is some subclass of DiffTree. Each type of change has a default .*_string() method producing a string summary of the change. DiffTree.report() moves through and generates a report by joining all those summary strings to a single root, and DiffTree.report_string() serialized the report to produce e.g. the output of becommands/diff.py.
* Added bugdir setting comparision to libbe.diff.W. Trevor King2009-07-231-20/+29
| | | | | | | | | | | Renamed libbe.diff.diff -> bug_diffs, since it doesn't compare bugdirs. Load comments before bug comparision so cmp_comments will see them. Use .settings_properties rather than static lists to create attribute lists for change_lines(). Removed trailing endline from becommands/diff.py output.
* Updated GPLv2 to current GPLv2.W. Trevor King2009-07-141-11/+11
| | | | | | | | | | | | | | | | | | | | | | | | Fixes Ben's bug 00f26f04-9202-4288-8744-b29abc2342d6. I also tweaked update_copyright.sh to make possible future copyright-blurb revision easier. The new algorithm is greedier, overwriting _all_ consecutive comments after a '^# Copyright' line, so do # Copyright # GPL ... GPL ... GPL # Your comment here... not # Copyright # GPL ... GPL ... GPL # # Your comment here... Without the blank line, your comment would get overwritten by the next run of update_copyright.sh. Note that catmutt is ignored by update_copyright.sh because Moritz Barsnick has only licensed his grepm code under the GPLv2 (not GPLv>=2). See the initial catmutt commit for details.
* Removed <abentley@panoramicfeedback.com> from copyright blurbs.W. Trevor King2009-07-111-1/+0
| | | | | | | | | | | These didn't work with my update_copyright.sh. I went with Aaron Bentley and Panometrics, Inc. instead of Aaron Bentley <abentley@panoramicfeedback.com> and Panometrics, Inc. just because of line length, but I'm open to convincing if people prefer the latter...
* Updated copyright blurbs and AUTHORS and included script for future updatesW. Trevor King2009-07-011-1/+2
|
* Per-tree status levels working.W. Trevor King2008-12-041-9/+8
|
* Added libbe/encoding.py to wrap input/output/file access appropriately.W. Trevor King2008-11-251-11/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | I borrowed most of the code for this. get_encoding() is from Trac http://trac.edgewall.org/browser/trunk/trac/util/datefmt.py format_datetime() Trac has a BSD license http://trac.edgewall.org/wiki/TracLicense I don't know if such a small snippet requires us to "reproduce the above copyright" or where we need to reproduce it if it is needed. The stdout/stdin replacement code follows http://wiki.python.org/moin/ShellRedirectionFails Because of the stdout replacement, the doctests executes now need an optional 'test' argument to turn off replacement during the doctests, otherwise doctest flips out (since it had set up stdout to catch output, and then we clobbered it's setup). References: http://wiki.python.org/moin/Unicode http://www.amk.ca/python/howto/unicode http://www.python.org/dev/peps/pep-0100/ I also split libbe/editor.py off from libbe.utility.py and started explaining the motivation for the BugDir init flags in it's docstring.
* Added Bug.comments(), BugDir.has_bug() & cleaned up diff.diff().W. Trevor King2008-11-241-7/+6
| | | | + some other minor fixes and cleanups.
* libbe/diff.diff() was missing newly created bugs. Fixed.W. Trevor King2008-11-231-2/+5
| | | | Also added blank lines to separate the new/modified/removed groups.
* Go back to lazy bug loading to get execution speed back up.W. Trevor King2008-11-231-6/+10
| | | | Fixes bug b3c6da51-3a30-42c9-8c75-587c7a1705c5
* Explicit rcs.cleanup() in bugdir test.W. Trevor King2008-11-221-2/+2
| | | | | | | | | | | | | Don't use del(rcs), because if there was an error, there is still a reference to rcs in the traceback, so it is never cleaned up. This can leave the external archive cluttering up your Arch install if you're using the Arch backend. See the __del__ documentation http://python.active-venture.com/ref/customization.html#l2h-175 for details. Also fixed some out-of-date method names in libbe.diff
* Another major rewrite. Now BugDir, Bug, and Comment are more distinct.W. Trevor King2008-11-211-21/+12
| | | | | | | | | | | | | | | I pushed a lot of the little helper functions into the main classes, which makes it easier for me to keep track of what's going on. I'm now at the point where I can run through `python test.py` with each of the backends (by changing the search order in rcs.py _get_matching_rcs) without any unexpected errors for each backend (except Arch). I can also run `test_usage.sh` without non-Arch errors either. However, don't consider this a stable commit yet. The bzr backend is *really*slow*, and the other's aren't blazingly fast either. I think I'm rewriting the entire database every time I save it :p. Still, it passes the checks. and I don't like it when zounds of changes build up.
* Major rewrite of RCS backends. RCS now represented as a class.W. Trevor King2008-11-181-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Lots of changes and just one commit. This started with bug dac91856-cb6a-4f69-8c03-38ff0b29aab2, when I noticed that new bugs were not being added appropriately with the Git backend. I'd been working with Git trouble before with bug 0cad2ac6-76ef-4a88-abdf-b2e02de76f5c, and decided things would be better off if I just scrapped the current RCS architecture and went to a more object oriented setup. So I did. It's not clear how to add support for an RCS backend: * Create a new module that - defines an inheritor of rsc.RCS, overriding the _rcs_*() methods - provide a new() function for instantizating the new class - defines an inheritor of rcs.RCStestCase, overiding the Class attribute - defines 'suite' a unittest.TestSuite testing the module * Add your new module to the rest in rcs._get_matching_rcs() * Add your new module to the rest in libbe/tests.py Although I'm not sure libbe/tests.py is still usefull. The new framework clears out a bunch of hackery that used to be involved with supporting becommands/diff.py. There's still room for progress though. While implementing the new verision, I moved the testing framework over from doctest to a doctest/unittest combination. Longer tests that don't demonstrate a function's usage should be moved to unittests at the end of the module, since unittest has better support for setup/teardown, etc. The new framework also revealed some underimplented backends, most notably arch. These backends have now been fixed. I also tweaked the test_usage.sh script to run through all the backends if it is called with no arguments. The fix for the dac bug turned out to be an unflushed file write :p.
* Removed the empty bugs 14c and 38b. Fixed bug.string() call in libbe/diff.py.W. Trevor King2008-11-161-1/+1
|
* Moved libbe.cmdutil.bug_summary() to libbe.bug.Bug.string().W. Trevor King2008-11-151-3/+3
| | | | This seems like a natual place for a function that only operates on Bugs.
* Fixed some bug.py split effects in diff.pyW. Trevor King2008-11-141-4/+5
| | | | | | Also added 'disabled' status back in so diff doesn't choke trying to load the older versions... Ugly hack, but I don't want to change the past ;).
* Implemented basic comment diffAaron Bentley2006-03-311-2/+19
|
* Added appropriate copyright notices, GPLed.Aaron Bentley2005-05-161-0/+16
|
* Slight refactoringAaron Bentley2005-05-091-2/+2
|
* Implemented bug tree diffAaron Bentley2005-05-091-4/+29
| | | | | | | Modified bug reports: f5c: Implement bug tree diff status: open -> closed
* Added preliminary tree-diffing supportAaron Bentley2005-04-141-0/+52