W. Trevor King [Sat, 12 Dec 2009 05:31:55 +0000 (00:31 -0500)]
Added libbe.command.base (with Command class) and moved list command to new format.
W. Trevor King [Fri, 11 Dec 2009 00:31:47 +0000 (19:31 -0500)]
Moved bugdir, bug, and comment over to new id implementation.
W. Trevor King [Wed, 9 Dec 2009 12:23:54 +0000 (07:23 -0500)]
Rethought libbe.util.id module
W. Trevor King [Wed, 9 Dec 2009 01:02:34 +0000 (20:02 -0500)]
Reworked test.py to handle deeper directory structure
W. Trevor King [Tue, 8 Dec 2009 14:01:26 +0000 (09:01 -0500)]
Moved properties.py and settings_object.py to libbe/storage/util/
W. Trevor King [Tue, 8 Dec 2009 13:54:50 +0000 (08:54 -0500)]
Transitioned bugdir.py to new storage format.
W. Trevor King [Tue, 8 Dec 2009 09:33:49 +0000 (04:33 -0500)]
Transitioned bug.py to new storage format.
W. Trevor King [Tue, 8 Dec 2009 09:10:10 +0000 (04:10 -0500)]
Transitioned comment.py to new storage format.
W. Trevor King [Tue, 8 Dec 2009 09:01:38 +0000 (04:01 -0500)]
Use .storage.is_read/writeable() rather than .sync_with_disk() in settings_object.py
W. Trevor King [Tue, 8 Dec 2009 08:58:36 +0000 (03:58 -0500)]
Use mapfile to only create & parse mapfile strings, not files
W. Trevor King [Tue, 8 Dec 2009 08:52:37 +0000 (03:52 -0500)]
Extended libbe.storage.base for separate read/write control.
Rather than just having .read_only to set write permissions and
assuming that read was always legal. We also added user and backend
control of both readable and writeable:
do you want to read/write?
and
can you read/write?
Specialized NotSupported into NotWriteable and NotReadable.
Added automatic unicode encoding on .set(), and decode option on
.get().
W. Trevor King [Tue, 8 Dec 2009 08:51:27 +0000 (03:51 -0500)]
Extend libbe.util.id to handle id (path) creation.
W. Trevor King [Tue, 8 Dec 2009 06:49:06 +0000 (01:49 -0500)]
Added libbe.storage.base and test suite.
W. Trevor King [Tue, 8 Dec 2009 01:07:55 +0000 (20:07 -0500)]
Initial directory restructuring to clarify dependencies
W. Trevor King [Tue, 8 Dec 2009 01:07:36 +0000 (20:07 -0500)]
Reorganization bug created
W. Trevor King [Mon, 7 Dec 2009 12:36:14 +0000 (07:36 -0500)]
Added libbe.pager and --paginate/--no-pager options to be.
W. Trevor King [Mon, 7 Dec 2009 12:34:14 +0000 (07:34 -0500)]
Updated NEWS
W. Trevor King [Mon, 7 Dec 2009 12:25:18 +0000 (07:25 -0500)]
Added --paginate and --no-pager to be
W. Trevor King [Mon, 7 Dec 2009 12:20:23 +0000 (07:20 -0500)]
Use 'auto' for run_pager default rather than None
W. Trevor King [Mon, 7 Dec 2009 12:18:48 +0000 (07:18 -0500)]
be --dir DIR COMMAND now roots the bugdir in DIR without changing directories.
Previously, for the directory structure
A
|-- X
`-- Y
You could do something like
A$ be --dir X diff --dir ../Y
Now it's
A$ be --dir X diff --dir Y
The --root option to `be init` has been removed as redundant. Replace
calls like
be init --root DIR
with
be --dir DIR init
W. Trevor King [Mon, 7 Dec 2009 12:02:15 +0000 (07:02 -0500)]
Update libbe.pager copyright
W. Trevor King [Mon, 7 Dec 2009 12:00:34 +0000 (07:00 -0500)]
Added libbe.pager
W. Trevor King [Sun, 6 Dec 2009 22:20:39 +0000 (17:20 -0500)]
be --dir DIR COMMAND now roots the bugdir in DIR without changing directories.
Previously, for the directory structure
A
|-- X
`-- Y
You could do something like
A$ be --dir X diff --dir ../Y
Now it's
A$ be --dir X diff --dir Y
The --root option to `be init` has been removed as redundant. Replace
calls like
be init --root DIR
with
be --dir DIR init
W. Trevor King [Sun, 6 Dec 2009 09:24:07 +0000 (04:24 -0500)]
Set BugDir(root=X) instead of os.chdir(X) in
W. Trevor King [Sun, 6 Dec 2009 08:11:39 +0000 (03:11 -0500)]
becommands.target.bug_target(TARGET-BUG) now returns TARGET-BUG
W. Trevor King [Sun, 6 Dec 2009 05:44:22 +0000 (00:44 -0500)]
Merged be.target-as-bug
Highlights:
* targets are now a special type of bug (severity 'target'), so you
can do all the things you do with normal bugs to them as well
(e.g. comment on them, link them into dependency trees, etc.)
* new command `be due` to get/set bug due dates.
* changes to `be depend`
* added options --status, --severity
* changes to `be list`
* added blacklist capability to --status, --severity, --assigned
* removed options --target, --cur-target
Replace:
'be list --target TARGET' with
'be depend --status -closed,fixed,wontfix --severity -target \
$(be target --resolve TARGET)'
'be list --cur-target' with
'be depend --status -closed,fixed,wontfix --severity -target \
$(be target --resolve)'
* changes to `be target`
* added option --resolve
* removed option --list
Replace:
'be target --list' with 'be list --status all --severity target'
* new function cmdutil.select_values() for whitelist/blacklist selection.
* assorted cleanups and bugfixes
W. Trevor King [Sun, 6 Dec 2009 05:43:59 +0000 (00:43 -0500)]
Marked as fixed 22b: Sorting targets chronologically
W. Trevor King [Sun, 6 Dec 2009 05:28:22 +0000 (00:28 -0500)]
Updated NEWS.
W. Trevor King [Sun, 6 Dec 2009 05:27:24 +0000 (00:27 -0500)]
Updated becommands/due.py copyright.
W. Trevor King [Sun, 6 Dec 2009 05:21:07 +0000 (00:21 -0500)]
Added becommands/due.py to manage bug due dates.
This fulfills the following part of 22b:7
* "due_by"
We could add "due-by" to Bug.extra_strings as well, so that anyone
could set due dates for any issue they wanted.
Currently there's not much going on, but perhaps other people will
have ideas for useful extensions. Maybe
be due --sort BUG-ID [BUG-ID ...]
or
be --due-in-days 7
W. Trevor King [Sun, 6 Dec 2009 04:52:07 +0000 (23:52 -0500)]
`be target` gains --resolve and loses --list.
`be target` now works with bug-style targets.
W. Trevor King [Sun, 6 Dec 2009 04:51:43 +0000 (23:51 -0500)]
Docstring clarification in becommands.depend.get_blocked_by()
W. Trevor King [Sun, 6 Dec 2009 03:00:04 +0000 (22:00 -0500)]
Removed target stuff from becommands/list.py and tweaked options.
Now --status, --severity, and --assigned all use
cmdutil.select_values() for nice whitelist/blacklist selection.
W. Trevor King [Sun, 6 Dec 2009 02:35:56 +0000 (21:35 -0500)]
Moved becommands.depend._allowed_values() to cmdutil.select_values()
I like this code, and I want to use it for other places, e.g.
`be list`.
Also renamed depend options
--limit-severity and --limit-status
to
--severity and --status
W. Trevor King [Sun, 6 Dec 2009 02:04:41 +0000 (21:04 -0500)]
Removed Bugs-Everywhere-Web/server.log from version control
W. Trevor King [Sun, 6 Dec 2009 02:01:49 +0000 (21:01 -0500)]
Removed Bug.target reference from interfaces/xml/be-xml-to-mbox.
W. Trevor King [Sun, 6 Dec 2009 01:57:31 +0000 (20:57 -0500)]
Remove Bug.target references from several becommands (all but target.py).
W. Trevor King [Sun, 6 Dec 2009 01:52:29 +0000 (20:52 -0500)]
Added --limit-status and --limit-severity to `be depend'.
Currently only effective in tree mode, but that's where it matters
most.
W. Trevor King [Sun, 6 Dec 2009 01:03:36 +0000 (20:03 -0500)]
Added retroactive dependencies between the legacy targets.
bug uuid created resolved target
ee681951-f254-43d3-a53a-
1b36ae415d5c revno: 45 revno: 51 patch-52
f51dc5a7-37b7-4ce1-859a-
b7cb58be6494 revno: 41 revno: 41 0.1
f5c06914-dc64-4658-8ec7-
32a026a53f55 revno: 45 revno: 93 0.2
reasonable target blockage:
0.1 ------------| 0.2
`-| patch-52 --|
Here are the old targets
$ be list --severity target --status all
4fc:ct: patch-52
47c:ft: 0.1
bd0:ft: 0.2
And here is the implemented dependency tree
$ be depend -t -1 bd0
bd0ebb56-fb46-45bc-af08-
1e4a94e8ef3c blocked by:
47c:ft: 0.1
f51:ff: Can't create bugs
4fc:ct: patch-52
47c:ft: 0.1
f51:ff: Can't create bugs
ee6:cm: Support rcs configuration
f5c:fm: Implement bug tree diff
W. Trevor King [Sun, 6 Dec 2009 00:46:11 +0000 (19:46 -0500)]
Remove some more Bug.target references from libbe/bug.py
W. Trevor King [Sun, 6 Dec 2009 00:43:54 +0000 (19:43 -0500)]
Updated the new target bugs' status to match blockers
W. Trevor King [Sun, 6 Dec 2009 00:38:50 +0000 (19:38 -0500)]
Upgraded to Bugs Everywhere Directory v1.3
W. Trevor King [Sun, 6 Dec 2009 00:36:56 +0000 (19:36 -0500)]
Added "Bugs Everywhere Directory v1.3" which transitions to bug-type targets.
See bug
22b6f620-d2f7-42a5-a02e-
145733a4e366 for the motivation. This
upgrade will replace all "target" settings. The new BugDir target
setting will be the uuid of the appropriate target. The Bug target
setting is removed, replaced by an extra_strings BLOCKS tag blocking
the appropriate target. New target bugs are created on the fly as
required.
W. Trevor King [Sat, 5 Dec 2009 23:25:03 +0000 (18:25 -0500)]
This addresses the following portion of 22b:7:
* Targeting normal bugs
With "be depend". I think we should remove the "target" field from
bugs, and move target dependencies over into the "be depend"
framework.
* be target list
Would become "be list --severity target". A target "severity" would
keep target bugs distinct from other bug/issue types.
W. Trevor King [Sat, 5 Dec 2009 23:16:05 +0000 (18:16 -0500)]
Fixed shortname -> bugname in becommands/show.py.
Fixes
wking@thor:be.target-as-bug$ be show 22b:7
Traceback (most recent call last):
File "/home/wking/bin/be", line 65, in <module>
sys.exit(cmdutil.execute(args[0], args[1:]))
File "/home/wking/src/fun/be/be.target-as-bug/libbe/cmdutil.py", line 87, in execute
restrict_file_access=restrict_file_access)
File "/home/wking/src/fun/be/be.target-as-bug/becommands/show.py", line 82, in execute
print output(args, bd, as_xml=options.XML, with_comments=options.comments)
File "/home/wking/src/fun/be/be.target-as-bug/becommands/show.py", line 174, in output
lines.append(comment.string(shortname=shortname))
NameError: global name 'shortname' is not defined
W. Trevor King [Sat, 5 Dec 2009 22:40:08 +0000 (17:40 -0500)]
Commented on 12c: Bug aggregation. Multi-repo meta-BE?
W. Trevor King [Sat, 5 Dec 2009 22:34:09 +0000 (17:34 -0500)]
Adjusted be-mbox-to-xml to not drop author info from multipart messages
W. Trevor King [Sat, 5 Dec 2009 22:17:21 +0000 (17:17 -0500)]
Added missing author entries to some comments + cleanups.
W. Trevor King [Sat, 5 Dec 2009 21:50:34 +0000 (16:50 -0500)]
Fix libbe.diff.Diff._changed_bugs() to handle subscriptions by bug shortname.
W. Trevor King [Sat, 5 Dec 2009 13:31:04 +0000 (08:31 -0500)]
Cleanup Dir in becommands/init.py doctest.
W. Trevor King [Sat, 5 Dec 2009 13:16:27 +0000 (08:16 -0500)]
Merged be.diff-subscribe
Highlights:
* changes to `be diff`
* exits with an error if required revision control is not possible.
Previously it printed a message, but exitted with status 0.
* removed options --new, --removed, --modified, --all
* added options --uuids, --subscribe
* New method diff.Diff.full_report() allows fast generation of
similar report_tree()s via diff.DiffTree.masked.
* New method diff.subscriptions_from_string() for consistent
subscription string parsing.
* clean up be-handle-mail.Message.subscriber_emails() with
diff.Diff.report_tree(subscriptions)
* hardcoded 'DIR' replaced with diff.BUGDIR_ID
* assorted cleanups and bugfixes
W. Trevor King [Sat, 5 Dec 2009 13:15:52 +0000 (08:15 -0500)]
Updated NEWS
W. Trevor King [Sat, 5 Dec 2009 13:08:09 +0000 (08:08 -0500)]
Adjust libbe.diff.DiffTree to fix failed doctest.
======================================================================
FAIL: Doctest: libbe.diff.DiffTree
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python2.5/doctest.py", line 2128, in runTest
raise self.failureException(self.format_failure(new.getvalue()))
AssertionError: Failed doctest test for libbe.diff.DiffTree
File "/home/wking/src/fun/be/be.diff-subscribe/libbe/diff.py", line 136, in DiffTree
----------------------------------------------------------------------
File "/home/wking/src/fun/be/be.diff-subscribe/libbe/diff.py", line 172, in libbe.diff.DiffTree
Failed example:
print bugdir.report_string()
Exception raised:
Traceback (most recent call last):
File "/usr/lib/python2.5/doctest.py", line 1228, in __run
compileflags, 1) in test.globs
File "<doctest libbe.diff.DiffTree[18]>", line 1, in <module>
print bugdir.report_string()
File "/home/wking/src/fun/be/be.diff-subscribe/libbe/diff.py", line 213, in report_string
return "\n".join(self.report())
TypeError
W. Trevor King [Sat, 5 Dec 2009 12:41:50 +0000 (07:41 -0500)]
Use new libbe.diff.Diff.report_tree(subscriptions) in be-handle-mail.
This makes Message.subscriber_emails() much cleaner.
Also fix libbe.diff.Diff._sub_report() to handle missing
'bugdir/settings'.
Added libbe.diff.SubscriptionType.__cmp__ so that
SubscriptionType('all') == SubscriptionType('all')
This is important when comparing the types returned by
becommands.subscribe.get_bugdir_subscribers()
with the libbe.diff.*_TYPE_* types.
W. Trevor King [Sat, 5 Dec 2009 10:38:48 +0000 (05:38 -0500)]
Added libbe.diff.Diff.full_report() for speed with several subscription lists.
Now report_tree() returns an appropriately .masked version of the
cached full report, which is much faster than recomputing a new diff
tree from scratch.
Also fixed bug in libbe.diff.DiffTree.report() where
.requires_children=True was exposing nodes with children, when it
should (and now does) only expose nodes with _unmasked_ children.
W. Trevor King [Sat, 5 Dec 2009 09:21:04 +0000 (04:21 -0500)]
More 'DIR'->diff.BUGDIR_ID updates
W. Trevor King [Sat, 5 Dec 2009 09:11:39 +0000 (04:11 -0500)]
Created diff.subscriptions_from_string()
W. Trevor King [Sat, 5 Dec 2009 08:55:55 +0000 (03:55 -0500)]
Added --subscribe option to `be diff`
W. Trevor King [Sat, 5 Dec 2009 08:53:26 +0000 (03:53 -0500)]
Added BUGDIR_TYPE_MOD and BUGDIR_TYPE_REM to libbe.diff.
Now you can subscribe to only hear about modified bugs or only about
removed bugs. Kindof odd for a general subscription, but possibly
useful as an argument to the upcoming `be diff --subscribe`, e.g.
be diff --subscribe DIR:mod
which would replace the old
be diff --modified
W. Trevor King [Sat, 5 Dec 2009 08:32:06 +0000 (03:32 -0500)]
Adjusted diff.Subscription.__init__() to guess type_root if required.
W. Trevor King [Sat, 5 Dec 2009 08:22:25 +0000 (03:22 -0500)]
Added subscriptions option to diff.Diff.report_tree().
Also added diff.BUGDIR_ID to avoid lots of magic 'DIR' definitions,
and added diff.Subscription class to make the old (id, type) tuples a
bit more elegant.
W. Trevor King [Sat, 5 Dec 2009 06:58:41 +0000 (01:58 -0500)]
Moved subscription types from becommands/subscribe.py to libbe/diff.py.
W. Trevor King [Sat, 5 Dec 2009 06:30:30 +0000 (01:30 -0500)]
Replaced `be diff` options --new, --removed, --modified, and --all with --uuids.
We'll be adding a --subscribe option which will select the
bugs/changes we're interested in, which deprecates the selection
portion of the old options. The new --uuids just selects the "bug
uuid" output over the default "change summary" output.
W. Trevor King [Sat, 5 Dec 2009 06:10:01 +0000 (01:10 -0500)]
Set boolean options default to False in becommands/list.py
Otherwise they default to None. It doesn't matter at the moment,
since all the comparisons seem to be
if options.XYZ == True:
but this protects against confusion in the future if someone tries
if options.XYZ == False:
W. Trevor King [Sat, 5 Dec 2009 06:00:35 +0000 (01:00 -0500)]
`be diff` raises UsageError if required revision control not possible.
It had previously printed an message and exitted without error.
W. Trevor King [Sat, 5 Dec 2009 05:57:43 +0000 (00:57 -0500)]
Fix cmdutil.help() calls in be to use args not sys.argv.
sys.argv won't work if there are any options in the be call, e.g.
be -d DIR diff
W. Trevor King [Sat, 5 Dec 2009 05:21:35 +0000 (00:21 -0500)]
Add __eq__ and __ne__ methods to Tree.
This fixes a bug introduced by
revision-id: wking@drexel.edu-
20091205034412-8apqxq8zqim48tf7
committer: W. Trevor King <wking@drexel.edu>
timestamp: Fri 2009-12-04 22:44:12 -0500
message:
Use __cmp__ instead of __eq__ for Tree comparison.
When I made that commit, I'd forgotten that Tree inherits an __eq__
method from list, so it won't fall back to the __cmp__ method to
determine equality. The new __eq__ and __ne__ methods use __cmp__
internally, so further subclasses (e.g. Comment) only need to override
__cmp__. Of course, list also defines __ge__, __gt__, __le__, __lt__,
... which I don't bother with, so stay away from TreeA > TreeB and the
like.
W. Trevor King [Sat, 5 Dec 2009 04:55:11 +0000 (23:55 -0500)]
Merged `be diff --dir DIR` functionality
W. Trevor King [Sat, 5 Dec 2009 04:53:27 +0000 (23:53 -0500)]
Updated NEWS
W. Trevor King [Sat, 5 Dec 2009 04:39:15 +0000 (23:39 -0500)]
Updated NEWS
W. Trevor King [Sat, 5 Dec 2009 04:33:25 +0000 (23:33 -0500)]
Added --dir option to `be diff'.
Now you can compare two repositories:
be -d branchA diff -d branchB
or
branchA$ be diff -d ../branchB
which is helpful for VCSs like bzr that lack cross-branch revid
visibility. Git users can still use
branchA$ be diff REVID
where REVID is a commit from any branch in the repo.
This new functionality acts like a BE counterpart to `bzr missing DIR'.
W. Trevor King [Sat, 5 Dec 2009 04:30:32 +0000 (23:30 -0500)]
Fixed removed comment listing in libbe/diff.py.
Previous implementation guaranteed to raise KeyErrors, because new bug
doesn't contain the uuid.
W. Trevor King [Sat, 5 Dec 2009 03:44:12 +0000 (22:44 -0500)]
Use __cmp__ instead of __eq__ for Tree comparison.
This ensures that __ne__ will also work, and makes it easier to
subclass Tree. For example, in the previous implementation you could
have
>>> commA == commB
False
>>> cmp(commA, commB)
0
if the comments had different ids, but equivalent content.
At the user-interface level, this removes some false "modified
comments" from `be diff`.
W. Trevor King [Fri, 4 Dec 2009 03:05:23 +0000 (22:05 -0500)]
Don't necessarily initialize a new VCS in BugDir.load_settings().
We may already have the right type, in which case, don't mess with it.
This speeds up bugdir loading a bit more:
$ time be list > /dev/null
real 0m1.245s
user 0m1.116s
sys 0m0.124s
W. Trevor King [Fri, 4 Dec 2009 02:37:29 +0000 (21:37 -0500)]
Don't get VCS version in VCS.__init__().
Often, this just causes a slow subprocess.Popen() call to
get information we woln't even look at.
Old benchmark:
$ time be list > /dev/null
real 0m2.369s
user 0m1.980s
sys 0m0.388s
New benchmark:
$ time be list > /dev/null
real 0m1.472s
user 0m1.304s
sys 0m0.164s
W. Trevor King [Fri, 4 Dec 2009 02:19:54 +0000 (21:19 -0500)]
Added libbe.TESTING (defaults to False).
This flag allows us to skip unittest and testsuite declaration if we
woln't need them. It speeds up simple be calls a suprising amount.
With Testing=True (the old behavior):
wking@thor:be.wtk$ time ./be > /dev/null
real 0m0.393s
user 0m0.340s
sys 0m0.048s
With TESTING=False (the new behavior):
be.wtk$ time ./be > /dev/null
real 0m0.216s
user 0m0.152s
sys 0m0.064s
This adjustment was inspired by Jakub Wilk's Debian bug:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=559295
W. Trevor King [Fri, 4 Dec 2009 01:38:58 +0000 (20:38 -0500)]
Added copyright blurbs to __init__.py files.
W. Trevor King [Fri, 4 Dec 2009 01:16:56 +0000 (20:16 -0500)]
Remove _test() functions from plugin.py and cmdutil.py.
Testing should be handled through test.py, not by calling per-module
_test() functions.
W. Trevor King [Mon, 30 Nov 2009 11:29:48 +0000 (06:29 -0500)]
Merged completed be.email-bugs branch.
Highlights:
* import-xml now works as advertized in its longhelp string
* new methods Bug.merge() and Comment.merge()
* comment.list_to_root() is now Bug.add_comments()
* BugDir.list_uuids() is now BugDir.uuids()
* Bug.from_xml() now imports comments :p
* test.py uses unittest.TestSuite 'suite' in becommands, if present.
W. Trevor King [Mon, 30 Nov 2009 11:29:04 +0000 (06:29 -0500)]
Mark bug 565 as fixed: be email-bugs for bug submission from bzr-less users
W. Trevor King [Mon, 30 Nov 2009 11:28:01 +0000 (06:28 -0500)]
be-handle-mail uses more conservative --add-only for be-bugs:xml
W. Trevor King [Mon, 30 Nov 2009 11:26:09 +0000 (06:26 -0500)]
Generalized doctest string in subproc.py
W. Trevor King [Mon, 30 Nov 2009 11:36:38 +0000 (06:36 -0500)]
Added some thoughts on import_xml merge algorithms
W. Trevor King [Mon, 30 Nov 2009 11:35:29 +0000 (06:35 -0500)]
Fixed import_xml.py to live up to its longhelp description.
Also added LonghelpTestCase to prove it.
W. Trevor King [Mon, 30 Nov 2009 11:26:49 +0000 (06:26 -0500)]
Avoid redundant Comment.alt_ids
W. Trevor King [Mon, 30 Nov 2009 11:05:03 +0000 (06:05 -0500)]
Changed Bug and Comment.merge() kwargs.
The old allow_changes and allow_new_comments didn't have separate
handling for extra_strings, like import_xml will need. It also didn't
have a way to specify what to do if an illegal change occurs.
Sometimes you'll want to raise an exception, but sometimes you'll want
to ?silently? ignore the change.
W. Trevor King [Mon, 30 Nov 2009 10:05:49 +0000 (05:05 -0500)]
Minor BugDir docstring typo correction.
W. Trevor King [Sun, 29 Nov 2009 08:19:30 +0000 (03:19 -0500)]
Moved comment.list_to_root() to Bug.add_comments() with some cleanups.
This makes Bug.add_comment simpler. Also makes Bug.from_xml() more
robust, since it no longer depends on the order in which the XML file
lists the comments. The previous Bug.from_xml() would have choked on
<be-xml>
<bug>
<comment>
<uuid>B</uuid>
<in-reply-to>A</in-reply-to>
</comment>
<comment>
<uuid>A</uuid>
</comment>
</bug>
</be-xml>
because when B was being added, the referenced A hadn't yet been
noticed.
W. Trevor King [Sun, 29 Nov 2009 03:07:16 +0000 (22:07 -0500)]
Added comment import to Bug.from_xml().
This is a pretty critical feature, dunno how I missed it before.
I also added a little check to both Bug and Comment.from_xml() so that
xml_string can take an ElementTree Element as well as the usual raw
string/unicode. This avoids repeated string <-> Element conversions.
Added Bug.add_comment() which handles the addition of a Comment
instance, matching .in_reply_to, checking .uuid uniqueness, etc.
W. Trevor King [Sun, 29 Nov 2009 01:27:53 +0000 (20:27 -0500)]
test.py now uses unittest.TestSuite 'suite' in becommands if present.
Such 'suite' instances have been required for libbe submodules. This
will allow becommands to test themselves more thoroughly than they
could with only doctests.
W. Trevor King [Sun, 29 Nov 2009 01:24:19 +0000 (20:24 -0500)]
BugDir.list_uuids() -> BugDir.uuids()
W. Trevor King [Sat, 28 Nov 2009 12:41:13 +0000 (07:41 -0500)]
Added Bug.merge() and Comment.merge().
Added *.explicit_attrs list creation to Bug and Comment.from_xml().
Added match_alt_id keyword argumennt to .comment_from_uuid().
Removed extra enline following '</extra-string>' tag in Bug and
Comment.xml().
W. Trevor King [Sat, 21 Nov 2009 20:18:02 +0000 (15:18 -0500)]
Added restrict_file_access to becommands' execute() args.
+ associated adjustments in other files.
See cmdutil.restrict_file_access.__doc__ for an explanation of the
security hole this closes.
W. Trevor King [Sat, 21 Nov 2009 20:06:10 +0000 (15:06 -0500)]
Merged mostly completed `be email-bugs'.
Highlights:
* new be commands 'email-bugs' and 'import-xml'
* standardized <be-xml> format for XML files.
* new be-handle-mail interface '[be-bug:xml]'
* restrict_file_access security patch
* new subprocess handling submodule libbe.subproc
* test.py adjusted to use an installed VCS for most tests.
* assorted bugfixes
Altered interfaces to the following be commands:
* comment --xml tag gone, use import-xml.
* show --xml xml format updated to <be-xml> format.
Also adjusted be-mbox-to-xml and be-xml-to-mbox to handle new <be-xml>
format and provide better handling of *.extra_strings.
W. Trevor King [Sat, 21 Nov 2009 19:54:11 +0000 (14:54 -0500)]
Fix libbe.vcs.VCS.get_file_contents(allow_no_vcs=True,binary=True).
In it's previous form it had ignored the binary option if
self._use_vcs() returned False.
Also added a few more details to the docstring, explaining the
arguments.
W. Trevor King [Sat, 21 Nov 2009 19:03:00 +0000 (14:03 -0500)]
Updated interfaces/email/interactive/README for [be-bug:xml] interface
W. Trevor King [Sat, 21 Nov 2009 18:53:09 +0000 (13:53 -0500)]
Added [be-tag:xml] processing to be-handle-mail.
Now it will automatically apply and commit emails from
be email-bugs ...
W. Trevor King [Sat, 21 Nov 2009 18:49:32 +0000 (13:49 -0500)]
Adjusted `be import-xml` to properly handle croot_bug==None.
If there aren't any root comments, then the user needn't specify
--comment-root, in which case croot_bug will be None and we want to
skip all the croot processing.
W. Trevor King [Sat, 21 Nov 2009 18:18:54 +0000 (13:18 -0500)]
Fixed bug in be-handle-mail.Message.parse_comment() for emails w/o Message-id.
You used to get:
Uncaught exception:
'NoneType' object has no attribute 'decode'
File "./be-handle-mail", line 857, in main
m.run()
File "./be-handle-mail", line 591, in run
command.run()
File "./be-handle-mail", line 244, in run
manipulate_encodings=False)
File "/tmp/be.email-bugs/interfaces/email/interactive/libbe/cmdutil.py", line 82, in execute
ret = cmd.execute([a.decode(enc) for a in args],
A `print args' in Message.parse_comment() revealed
[..., u'--alt-id', None,...]
W. Trevor King [Sat, 21 Nov 2009 18:08:05 +0000 (13:08 -0500)]
Added interfaces/email/interactive/examples/email_bugs
For testing the new [be-bug:xml] interface we're about to write.