# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: john@arbash-meinel.com-20080418203059-iguj66uacil58ytv
# target_branch: http://bazaar-vcs.org/bzr/bzr.dev
# testament_sha1: 3341c46ab3dd7ba4d091fba40442b0eed5e9a951
# timestamp: 2008-04-18 15:31:11 -0500
# source_branch: http://bzr.arbash-meinel.com/branches/bzr/1.4-\
#   dev/dont_log_view_none_211661
# base_revision_id: pqm@pqm.ubuntu.com-20080417155359-m3nxwwr442bgmsne
# 
# Begin patch
=== modified file 'NEWS'
--- NEWS	2008-04-17 15:53:59 +0000
+++ NEWS	2008-04-18 20:30:59 +0000
@@ -26,6 +26,10 @@
     * Avoid muttering every time a child update does not cause a progress bar
       update. (John Arbash Meinel, #213771)
 
+    * ``bzr log -r ..X bzr://`` was failing, because it was getting a request
+      for ``revision_id=None`` which was not a string.
+      (John Arbash Meinel, #211661)
+
     * Severe performance degradation in fetching from knit repositories to
       knits and packs due to parsing the entire revisions.kndx on every graph
       walk iteration fixed by using the Repository.get_graph API.  There was

=== modified file 'bzrlib/log.py'
--- bzrlib/log.py	2008-03-28 03:54:40 +0000
+++ bzrlib/log.py	2008-04-18 20:30:59 +0000
@@ -464,8 +464,10 @@
     # This asks for all mainline revisions, which means we only have to spider
     # sideways, rather than depth history. That said, its still size-of-history
     # and should be addressed.
+    # mainline_revisions always includes an extra revision at the beginning, so
+    # don't request it.
     parent_map = dict(((key, value) for key, value in
-        graph.iter_ancestry(mainline_revisions) if value is not None))
+        graph.iter_ancestry(mainline_revisions[1:]) if value is not None))
     sorted_rev_list = topo_sort(parent_map.items())
     ancestry = {}
     for rev in sorted_rev_list:

=== modified file 'bzrlib/remote.py'
--- bzrlib/remote.py	2008-04-10 16:41:50 +0000
+++ bzrlib/remote.py	2008-04-18 20:30:59 +0000
@@ -859,7 +859,8 @@
         body = self._serialise_search_recipe(recipe)
         path = self.bzrdir._path_for_remote_call(self._client)
         for key in keys:
-            assert type(key) is str
+            assert type(key) is str, \
+                "Key type is %s not a plain string" % (type(key),)
         verb = 'Repository.get_parent_map'
         args = (path,) + tuple(keys)
         try:

# Begin bundle
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