Description: Fix signature handling when repacking.
Origin: commit, revision id: jelmer@jelmer.uk-20190109000402-n00g2hb1rmhu8ql1
Author: Jelmer Vernooĳ <jelmer@jelmer.uk>
Bug: https://launchpad.net/bugs/1811012
Bug-Debian: http://bugs.debian.org/918723
Last-Update: 2019-01-09
Applied-Upstream: no
X-Bzr-Revision-Id: jelmer@jelmer.uk-20190109000402-n00g2hb1rmhu8ql1

=== modified file 'breezy/bzr/knitpack_repo.py'
--- old/breezy/bzr/knitpack_repo.py	2018-11-11 04:08:32 +0000
+++ new/breezy/bzr/knitpack_repo.py	2019-01-09 00:04:02 +0000
@@ -660,7 +660,7 @@
             pack_readv_requests = []
             for key, value in items:
                 # ---- KnitGraphIndex.get_position
-                bits = value[1:].split(' ')
+                bits = value[1:].split(b' ')
                 offset, length = int(bits[0]), int(bits[1])
                 pack_readv_requests.append((offset, length, (key, value[0:1])))
             # linear scan up the pack
@@ -685,7 +685,7 @@
                     df, _ = knit._parse_record_header(key, raw_data)
                     df.close()
                 pos, size = writer.add_bytes_record(raw_data, names)
-                write_index.add_node(key, eol_flag + "%d %d" % (pos, size))
+                write_index.add_node(key, eol_flag + b"%d %d" % (pos, size))
                 pb.update("Copied record", record_index)
                 record_index += 1
 

=== modified file 'breezy/tests/per_pack_repository.py'
--- old/breezy/tests/per_pack_repository.py	2018-11-11 04:08:32 +0000
+++ new/breezy/tests/per_pack_repository.py	2019-01-09 00:04:02 +0000
@@ -26,6 +26,7 @@
 from .. import (
     controldir,
     errors,
+    gpg,
     osutils,
     repository,
     revision as _mod_revision,
@@ -299,6 +300,28 @@
                 combined_indices.difference([combined_index]),
                 combined_index._sibling_indices)
 
+    def test_pack_with_signatures(self):
+        format = self.get_format()
+        tree = self.make_branch_and_tree('.', format=format)
+        trans = tree.branch.repository.controldir.get_repository_transport(
+            None)
+        revid1 = tree.commit('start')
+        revid2 = tree.commit('more work')
+        strategy = gpg.LoopbackGPGStrategy(None)
+        repo = tree.branch.repository
+        self.addCleanup(repo.lock_write().unlock)
+        repo.start_write_group()
+        repo.sign_revision(revid1, strategy)
+        repo.commit_write_group()
+        repo.start_write_group()
+        repo.sign_revision(revid2, strategy)
+        repo.commit_write_group()
+        tree.branch.repository.pack()
+        # there should be 1 pack:
+        index = self.index_class(trans, 'pack-names', None)
+        self.assertEqual(1, len(list(index.iter_all_entries())))
+        self.assertEqual(2, len(tree.branch.repository.all_revision_ids()))
+
     def test_pack_after_two_commits_packs_everything(self):
         format = self.get_format()
         tree = self.make_branch_and_tree('.', format=format)

