Merge lp:~jelmer/brz/auto-rename-fix into lp:brz

Proposed by Jelmer Vernooij
Status: Merged
Merged at revision: 6809
Proposed branch: lp:~jelmer/brz/auto-rename-fix
Merge into: lp:brz
Diff against target: 3847 lines (+708/-763)
48 files modified
breezy/rename_map.py (+8/-1)
breezy/tests/test_groupcompress.py (+271/-292)
breezy/tests/test_rename_map.py (+15/-0)
doc/developers/HACKING.txt (+63/-109)
doc/developers/branding.txt (+14/-0)
doc/developers/bug-handling.txt (+38/-39)
doc/developers/case-insensitive-file-systems.txt (+1/-1)
doc/developers/check.txt (+1/-1)
doc/developers/code-review.txt (+7/-7)
doc/developers/code-style.txt (+17/-17)
doc/developers/colocated-branches.txt (+26/-26)
doc/developers/config-rationale.txt (+7/-7)
doc/developers/content-filtering.txt (+3/-3)
doc/developers/contribution-quickstart.txt (+2/-2)
doc/developers/cycle.txt (+9/-10)
doc/developers/development-repo.txt (+7/-7)
doc/developers/documenting-changes.txt (+4/-4)
doc/developers/ec2.txt (+4/-4)
doc/developers/implementation-notes.txt (+1/-1)
doc/developers/index-plain.txt (+22/-25)
doc/developers/index.txt (+6/-7)
doc/developers/indices.txt (+3/-3)
doc/developers/integration.txt (+25/-25)
doc/developers/inventory.txt (+6/-6)
doc/developers/last-modified.txt (+1/-1)
doc/developers/lca_tree_merging.txt (+1/-1)
doc/developers/network-protocol.txt (+1/-1)
doc/developers/overview.txt (+12/-12)
doc/developers/packrepo.txt (+3/-3)
doc/developers/plans/index.txt (+0/-2)
doc/developers/plans/performance/commit.txt (+5/-5)
doc/developers/plans/performance/directory-fingerprints.txt (+1/-1)
doc/developers/plans/performance/incremental-push-pull.txt (+1/-1)
doc/developers/plans/performance/roadmap.txt (+1/-1)
doc/developers/plugin-api.txt (+46/-46)
doc/developers/ppa.txt (+6/-6)
doc/developers/principles.txt (+9/-9)
doc/developers/profiling.txt (+4/-4)
doc/developers/releasing.txt (+13/-13)
doc/developers/repository-stream.txt (+1/-1)
doc/developers/repository.txt (+3/-3)
doc/developers/revision-properties.txt (+2/-2)
doc/developers/specifications.txt (+7/-2)
doc/developers/transports.txt (+12/-12)
doc/developers/ui.txt (+15/-15)
doc/developers/win32_build_setup.txt (+1/-1)
doc/developers/xdg_config_spec.txt (+0/-24)
doc/en/release-notes/brz-3.0.txt (+3/-0)
To merge this branch: bzr merge lp:~jelmer/brz/auto-rename-fix
Reviewer Review Type Date Requested Status
Martin Packman Approve
Review via email: mp+333584@code.launchpad.net

Description of the change

Fixed bug with RenameMap (bzr move --auto), also RenameMap has ability to detect files moved into new unversioned directories.

(Original MP at https://code.launchpad.net/~mnn282/bzr/auto-rename-fix/+merge/117203)

To post a comment you must log in.
Revision history for this message
Martin Packman (gz) wrote :

Looks good with change to test mentioned.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'breezy/rename_map.py'
2--- breezy/rename_map.py 2017-06-05 20:48:31 +0000
3+++ breezy/rename_map.py 2017-11-11 18:32:23 +0000
4@@ -186,7 +186,8 @@
5 for (file_id, paths, changed_content, versioned, parent, name,
6 kind, executable) in iterator:
7 if kind[1] is None and versioned[1]:
8- missing_parents.setdefault(parent[0], set()).add(file_id)
9+ if not self.tree.has_filename(self.tree.id2path(parent[0])):
10+ missing_parents.setdefault(parent[0], set()).add(file_id)
11 if kind[0] == 'file':
12 missing_files.add(file_id)
13 else:
14@@ -258,6 +259,12 @@
15 parent_id = matches.get(parent_path)
16 if parent_id is None:
17 parent_id = self.tree.path2id(parent_path)
18+ if parent_id is None:
19+ added, ignored = self.tree.smart_add([parent_path], recurse=False)
20+ if len(ignored) > 0 and ignored[0] == parent_path:
21+ continue
22+ else:
23+ parent_id = self.tree.path2id(parent_path)
24 if entry.name == new_name and entry.parent_id == parent_id:
25 continue
26 new_entry = entry.copy()
27
28=== modified file 'breezy/tests/test_groupcompress.py'
29--- breezy/tests/test_groupcompress.py 2017-10-27 00:18:42 +0000
30+++ breezy/tests/test_groupcompress.py 2017-11-11 18:32:23 +0000
31@@ -53,7 +53,7 @@
32 class TestGroupCompressor(tests.TestCase):
33
34 def _chunks_to_repr_lines(self, chunks):
35- return '\n'.join(map(repr, ''.join(chunks).split('\n')))
36+ return '\n'.join(map(repr, b''.join(chunks).split(b'\n')))
37
38 def assertEqualDiffEncoded(self, expected, actual):
39 """Compare the actual content to the expected content.
40@@ -82,18 +82,18 @@
41 # diff against NUKK
42 compressor = self.compressor()
43 sha1, start_point, end_point, _ = compressor.compress(('label',),
44- 'strange\ncommon\n', None)
45- self.assertEqual(sha_string('strange\ncommon\n'), sha1)
46- expected_lines = 'f' '\x0f' 'strange\ncommon\n'
47- self.assertEqual(expected_lines, ''.join(compressor.chunks))
48+ b'strange\ncommon\n', None)
49+ self.assertEqual(sha_string(b'strange\ncommon\n'), sha1)
50+ expected_lines = b'f\x0fstrange\ncommon\n'
51+ self.assertEqual(expected_lines, b''.join(compressor.chunks))
52 self.assertEqual(0, start_point)
53- self.assertEqual(sum(map(len, expected_lines)), end_point)
54+ self.assertEqual(len(expected_lines), end_point)
55
56 def test_empty_content(self):
57 compressor = self.compressor()
58 # Adding empty bytes should return the 'null' record
59 sha1, start_point, end_point, kind = compressor.compress(('empty',),
60- '', None)
61+ b'', None)
62 self.assertEqual(0, start_point)
63 self.assertEqual(0, end_point)
64 self.assertEqual('fulltext', kind)
65@@ -101,10 +101,10 @@
66 self.assertEqual(0, compressor.endpoint)
67 self.assertEqual([], compressor.chunks)
68 # Even after adding some content
69- compressor.compress(('content',), 'some\nbytes\n', None)
70+ compressor.compress(('content',), b'some\nbytes\n', None)
71 self.assertTrue(compressor.endpoint > 0)
72 sha1, start_point, end_point, kind = compressor.compress(('empty2',),
73- '', None)
74+ b'', None)
75 self.assertEqual(0, start_point)
76 self.assertEqual(0, end_point)
77 self.assertEqual('fulltext', kind)
78@@ -115,26 +115,26 @@
79 # reading something that is in the compressor stream already.
80 compressor = self.compressor()
81 sha1_1, _, _, _ = compressor.compress(('label',),
82- 'strange\ncommon long line\nthat needs a 16 byte match\n', None)
83+ b'strange\ncommon long line\nthat needs a 16 byte match\n', None)
84 expected_lines = list(compressor.chunks)
85 sha1_2, _, end_point, _ = compressor.compress(('newlabel',),
86- 'common long line\nthat needs a 16 byte match\ndifferent\n', None)
87+ b'common long line\nthat needs a 16 byte match\ndifferent\n', None)
88 # get the first out
89- self.assertEqual(('strange\ncommon long line\n'
90- 'that needs a 16 byte match\n', sha1_1),
91+ self.assertEqual((b'strange\ncommon long line\n'
92+ b'that needs a 16 byte match\n', sha1_1),
93 compressor.extract(('label',)))
94 # and the second
95- self.assertEqual(('common long line\nthat needs a 16 byte match\n'
96- 'different\n', sha1_2),
97+ self.assertEqual((b'common long line\nthat needs a 16 byte match\n'
98+ b'different\n', sha1_2),
99 compressor.extract(('newlabel',)))
100
101 def test_pop_last(self):
102 compressor = self.compressor()
103 _, _, _, _ = compressor.compress(('key1',),
104- 'some text\nfor the first entry\n', None)
105+ b'some text\nfor the first entry\n', None)
106 expected_lines = list(compressor.chunks)
107 _, _, _, _ = compressor.compress(('key2',),
108- 'some text\nfor the second entry\n', None)
109+ b'some text\nfor the second entry\n', None)
110 compressor.pop_last()
111 self.assertEqual(expected_lines, compressor.chunks)
112
113@@ -147,41 +147,41 @@
114 def test_stats(self):
115 compressor = self.compressor()
116 compressor.compress(('label',),
117- 'strange\n'
118- 'common very very long line\n'
119- 'plus more text\n', None)
120+ b'strange\n'
121+ b'common very very long line\n'
122+ b'plus more text\n', None)
123 compressor.compress(('newlabel',),
124- 'common very very long line\n'
125- 'plus more text\n'
126- 'different\n'
127- 'moredifferent\n', None)
128+ b'common very very long line\n'
129+ b'plus more text\n'
130+ b'different\n'
131+ b'moredifferent\n', None)
132 compressor.compress(('label3',),
133- 'new\n'
134- 'common very very long line\n'
135- 'plus more text\n'
136- 'different\n'
137- 'moredifferent\n', None)
138+ b'new\n'
139+ b'common very very long line\n'
140+ b'plus more text\n'
141+ b'different\n'
142+ b'moredifferent\n', None)
143 self.assertAlmostEqual(1.9, compressor.ratio(), 1)
144
145 def test_two_nosha_delta(self):
146 compressor = self.compressor()
147 sha1_1, _, _, _ = compressor.compress(('label',),
148- 'strange\ncommon long line\nthat needs a 16 byte match\n', None)
149+ b'strange\ncommon long line\nthat needs a 16 byte match\n', None)
150 expected_lines = list(compressor.chunks)
151 sha1_2, start_point, end_point, _ = compressor.compress(('newlabel',),
152- 'common long line\nthat needs a 16 byte match\ndifferent\n', None)
153- self.assertEqual(sha_string('common long line\n'
154- 'that needs a 16 byte match\n'
155- 'different\n'), sha1_2)
156+ b'common long line\nthat needs a 16 byte match\ndifferent\n', None)
157+ self.assertEqual(sha_string(b'common long line\n'
158+ b'that needs a 16 byte match\n'
159+ b'different\n'), sha1_2)
160 expected_lines.extend([
161 # 'delta', delta length
162- 'd\x0f',
163+ b'd\x0f',
164 # source and target length
165- '\x36',
166+ b'\x36',
167 # copy the line common
168- '\x91\x0a\x2c', #copy, offset 0x0a, len 0x2c
169+ b'\x91\x0a\x2c', #copy, offset 0x0a, len 0x2c
170 # add the line different, and the trailing newline
171- '\x0adifferent\n', # insert 10 bytes
172+ b'\x0adifferent\n', # insert 10 bytes
173 ])
174 self.assertEqualDiffEncoded(expected_lines, compressor.chunks)
175 self.assertEqual(sum(map(len, expected_lines)), end_point)
176@@ -191,29 +191,29 @@
177 # both parents.
178 compressor = self.compressor()
179 sha1_1, _, _, _ = compressor.compress(('label',),
180- 'strange\ncommon very very long line\nwith some extra text\n', None)
181+ b'strange\ncommon very very long line\nwith some extra text\n', None)
182 sha1_2, _, _, _ = compressor.compress(('newlabel',),
183- 'different\nmoredifferent\nand then some more\n', None)
184+ b'different\nmoredifferent\nand then some more\n', None)
185 expected_lines = list(compressor.chunks)
186 sha1_3, start_point, end_point, _ = compressor.compress(('label3',),
187- 'new\ncommon very very long line\nwith some extra text\n'
188- 'different\nmoredifferent\nand then some more\n',
189+ b'new\ncommon very very long line\nwith some extra text\n'
190+ b'different\nmoredifferent\nand then some more\n',
191 None)
192 self.assertEqual(
193- sha_string('new\ncommon very very long line\nwith some extra text\n'
194- 'different\nmoredifferent\nand then some more\n'),
195+ sha_string(b'new\ncommon very very long line\nwith some extra text\n'
196+ b'different\nmoredifferent\nand then some more\n'),
197 sha1_3)
198 expected_lines.extend([
199 # 'delta', delta length
200- 'd\x0b',
201+ b'd\x0b',
202 # source and target length
203- '\x5f'
204+ b'\x5f'
205 # insert new
206- '\x03new',
207+ b'\x03new',
208 # Copy of first parent 'common' range
209- '\x91\x09\x31' # copy, offset 0x09, 0x31 bytes
210+ b'\x91\x09\x31' # copy, offset 0x09, 0x31 bytes
211 # Copy of second parent 'different' range
212- '\x91\x3c\x2b' # copy, offset 0x3c, 0x2b bytes
213+ b'\x91\x3c\x2b' # copy, offset 0x3c, 0x2b bytes
214 ])
215 self.assertEqualDiffEncoded(expected_lines, compressor.chunks)
216 self.assertEqual(sum(map(len, expected_lines)), end_point)
217@@ -226,41 +226,41 @@
218 def test_stats(self):
219 compressor = self.compressor()
220 compressor.compress(('label',),
221- 'strange\n'
222- 'common very very long line\n'
223- 'plus more text\n', None)
224+ b'strange\n'
225+ b'common very very long line\n'
226+ b'plus more text\n', None)
227 compressor.compress(('newlabel',),
228- 'common very very long line\n'
229- 'plus more text\n'
230- 'different\n'
231- 'moredifferent\n', None)
232+ b'common very very long line\n'
233+ b'plus more text\n'
234+ b'different\n'
235+ b'moredifferent\n', None)
236 compressor.compress(('label3',),
237- 'new\n'
238- 'common very very long line\n'
239- 'plus more text\n'
240- 'different\n'
241- 'moredifferent\n', None)
242+ b'new\n'
243+ b'common very very long line\n'
244+ b'plus more text\n'
245+ b'different\n'
246+ b'moredifferent\n', None)
247 self.assertAlmostEqual(1.9, compressor.ratio(), 1)
248
249 def test_two_nosha_delta(self):
250 compressor = self.compressor()
251 sha1_1, _, _, _ = compressor.compress(('label',),
252- 'strange\ncommon long line\nthat needs a 16 byte match\n', None)
253+ b'strange\ncommon long line\nthat needs a 16 byte match\n', None)
254 expected_lines = list(compressor.chunks)
255 sha1_2, start_point, end_point, _ = compressor.compress(('newlabel',),
256- 'common long line\nthat needs a 16 byte match\ndifferent\n', None)
257- self.assertEqual(sha_string('common long line\n'
258- 'that needs a 16 byte match\n'
259- 'different\n'), sha1_2)
260+ b'common long line\nthat needs a 16 byte match\ndifferent\n', None)
261+ self.assertEqual(sha_string(b'common long line\n'
262+ b'that needs a 16 byte match\n'
263+ b'different\n'), sha1_2)
264 expected_lines.extend([
265 # 'delta', delta length
266- 'd\x0f',
267+ b'd\x0f',
268 # target length
269- '\x36',
270+ b'\x36',
271 # copy the line common
272- '\x91\x0a\x2c', #copy, offset 0x0a, len 0x2c
273+ b'\x91\x0a\x2c', #copy, offset 0x0a, len 0x2c
274 # add the line different, and the trailing newline
275- '\x0adifferent\n', # insert 10 bytes
276+ b'\x0adifferent\n', # insert 10 bytes
277 ])
278 self.assertEqualDiffEncoded(expected_lines, compressor.chunks)
279 self.assertEqual(sum(map(len, expected_lines)), end_point)
280@@ -270,29 +270,29 @@
281 # both parents.
282 compressor = self.compressor()
283 sha1_1, _, _, _ = compressor.compress(('label',),
284- 'strange\ncommon very very long line\nwith some extra text\n', None)
285+ b'strange\ncommon very very long line\nwith some extra text\n', None)
286 sha1_2, _, _, _ = compressor.compress(('newlabel',),
287- 'different\nmoredifferent\nand then some more\n', None)
288+ b'different\nmoredifferent\nand then some more\n', None)
289 expected_lines = list(compressor.chunks)
290 sha1_3, start_point, end_point, _ = compressor.compress(('label3',),
291- 'new\ncommon very very long line\nwith some extra text\n'
292- 'different\nmoredifferent\nand then some more\n',
293+ b'new\ncommon very very long line\nwith some extra text\n'
294+ b'different\nmoredifferent\nand then some more\n',
295 None)
296 self.assertEqual(
297- sha_string('new\ncommon very very long line\nwith some extra text\n'
298- 'different\nmoredifferent\nand then some more\n'),
299+ sha_string(b'new\ncommon very very long line\nwith some extra text\n'
300+ b'different\nmoredifferent\nand then some more\n'),
301 sha1_3)
302 expected_lines.extend([
303 # 'delta', delta length
304- 'd\x0c',
305+ b'd\x0c',
306 # target length
307- '\x5f'
308+ b'\x5f'
309 # insert new
310- '\x04new\n',
311+ b'\x04new\n',
312 # Copy of first parent 'common' range
313- '\x91\x0a\x30' # copy, offset 0x0a, 0x30 bytes
314+ b'\x91\x0a\x30' # copy, offset 0x0a, 0x30 bytes
315 # Copy of second parent 'different' range
316- '\x91\x3c\x2b' # copy, offset 0x3c, 0x2b bytes
317+ b'\x91\x3c\x2b' # copy, offset 0x3c, 0x2b bytes
318 ])
319 self.assertEqualDiffEncoded(expected_lines, compressor.chunks)
320 self.assertEqual(sum(map(len, expected_lines)), end_point)
321@@ -316,32 +316,32 @@
322
323 def test_from_empty_bytes(self):
324 self.assertRaises(ValueError,
325- groupcompress.GroupCompressBlock.from_bytes, '')
326+ groupcompress.GroupCompressBlock.from_bytes, b'')
327
328 def test_from_minimal_bytes(self):
329 block = groupcompress.GroupCompressBlock.from_bytes(
330- 'gcb1z\n0\n0\n')
331+ b'gcb1z\n0\n0\n')
332 self.assertIsInstance(block, groupcompress.GroupCompressBlock)
333 self.assertIs(None, block._content)
334- self.assertEqual('', block._z_content)
335+ self.assertEqual(b'', block._z_content)
336 block._ensure_content()
337- self.assertEqual('', block._content)
338- self.assertEqual('', block._z_content)
339+ self.assertEqual(b'', block._content)
340+ self.assertEqual(b'', block._z_content)
341 block._ensure_content() # Ensure content is safe to call 2x
342
343 def test_from_invalid(self):
344 self.assertRaises(ValueError,
345 groupcompress.GroupCompressBlock.from_bytes,
346- 'this is not a valid header')
347+ b'this is not a valid header')
348
349 def test_from_bytes(self):
350- content = ('a tiny bit of content\n')
351+ content = (b'a tiny bit of content\n')
352 z_content = zlib.compress(content)
353 z_bytes = (
354- 'gcb1z\n' # group compress block v1 plain
355- '%d\n' # Length of compressed content
356- '%d\n' # Length of uncompressed content
357- '%s' # Compressed content
358+ b'gcb1z\n' # group compress block v1 plain
359+ b'%d\n' # Length of compressed content
360+ b'%d\n' # Length of uncompressed content
361+ b'%s' # Compressed content
362 ) % (len(z_content), len(content), z_content)
363 block = groupcompress.GroupCompressBlock.from_bytes(
364 z_bytes)
365@@ -354,20 +354,20 @@
366 self.assertEqual(content, block._content)
367
368 def test_to_chunks(self):
369- content_chunks = ['this is some content\n',
370- 'this content will be compressed\n']
371+ content_chunks = [b'this is some content\n',
372+ b'this content will be compressed\n']
373 content_len = sum(map(len, content_chunks))
374- content = ''.join(content_chunks)
375+ content = b''.join(content_chunks)
376 gcb = groupcompress.GroupCompressBlock()
377 gcb.set_chunked_content(content_chunks, content_len)
378 total_len, block_chunks = gcb.to_chunks()
379- block_bytes = ''.join(block_chunks)
380+ block_bytes = b''.join(block_chunks)
381 self.assertEqual(gcb._z_content_length, len(gcb._z_content))
382 self.assertEqual(total_len, len(block_bytes))
383 self.assertEqual(gcb._content_length, content_len)
384- expected_header =('gcb1z\n' # group compress block v1 zlib
385- '%d\n' # Length of compressed content
386- '%d\n' # Length of uncompressed content
387+ expected_header =(b'gcb1z\n' # group compress block v1 zlib
388+ b'%d\n' # Length of compressed content
389+ b'%d\n' # Length of uncompressed content
390 ) % (gcb._z_content_length, gcb._content_length)
391 # The first chunk should be the header chunk. It is small, fixed size,
392 # and there is no compelling reason to split it up
393@@ -378,30 +378,30 @@
394 self.assertEqual(content, raw_bytes)
395
396 def test_to_bytes(self):
397- content = ('this is some content\n'
398- 'this content will be compressed\n')
399+ content = (b'this is some content\n'
400+ b'this content will be compressed\n')
401 gcb = groupcompress.GroupCompressBlock()
402 gcb.set_content(content)
403- bytes = gcb.to_bytes()
404+ data = gcb.to_bytes()
405 self.assertEqual(gcb._z_content_length, len(gcb._z_content))
406 self.assertEqual(gcb._content_length, len(content))
407- expected_header =('gcb1z\n' # group compress block v1 zlib
408- '%d\n' # Length of compressed content
409- '%d\n' # Length of uncompressed content
410+ expected_header =(b'gcb1z\n' # group compress block v1 zlib
411+ b'%d\n' # Length of compressed content
412+ b'%d\n' # Length of uncompressed content
413 ) % (gcb._z_content_length, gcb._content_length)
414- self.assertStartsWith(bytes, expected_header)
415- remaining_bytes = bytes[len(expected_header):]
416+ self.assertStartsWith(data, expected_header)
417+ remaining_bytes = data[len(expected_header):]
418 raw_bytes = zlib.decompress(remaining_bytes)
419 self.assertEqual(content, raw_bytes)
420
421 # we should get the same results if using the chunked version
422 gcb = groupcompress.GroupCompressBlock()
423- gcb.set_chunked_content(['this is some content\n'
424- 'this content will be compressed\n'],
425+ gcb.set_chunked_content([b'this is some content\n'
426+ b'this content will be compressed\n'],
427 len(content))
428- old_bytes = bytes
429- bytes = gcb.to_bytes()
430- self.assertEqual(old_bytes, bytes)
431+ old_data = data
432+ data = gcb.to_bytes()
433+ self.assertEqual(old_data, data)
434
435 def test_partial_decomp(self):
436 content_chunks = []
437@@ -410,11 +410,11 @@
438 # compresses a bit too well, we want a combination, so we combine a sha
439 # hash with compressible data.
440 for i in range(2048):
441- next_content = '%d\nThis is a bit of duplicate text\n' % (i,)
442+ next_content = b'%d\nThis is a bit of duplicate text\n' % (i,)
443 content_chunks.append(next_content)
444 next_sha1 = osutils.sha_string(next_content)
445- content_chunks.append(next_sha1 + '\n')
446- content = ''.join(content_chunks)
447+ content_chunks.append(next_sha1 + b'\n')
448+ content = b''.join(content_chunks)
449 self.assertEqual(158634, len(content))
450 z_content = zlib.compress(content)
451 self.assertEqual(57182, len(z_content))
452@@ -455,11 +455,11 @@
453 # compresses a bit too well, we want a combination, so we combine a sha
454 # hash with compressible data.
455 for i in range(2048):
456- next_content = '%d\nThis is a bit of duplicate text\n' % (i,)
457+ next_content = b'%d\nThis is a bit of duplicate text\n' % (i,)
458 content_chunks.append(next_content)
459 next_sha1 = osutils.sha_string(next_content)
460- content_chunks.append(next_sha1 + '\n')
461- content = ''.join(content_chunks)
462+ content_chunks.append(next_sha1 + b'\n')
463+ content = b''.join(content_chunks)
464 self.assertEqual(158634, len(content))
465 z_content = zlib.compress(content)
466 self.assertEqual(57182, len(z_content))
467@@ -477,14 +477,14 @@
468 self.assertIs(None, block._z_content_decompressor)
469
470 def test__dump(self):
471- dup_content = 'some duplicate content\nwhich is sufficiently long\n'
472- key_to_text = {('1',): dup_content + '1 unique\n',
473- ('2',): dup_content + '2 extra special\n'}
474+ dup_content = b'some duplicate content\nwhich is sufficiently long\n'
475+ key_to_text = {(b'1',): dup_content + b'1 unique\n',
476+ (b'2',): dup_content + b'2 extra special\n'}
477 locs, block = self.make_block(key_to_text)
478- self.assertEqual([('f', len(key_to_text[('1',)])),
479- ('d', 21, len(key_to_text[('2',)]),
480- [('c', 2, len(dup_content)),
481- ('i', len('2 extra special\n'), '')
482+ self.assertEqual([(b'f', len(key_to_text[(b'1',)])),
483+ (b'd', 21, len(key_to_text[(b'2',)]),
484+ [(b'c', 2, len(dup_content)),
485+ (b'i', len(b'2 extra special\n'), b'')
486 ]),
487 ], block._dump())
488
489@@ -516,10 +516,10 @@
490 return btree_index.BTreeGraphIndex(trans, name, size)
491
492 def make_g_index_missing_parent(self):
493- graph_index = self.make_g_index('missing_parent', 1,
494- [(('parent', ), '2 78 2 10', ([],)),
495- (('tip', ), '2 78 2 10',
496- ([('parent', ), ('missing-parent', )],)),
497+ graph_index = self.make_g_index(b'missing_parent', 1,
498+ [((b'parent', ), b'2 78 2 10', ([],)),
499+ ((b'tip', ), b'2 78 2 10',
500+ ([(b'parent', ), (b'missing-parent', )],)),
501 ])
502 return graph_index
503
504@@ -527,76 +527,78 @@
505 # Consider promoting 'as-requested' to general availability, and
506 # make this a VF interface test
507 vf = self.make_test_vf(False, dir='source')
508- vf.add_lines(('a',), (), ['lines\n'])
509- vf.add_lines(('b',), (), ['lines\n'])
510- vf.add_lines(('c',), (), ['lines\n'])
511- vf.add_lines(('d',), (), ['lines\n'])
512+ vf.add_lines((b'a',), (), [b'lines\n'])
513+ vf.add_lines((b'b',), (), [b'lines\n'])
514+ vf.add_lines((b'c',), (), [b'lines\n'])
515+ vf.add_lines((b'd',), (), [b'lines\n'])
516 vf.writer.end()
517 keys = [record.key for record in vf.get_record_stream(
518- [('a',), ('b',), ('c',), ('d',)],
519+ [(b'a',), (b'b',), (b'c',), (b'd',)],
520 'as-requested', False)]
521- self.assertEqual([('a',), ('b',), ('c',), ('d',)], keys)
522+ self.assertEqual([(b'a',), (b'b',), (b'c',), (b'd',)], keys)
523 keys = [record.key for record in vf.get_record_stream(
524- [('b',), ('a',), ('d',), ('c',)],
525+ [(b'b',), (b'a',), (b'd',), (b'c',)],
526 'as-requested', False)]
527- self.assertEqual([('b',), ('a',), ('d',), ('c',)], keys)
528+ self.assertEqual([(b'b',), (b'a',), (b'd',), (b'c',)], keys)
529
530 # It should work even after being repacked into another VF
531 vf2 = self.make_test_vf(False, dir='target')
532 vf2.insert_record_stream(vf.get_record_stream(
533- [('b',), ('a',), ('d',), ('c',)], 'as-requested', False))
534+ [(b'b',), (b'a',), (b'd',), (b'c',)], 'as-requested', False))
535 vf2.writer.end()
536
537 keys = [record.key for record in vf2.get_record_stream(
538- [('a',), ('b',), ('c',), ('d',)],
539+ [(b'a',), (b'b',), (b'c',), (b'd',)],
540 'as-requested', False)]
541- self.assertEqual([('a',), ('b',), ('c',), ('d',)], keys)
542+ self.assertEqual([(b'a',), (b'b',), (b'c',), (b'd',)], keys)
543 keys = [record.key for record in vf2.get_record_stream(
544- [('b',), ('a',), ('d',), ('c',)],
545+ [(b'b',), (b'a',), (b'd',), (b'c',)],
546 'as-requested', False)]
547- self.assertEqual([('b',), ('a',), ('d',), ('c',)], keys)
548+ self.assertEqual([(b'b',), (b'a',), (b'd',), (b'c',)], keys)
549
550 def test_get_record_stream_max_bytes_to_index_default(self):
551 vf = self.make_test_vf(True, dir='source')
552- vf.add_lines(('a',), (), ['lines\n'])
553+ vf.add_lines((b'a',), (), [b'lines\n'])
554 vf.writer.end()
555- record = next(vf.get_record_stream([('a',)], 'unordered', True))
556+ record = next(vf.get_record_stream([(b'a',)], 'unordered', True))
557 self.assertEqual(vf._DEFAULT_COMPRESSOR_SETTINGS,
558 record._manager._get_compressor_settings())
559
560 def test_get_record_stream_accesses_compressor_settings(self):
561 vf = self.make_test_vf(True, dir='source')
562- vf.add_lines(('a',), (), ['lines\n'])
563+ vf.add_lines((b'a',), (), [b'lines\n'])
564 vf.writer.end()
565 vf._max_bytes_to_index = 1234
566- record = next(vf.get_record_stream([('a',)], 'unordered', True))
567+ record = next(vf.get_record_stream([(b'a',)], 'unordered', True))
568 self.assertEqual(dict(max_bytes_to_index=1234),
569 record._manager._get_compressor_settings())
570
571+ @staticmethod
572+ def grouped_stream(revision_ids, first_parents=()):
573+ parents = first_parents
574+ for revision_id in revision_ids:
575+ key = (revision_id,)
576+ record = versionedfile.FulltextContentFactory(
577+ key, parents, None,
578+ b'some content that is\n'
579+ b'identical except for\n'
580+ b'revision_id:%s\n' % (revision_id,))
581+ yield record
582+ parents = (key,)
583+
584 def test_insert_record_stream_reuses_blocks(self):
585 vf = self.make_test_vf(True, dir='source')
586- def grouped_stream(revision_ids, first_parents=()):
587- parents = first_parents
588- for revision_id in revision_ids:
589- key = (revision_id,)
590- record = versionedfile.FulltextContentFactory(
591- key, parents, None,
592- 'some content that is\n'
593- 'identical except for\n'
594- 'revision_id:%s\n' % (revision_id,))
595- yield record
596- parents = (key,)
597 # One group, a-d
598- vf.insert_record_stream(grouped_stream(['a', 'b', 'c', 'd']))
599+ vf.insert_record_stream(self.grouped_stream([b'a', b'b', b'c', b'd']))
600 # Second group, e-h
601- vf.insert_record_stream(grouped_stream(['e', 'f', 'g', 'h'],
602- first_parents=(('d',),)))
603+ vf.insert_record_stream(self.grouped_stream(
604+ [b'e', b'f', b'g', b'h'], first_parents=((b'd',),)))
605 block_bytes = {}
606- stream = vf.get_record_stream([(r,) for r in 'abcdefgh'],
607- 'unordered', False)
608+ stream = vf.get_record_stream(
609+ [(r.encode(),) for r in 'abcdefgh'], 'unordered', False)
610 num_records = 0
611 for record in stream:
612- if record.key in [('a',), ('e',)]:
613+ if record.key in [(b'a',), (b'e',)]:
614 self.assertEqual('groupcompress-block', record.storage_kind)
615 else:
616 self.assertEqual('groupcompress-block-ref',
617@@ -605,28 +607,27 @@
618 num_records += 1
619 self.assertEqual(8, num_records)
620 for r in 'abcd':
621- key = (r,)
622- self.assertIs(block_bytes[key], block_bytes[('a',)])
623- self.assertNotEqual(block_bytes[key], block_bytes[('e',)])
624+ key = (r.encode(),)
625+ self.assertIs(block_bytes[key], block_bytes[(b'a',)])
626+ self.assertNotEqual(block_bytes[key], block_bytes[(b'e',)])
627 for r in 'efgh':
628- key = (r,)
629- self.assertIs(block_bytes[key], block_bytes[('e',)])
630- self.assertNotEqual(block_bytes[key], block_bytes[('a',)])
631+ key = (r.encode(),)
632+ self.assertIs(block_bytes[key], block_bytes[(b'e',)])
633+ self.assertNotEqual(block_bytes[key], block_bytes[(b'a',)])
634 # Now copy the blocks into another vf, and ensure that the blocks are
635 # preserved without creating new entries
636 vf2 = self.make_test_vf(True, dir='target')
637+ keys = [(r.encode(),) for r in 'abcdefgh']
638 # ordering in 'groupcompress' order, should actually swap the groups in
639 # the target vf, but the groups themselves should not be disturbed.
640 def small_size_stream():
641- for record in vf.get_record_stream([(r,) for r in 'abcdefgh'],
642- 'groupcompress', False):
643+ for record in vf.get_record_stream(keys, 'groupcompress', False):
644 record._manager._full_enough_block_size = \
645 record._manager._block._content_length
646 yield record
647-
648+
649 vf2.insert_record_stream(small_size_stream())
650- stream = vf2.get_record_stream([(r,) for r in 'abcdefgh'],
651- 'groupcompress', False)
652+ stream = vf2.get_record_stream(keys, 'groupcompress', False)
653 vf2.writer.end()
654 num_records = 0
655 for record in stream:
656@@ -637,30 +638,19 @@
657
658 def test_insert_record_stream_packs_on_the_fly(self):
659 vf = self.make_test_vf(True, dir='source')
660- def grouped_stream(revision_ids, first_parents=()):
661- parents = first_parents
662- for revision_id in revision_ids:
663- key = (revision_id,)
664- record = versionedfile.FulltextContentFactory(
665- key, parents, None,
666- 'some content that is\n'
667- 'identical except for\n'
668- 'revision_id:%s\n' % (revision_id,))
669- yield record
670- parents = (key,)
671 # One group, a-d
672- vf.insert_record_stream(grouped_stream(['a', 'b', 'c', 'd']))
673+ vf.insert_record_stream(self.grouped_stream([b'a', b'b', b'c', b'd']))
674 # Second group, e-h
675- vf.insert_record_stream(grouped_stream(['e', 'f', 'g', 'h'],
676- first_parents=(('d',),)))
677+ vf.insert_record_stream(self.grouped_stream(
678+ [b'e', b'f', b'g', b'h'], first_parents=((b'd',),)))
679 # Now copy the blocks into another vf, and see that the
680 # insert_record_stream rebuilt a new block on-the-fly because of
681 # under-utilization
682 vf2 = self.make_test_vf(True, dir='target')
683+ keys = [(r.encode(),) for r in 'abcdefgh']
684 vf2.insert_record_stream(vf.get_record_stream(
685- [(r,) for r in 'abcdefgh'], 'groupcompress', False))
686- stream = vf2.get_record_stream([(r,) for r in 'abcdefgh'],
687- 'groupcompress', False)
688+ keys, 'groupcompress', False))
689+ stream = vf2.get_record_stream(keys, 'groupcompress', False)
690 vf2.writer.end()
691 num_records = 0
692 # All of the records should be recombined into a single block
693@@ -675,39 +665,27 @@
694
695 def test__insert_record_stream_no_reuse_block(self):
696 vf = self.make_test_vf(True, dir='source')
697- def grouped_stream(revision_ids, first_parents=()):
698- parents = first_parents
699- for revision_id in revision_ids:
700- key = (revision_id,)
701- record = versionedfile.FulltextContentFactory(
702- key, parents, None,
703- 'some content that is\n'
704- 'identical except for\n'
705- 'revision_id:%s\n' % (revision_id,))
706- yield record
707- parents = (key,)
708 # One group, a-d
709- vf.insert_record_stream(grouped_stream(['a', 'b', 'c', 'd']))
710+ vf.insert_record_stream(self.grouped_stream([b'a', b'b', b'c', b'd']))
711 # Second group, e-h
712- vf.insert_record_stream(grouped_stream(['e', 'f', 'g', 'h'],
713- first_parents=(('d',),)))
714+ vf.insert_record_stream(self.grouped_stream(
715+ [b'e', b'f', b'g', b'h'], first_parents=((b'd',),)))
716 vf.writer.end()
717- self.assertEqual(8, len(list(vf.get_record_stream(
718- [(r,) for r in 'abcdefgh'],
719- 'unordered', False))))
720+ keys = [(r.encode(),) for r in 'abcdefgh']
721+ self.assertEqual(8, len(list(
722+ vf.get_record_stream(keys, 'unordered', False))))
723 # Now copy the blocks into another vf, and ensure that the blocks are
724 # preserved without creating new entries
725 vf2 = self.make_test_vf(True, dir='target')
726 # ordering in 'groupcompress' order, should actually swap the groups in
727 # the target vf, but the groups themselves should not be disturbed.
728 list(vf2._insert_record_stream(vf.get_record_stream(
729- [(r,) for r in 'abcdefgh'], 'groupcompress', False),
730+ keys, 'groupcompress', False),
731 reuse_blocks=False))
732 vf2.writer.end()
733 # After inserting with reuse_blocks=False, we should have everything in
734 # a single new block.
735- stream = vf2.get_record_stream([(r,) for r in 'abcdefgh'],
736- 'groupcompress', False)
737+ stream = vf2.get_record_stream(keys, 'groupcompress', False)
738 block = None
739 for record in stream:
740 if block is None:
741@@ -723,7 +701,7 @@
742 track_external_parent_refs=True)
743 index.scan_unvalidated_index(unvalidated)
744 self.assertEqual(
745- frozenset([('missing-parent',)]), index.get_missing_parents())
746+ frozenset([(b'missing-parent',)]), index.get_missing_parents())
747
748 def test_track_external_parent_refs(self):
749 g_index = self.make_g_index('empty', 1, [])
750@@ -734,19 +712,19 @@
751 add_callback=mod_index.add_nodes,
752 track_external_parent_refs=True)
753 index.add_records([
754- (('new-key',), '2 10 2 10', [(('parent-1',), ('parent-2',))])])
755+ ((b'new-key',), b'2 10 2 10', [((b'parent-1',), (b'parent-2',))])])
756 self.assertEqual(
757- frozenset([('parent-1',), ('parent-2',)]),
758+ frozenset([(b'parent-1',), (b'parent-2',)]),
759 index.get_missing_parents())
760
761 def make_source_with_b(self, a_parent, path):
762 source = self.make_test_vf(True, dir=path)
763- source.add_lines(('a',), (), ['lines\n'])
764+ source.add_lines((b'a',), (), [b'lines\n'])
765 if a_parent:
766- b_parents = (('a',),)
767+ b_parents = ((b'a',),)
768 else:
769 b_parents = ()
770- source.add_lines(('b',), b_parents, ['lines\n'])
771+ source.add_lines((b'b',), b_parents, [b'lines\n'])
772 return source
773
774 def do_inconsistent_inserts(self, inconsistency_fatal):
775@@ -755,7 +733,7 @@
776 for x in range(2):
777 source = self.make_source_with_b(x==1, 'source%s' % x)
778 target.insert_record_stream(source.get_record_stream(
779- [('b',)], 'unordered', False))
780+ [(b'b',)], 'unordered', False))
781
782 def test_inconsistent_redundant_inserts_warn(self):
783 """Should not insert a record that is already present."""
784@@ -768,22 +746,24 @@
785 self.do_inconsistent_inserts(inconsistency_fatal=False)
786 finally:
787 trace.warning = _trace_warning
788- self.assertEqual(["inconsistent details in skipped record: ('b',)"
789- " ('42 32 0 8', ((),)) ('74 32 0 8', ((('a',),),))"],
790- warnings)
791+ self.assertContainsRe(
792+ "\n".join(warnings),
793+ r"^inconsistent details in skipped record: \(b?'b',\)"
794+ r" \(b?'42 32 0 8', \(\(\),\)\)"
795+ r" \(b?'74 32 0 8', \(\(\(b?'a',\),\),\)\)$")
796
797 def test_inconsistent_redundant_inserts_raises(self):
798 e = self.assertRaises(knit.KnitCorrupt, self.do_inconsistent_inserts,
799 inconsistency_fatal=True)
800- self.assertContainsRe(str(e), "Knit.* corrupt: inconsistent details"
801- " in add_records:"
802- " \\('b',\\) \\('42 32 0 8', \\(\\(\\),\\)\\) \\('74 32"
803- " 0 8', \\(\\(\\('a',\\),\\),\\)\\)")
804+ self.assertContainsRe(str(e), r"Knit.* corrupt: inconsistent details"
805+ r" in add_records:"
806+ r" \(b?'b',\) \(b?'42 32 0 8', \(\(\),\)\)"
807+ r" \(b?'74 32 0 8', \(\(\(b?'a',\),\),\)\)")
808
809 def test_clear_cache(self):
810 vf = self.make_source_with_b(True, 'source')
811 vf.writer.end()
812- for record in vf.get_record_stream([('a',), ('b',)], 'unordered',
813+ for record in vf.get_record_stream([(b'a',), (b'b',)], 'unordered',
814 True):
815 pass
816 self.assertTrue(len(vf._group_cache) > 0)
817@@ -908,8 +888,8 @@
818 (read_memo1, groupcompress.GroupCompressBlock()),
819 (read_memo2, groupcompress.GroupCompressBlock())])
820 locations = {
821- ('key1',): (read_memo1 + (None, None), None, None, None),
822- ('key2',): (read_memo2 + (None, None), None, None, None)}
823+ ('key1',): (read_memo1 + (0, 0), None, None, None),
824+ ('key2',): (read_memo2 + (0, 0), None, None, None)}
825 batcher = groupcompress._BatchingBlockFetcher(gcvf, locations)
826 batcher.add_key(('key1',))
827 batcher.add_key(('key2',))
828@@ -929,7 +909,7 @@
829 gcvf = StubGCVF()
830 gcvf._group_cache[read_memo] = fake_block
831 locations = {
832- ('key',): (read_memo + (None, None), None, None, None)}
833+ ('key',): (read_memo + (0, 0), None, None, None)}
834 batcher = groupcompress._BatchingBlockFetcher(gcvf, locations)
835 batcher.add_key(('key',))
836 self.assertEqual([], list(batcher.yield_factories()))
837@@ -942,20 +922,20 @@
838 class TestLazyGroupCompress(tests.TestCaseWithTransport):
839
840 _texts = {
841- ('key1',): "this is a text\n"
842- "with a reasonable amount of compressible bytes\n"
843- "which can be shared between various other texts\n",
844- ('key2',): "another text\n"
845- "with a reasonable amount of compressible bytes\n"
846- "which can be shared between various other texts\n",
847- ('key3',): "yet another text which won't be extracted\n"
848- "with a reasonable amount of compressible bytes\n"
849- "which can be shared between various other texts\n",
850- ('key4',): "this will be extracted\n"
851- "but references most of its bytes from\n"
852- "yet another text which won't be extracted\n"
853- "with a reasonable amount of compressible bytes\n"
854- "which can be shared between various other texts\n",
855+ (b'key1',): b"this is a text\n"
856+ b"with a reasonable amount of compressible bytes\n"
857+ b"which can be shared between various other texts\n",
858+ (b'key2',): b"another text\n"
859+ b"with a reasonable amount of compressible bytes\n"
860+ b"which can be shared between various other texts\n",
861+ (b'key3',): b"yet another text which won't be extracted\n"
862+ b"with a reasonable amount of compressible bytes\n"
863+ b"which can be shared between various other texts\n",
864+ (b'key4',): b"this will be extracted\n"
865+ b"but references most of its bytes from\n"
866+ b"yet another text which won't be extracted\n"
867+ b"with a reasonable amount of compressible bytes\n"
868+ b"which can be shared between various other texts\n",
869 }
870 def make_block(self, key_to_text):
871 """Create a GroupCompressBlock, filling it with the given texts."""
872@@ -983,26 +963,26 @@
873 def test_get_fulltexts(self):
874 locations, block = self.make_block(self._texts)
875 manager = groupcompress._LazyGroupContentManager(block)
876- self.add_key_to_manager(('key1',), locations, block, manager)
877- self.add_key_to_manager(('key2',), locations, block, manager)
878+ self.add_key_to_manager((b'key1',), locations, block, manager)
879+ self.add_key_to_manager((b'key2',), locations, block, manager)
880 result_order = []
881 for record in manager.get_record_stream():
882 result_order.append(record.key)
883 text = self._texts[record.key]
884 self.assertEqual(text, record.get_bytes_as('fulltext'))
885- self.assertEqual([('key1',), ('key2',)], result_order)
886+ self.assertEqual([(b'key1',), (b'key2',)], result_order)
887
888 # If we build the manager in the opposite order, we should get them
889 # back in the opposite order
890 manager = groupcompress._LazyGroupContentManager(block)
891- self.add_key_to_manager(('key2',), locations, block, manager)
892- self.add_key_to_manager(('key1',), locations, block, manager)
893+ self.add_key_to_manager((b'key2',), locations, block, manager)
894+ self.add_key_to_manager((b'key1',), locations, block, manager)
895 result_order = []
896 for record in manager.get_record_stream():
897 result_order.append(record.key)
898 text = self._texts[record.key]
899 self.assertEqual(text, record.get_bytes_as('fulltext'))
900- self.assertEqual([('key2',), ('key1',)], result_order)
901+ self.assertEqual([(b'key2',), (b'key1',)], result_order)
902
903 def test__wire_bytes_no_keys(self):
904 locations, block = self.make_block(self._texts)
905@@ -1012,13 +992,13 @@
906 # We should have triggered a strip, since we aren't using any content
907 stripped_block = manager._block.to_bytes()
908 self.assertTrue(block_length > len(stripped_block))
909- empty_z_header = zlib.compress('')
910- self.assertEqual('groupcompress-block\n'
911- '8\n' # len(compress(''))
912- '0\n' # len('')
913- '%d\n'# compressed block len
914- '%s' # zheader
915- '%s' # block
916+ empty_z_header = zlib.compress(b'')
917+ self.assertEqual(b'groupcompress-block\n'
918+ b'8\n' # len(compress(''))
919+ b'0\n' # len('')
920+ b'%d\n'# compressed block len
921+ b'%s' # zheader
922+ b'%s' # block
923 % (len(stripped_block), empty_z_header,
924 stripped_block),
925 wire_bytes)
926@@ -1026,32 +1006,32 @@
927 def test__wire_bytes(self):
928 locations, block = self.make_block(self._texts)
929 manager = groupcompress._LazyGroupContentManager(block)
930- self.add_key_to_manager(('key1',), locations, block, manager)
931- self.add_key_to_manager(('key4',), locations, block, manager)
932+ self.add_key_to_manager((b'key1',), locations, block, manager)
933+ self.add_key_to_manager((b'key4',), locations, block, manager)
934 block_bytes = block.to_bytes()
935 wire_bytes = manager._wire_bytes()
936 (storage_kind, z_header_len, header_len,
937- block_len, rest) = wire_bytes.split('\n', 4)
938+ block_len, rest) = wire_bytes.split(b'\n', 4)
939 z_header_len = int(z_header_len)
940 header_len = int(header_len)
941 block_len = int(block_len)
942- self.assertEqual('groupcompress-block', storage_kind)
943+ self.assertEqual(b'groupcompress-block', storage_kind)
944 self.assertEqual(34, z_header_len)
945 self.assertEqual(26, header_len)
946 self.assertEqual(len(block_bytes), block_len)
947 z_header = rest[:z_header_len]
948 header = zlib.decompress(z_header)
949 self.assertEqual(header_len, len(header))
950- entry1 = locations[('key1',)]
951- entry4 = locations[('key4',)]
952- self.assertEqualDiff('key1\n'
953- '\n' # no parents
954- '%d\n' # start offset
955- '%d\n' # end offset
956- 'key4\n'
957- '\n'
958- '%d\n'
959- '%d\n'
960+ entry1 = locations[(b'key1',)]
961+ entry4 = locations[(b'key4',)]
962+ self.assertEqualDiff(b'key1\n'
963+ b'\n' # no parents
964+ b'%d\n' # start offset
965+ b'%d\n' # end offset
966+ b'key4\n'
967+ b'\n'
968+ b'%d\n'
969+ b'%d\n'
970 % (entry1[0], entry1[1],
971 entry4[0], entry4[1]),
972 header)
973@@ -1061,10 +1041,10 @@
974 def test_from_bytes(self):
975 locations, block = self.make_block(self._texts)
976 manager = groupcompress._LazyGroupContentManager(block)
977- self.add_key_to_manager(('key1',), locations, block, manager)
978- self.add_key_to_manager(('key4',), locations, block, manager)
979+ self.add_key_to_manager((b'key1',), locations, block, manager)
980+ self.add_key_to_manager((b'key4',), locations, block, manager)
981 wire_bytes = manager._wire_bytes()
982- self.assertStartsWith(wire_bytes, 'groupcompress-block\n')
983+ self.assertStartsWith(wire_bytes, b'groupcompress-block\n')
984 manager = groupcompress._LazyGroupContentManager.from_bytes(wire_bytes)
985 self.assertIsInstance(manager, groupcompress._LazyGroupContentManager)
986 self.assertEqual(2, len(manager._factories))
987@@ -1074,7 +1054,7 @@
988 result_order.append(record.key)
989 text = self._texts[record.key]
990 self.assertEqual(text, record.get_bytes_as('fulltext'))
991- self.assertEqual([('key1',), ('key4',)], result_order)
992+ self.assertEqual([(b'key1',), (b'key4',)], result_order)
993
994 def test__check_rebuild_no_changes(self):
995 block, manager = self.make_block_and_full_manager(self._texts)
996@@ -1085,14 +1065,14 @@
997 locations, block = self.make_block(self._texts)
998 manager = groupcompress._LazyGroupContentManager(block)
999 # Request just the first key, which should trigger a 'strip' action
1000- self.add_key_to_manager(('key1',), locations, block, manager)
1001+ self.add_key_to_manager((b'key1',), locations, block, manager)
1002 manager._check_rebuild_block()
1003 self.assertIsNot(block, manager._block)
1004 self.assertTrue(block._content_length > manager._block._content_length)
1005 # We should be able to still get the content out of this block, though
1006 # it should only have 1 entry
1007 for record in manager.get_record_stream():
1008- self.assertEqual(('key1',), record.key)
1009+ self.assertEqual((b'key1',), record.key)
1010 self.assertEqual(self._texts[record.key],
1011 record.get_bytes_as('fulltext'))
1012
1013@@ -1100,12 +1080,12 @@
1014 locations, block = self.make_block(self._texts)
1015 manager = groupcompress._LazyGroupContentManager(block)
1016 # Request a small key in the middle should trigger a 'rebuild'
1017- self.add_key_to_manager(('key4',), locations, block, manager)
1018+ self.add_key_to_manager((b'key4',), locations, block, manager)
1019 manager._check_rebuild_block()
1020 self.assertIsNot(block, manager._block)
1021 self.assertTrue(block._content_length > manager._block._content_length)
1022 for record in manager.get_record_stream():
1023- self.assertEqual(('key4',), record.key)
1024+ self.assertEqual((b'key4',), record.key)
1025 self.assertEqual(self._texts[record.key],
1026 record.get_bytes_as('fulltext'))
1027
1028@@ -1145,8 +1125,8 @@
1029 get_compressor_settings=lambda: dict(max_bytes_to_index=32))
1030 gc = manager._make_group_compressor()
1031 self.assertEqual(32, gc._delta_index._max_bytes_to_index)
1032- self.add_key_to_manager(('key3',), locations, old_block, manager)
1033- self.add_key_to_manager(('key4',), locations, old_block, manager)
1034+ self.add_key_to_manager((b'key3',), locations, old_block, manager)
1035+ self.add_key_to_manager((b'key4',), locations, old_block, manager)
1036 action, last_byte, total_bytes = manager._check_rebuild_action()
1037 self.assertEqual('rebuild', action)
1038 manager._rebuild_block()
1039@@ -1173,14 +1153,14 @@
1040
1041 def test_check_is_well_utilized_mixed_keys(self):
1042 texts = {}
1043- f1k1 = ('f1', 'k1')
1044- f1k2 = ('f1', 'k2')
1045- f2k1 = ('f2', 'k1')
1046- f2k2 = ('f2', 'k2')
1047- texts[f1k1] = self._texts[('key1',)]
1048- texts[f1k2] = self._texts[('key2',)]
1049- texts[f2k1] = self._texts[('key3',)]
1050- texts[f2k2] = self._texts[('key4',)]
1051+ f1k1 = (b'f1', b'k1')
1052+ f1k2 = (b'f1', b'k2')
1053+ f2k1 = (b'f2', b'k1')
1054+ f2k2 = (b'f2', b'k2')
1055+ texts[f1k1] = self._texts[(b'key1',)]
1056+ texts[f1k2] = self._texts[(b'key2',)]
1057+ texts[f2k1] = self._texts[(b'key3',)]
1058+ texts[f2k2] = self._texts[(b'key4',)]
1059 block, manager = self.make_block_and_full_manager(texts)
1060 self.assertFalse(manager.check_is_well_utilized())
1061 manager._full_enough_block_size = block._content_length
1062@@ -1194,14 +1174,14 @@
1063 locations, block = self.make_block(self._texts)
1064 manager = groupcompress._LazyGroupContentManager(block)
1065 manager._full_enough_block_size = block._content_length
1066- self.add_key_to_manager(('key1',), locations, block, manager)
1067- self.add_key_to_manager(('key2',), locations, block, manager)
1068+ self.add_key_to_manager((b'key1',), locations, block, manager)
1069+ self.add_key_to_manager((b'key2',), locations, block, manager)
1070 # Just using the content from key1 and 2 is not enough to be considered
1071 # 'complete'
1072 self.assertFalse(manager.check_is_well_utilized())
1073 # However if we add key3, then we have enough, as we only require 75%
1074 # consumption
1075- self.add_key_to_manager(('key4',), locations, block, manager)
1076+ self.add_key_to_manager((b'key4',), locations, block, manager)
1077 self.assertTrue(manager.check_is_well_utilized())
1078
1079
1080@@ -1224,4 +1204,3 @@
1081 self.assertEqual("_GCBuildDetails(('INDEX', 10, 20, 0, 5),"
1082 " (('parent1',), ('parent2',)))",
1083 repr(bd))
1084-
1085
1086=== modified file 'breezy/tests/test_rename_map.py'
1087--- breezy/tests/test_rename_map.py 2017-05-22 00:56:52 +0000
1088+++ breezy/tests/test_rename_map.py 2017-11-11 18:32:23 +0000
1089@@ -200,3 +200,18 @@
1090 notes = self.captureNotes(RenameMap.guess_renames, tree,
1091 dry_run=False)[0]
1092 self.assertEqual('file => file2', ''.join(notes))
1093+
1094+ def test_guess_rename_handles_new_directories(self):
1095+ """When a file was moved into a new directory."""
1096+ tree = self.make_branch_and_tree('.')
1097+ tree.lock_write()
1098+ #self.addCleanup(tree.unlock)
1099+ self.build_tree(['file'])
1100+ tree.add('file', 'file-id')
1101+ tree.commit('Added file')
1102+ os.mkdir('folder')
1103+ os.rename('file', 'folder/file2')
1104+ notes = self.captureNotes(RenameMap.guess_renames, tree)[0]
1105+ self.assertEqual('file => folder/file2', ''.join(notes))
1106+
1107+ tree.unlock()
1108
1109=== modified file 'doc/developers/HACKING.txt'
1110--- doc/developers/HACKING.txt 2017-07-30 16:59:50 +0000
1111+++ doc/developers/HACKING.txt 2017-11-11 18:32:23 +0000
1112@@ -1,14 +1,14 @@
1113 ======================
1114-Bazaar Developer Guide
1115+Breezy Developer Guide
1116 ======================
1117
1118-This document describes the Bazaar internals and the development process.
1119-It's meant for people interested in developing Bazaar, and some parts will
1120-also be useful to people developing Bazaar plugins.
1121+This document describes the Breezy internals and the development process.
1122+It's meant for people interested in developing Breezy, and some parts will
1123+also be useful to people developing Breezy plugins.
1124
1125 If you have any questions or something seems to be incorrect, unclear or
1126 missing, please talk to us in ``irc://irc.freenode.net/#bzr``, or write to
1127-the Bazaar mailing list. To propose a correction or addition to this
1128+the Breezy mailing list. To propose a correction or addition to this
1129 document, send a merge request or new text to the mailing list.
1130
1131 The latest developer documentation can be found online at
1132@@ -17,7 +17,7 @@
1133 Getting Started
1134 ###############
1135
1136-Exploring the Bazaar Platform
1137+Exploring the Breezy Platform
1138 =============================
1139
1140 Before making changes, it's a good idea to explore the work already
1141@@ -26,13 +26,13 @@
1142 perhaps someone else has already fixed it?
1143
1144 To answer these questions and more, take a moment to explore the
1145-overall Bazaar Platform. Here are some links to browse:
1146+overall Breezy Platform. Here are some links to browse:
1147
1148 * The Plugins page on the Wiki - http://wiki.bazaar.canonical.com/BzrPlugins
1149
1150-* The Bazaar product family on Launchpad - https://launchpad.net/bazaar
1151+* The Breezy product family on Launchpad - https://launchpad.net/breezy
1152
1153-* Bug Tracker for the core product - https://bugs.launchpad.net/bzr/
1154+* Bug Tracker for the core product - https://bugs.launchpad.net/brz/
1155
1156 If nothing else, perhaps you'll find inspiration in how other developers
1157 have solved their challenges.
1158@@ -41,17 +41,17 @@
1159 =======================
1160
1161 Ad-hoc performance work can also be done. One useful tool is the 'evil' debug
1162-flag. For instance running ``bzr -Devil commit -m "test"`` will log a backtrace
1163-to the bzr log file for every method call which triggers a slow or non-scalable
1164-part of the bzr library. So checking that a given command with ``-Devil`` has
1165+flag. For instance running ``brz -Devil commit -m "test"`` will log a backtrace
1166+to the Breezy log file for every method call which triggers a slow or non-scalable
1167+part of the breezy library. So checking that a given command with ``-Devil`` has
1168 no backtraces logged to the log file is a good way to find problem function
1169 calls that might be nested deep in the code base.
1170
1171 Planning and Discussing Changes
1172 ===============================
1173
1174-There is a very active community around Bazaar. Mostly we meet on IRC
1175-(#bzr on irc.freenode.net) and on the mailing list. To join the Bazaar
1176+There is a very active community around Breezy. Mostly we meet on IRC
1177+(#bzr on irc.freenode.net) and on the mailing list. To join the Breezy
1178 community, see http://wiki.bazaar.canonical.com/BzrSupport.
1179
1180 If you are planning to make a change, it's a very good idea to mention it
1181@@ -70,15 +70,15 @@
1182 friendly, helpful and always keen to welcome newcomers.
1183
1184
1185-Bazaar Development in a Nutshell
1186+Breezy Development in a Nutshell
1187 ================================
1188
1189 .. was from http://wiki.bazaar.canonical.com/BzrGivingBack
1190
1191-One of the fun things about working on a version control system like Bazaar is
1192+One of the fun things about working on a version control system like Breezy is
1193 that the users have a high level of proficiency in contributing back into
1194 the tool. Consider the following very brief introduction to contributing back
1195-to Bazaar. More detailed instructions are in the following sections.
1196+to Breezy. More detailed instructions are in the following sections.
1197
1198 Making the change
1199 -----------------
1200@@ -87,20 +87,20 @@
1201 copy of bzr.dev?`_.)
1202 ::
1203
1204- $ bzr init-repo ~/bzr
1205+ $ brz init-repo ~/bzr
1206 $ cd ~/bzr
1207- $ bzr branch lp:bzr bzr.dev
1208+ $ brz branch lp:brz bzr.dev
1209
1210 Now make your own branch::
1211
1212- $ bzr branch bzr.dev 123456-my-bugfix
1213+ $ brz branch bzr.dev 123456-my-bugfix
1214
1215 This will give you a branch called "123456-my-bugfix" that you can work on
1216 and commit in. Here, you can study the code, make a fix or a new feature.
1217 Feel free to commit early and often (after all, it's your branch!).
1218
1219 Documentation improvements are an easy place to get started giving back to the
1220-Bazaar project. The documentation is in the `doc/` subdirectory of the Bazaar
1221+Breezy project. The documentation is in the `doc/` subdirectory of the Breezy
1222 source tree.
1223
1224 When you are done, make sure that you commit your last set of changes as well!
1225@@ -110,20 +110,20 @@
1226 Making a Merge Proposal
1227 -----------------------
1228
1229-The Bazaar developers use Launchpad to further enable a truly distributed
1230-style of development. Anyone can propose a branch for merging into the Bazaar
1231+The Breezy developers use Launchpad to further enable a truly distributed
1232+style of development. Anyone can propose a branch for merging into the Breezy
1233 trunk. To start this process, you need to push your branch to Launchpad. To
1234 do this, you will need a Launchpad account and user name, e.g.
1235 `your_lp_username`. You can push your branch to Launchpad directly from
1236-Bazaar::
1237+Breezy::
1238
1239- $ bzr push lp:~<your_lp_username>/bzr/meaningful_name_here
1240+ $ brz push lp:~<your_lp_username>/bzr/meaningful_name_here
1241
1242 After you have pushed your branch, you will need to propose it for merging to
1243-the Bazaar trunk. Go to
1244+the Breezy trunk. Go to
1245 <https://launchpad.net/~<your_lp_username>/bzr/meaningful_name_here> and choose
1246 "Propose for merging into another branch". Select "lp:bzr" to hand
1247-your changes off to the Bazaar developers for review and merging.
1248+your changes off to the Breezy developers for review and merging.
1249
1250 Alternatively, after pushing you can use the ``lp-propose`` command to
1251 create the merge proposal.
1252@@ -164,19 +164,19 @@
1253
1254 Making a local mirror of bzr.dev is not strictly necessary, but it means
1255
1256-- You can use that copy of bzr.dev as your main bzr executable, and keep it
1257- up-to-date using ``bzr pull``.
1258+- You can use that copy of bzr.dev as your main brz executable, and keep it
1259+ up-to-date using ``brz pull``.
1260 - Certain operations are faster, and can be done when offline. For example:
1261
1262- - ``bzr bundle``
1263- - ``bzr diff -r ancestor:...``
1264- - ``bzr merge``
1265+ - ``brz bundle``
1266+ - ``brz diff -r ancestor:...``
1267+ - ``brz merge``
1268
1269 - When it's time to create your next branch, it's more convenient. When you
1270 have further contributions to make, you should do them in their own branch::
1271
1272 $ cd ~/bzr
1273- $ bzr branch bzr.dev additional_fixes
1274+ $ brz branch bzr.dev additional_fixes
1275 $ cd additional_fixes # hack, hack, hack
1276
1277
1278@@ -210,10 +210,10 @@
1279
1280
1281
1282-Preparing a Sandbox for Making Changes to Bazaar
1283+Preparing a Sandbox for Making Changes to Breezy
1284 ================================================
1285
1286-Bazaar supports many ways of organising your work. See
1287+Breezy supports many ways of organising your work. See
1288 http://wiki.bazaar.canonical.com/SharedRepositoryLayouts for a summary of the
1289 popular alternatives.
1290
1291@@ -224,10 +224,10 @@
1292 * create a local copy of the main development branch (bzr.dev) by using
1293 this command::
1294
1295- bzr branch lp:bzr bzr.dev
1296+ brz branch lp:brz bzr.dev
1297
1298 * keep your copy of bzr.dev pristine (by not developing in it) and keep
1299- it up to date (by using bzr pull)
1300+ it up to date (by using brz pull)
1301
1302 * create a new branch off your local bzr.dev copy for each issue
1303 (bug or feature) you are working on.
1304@@ -247,17 +247,17 @@
1305 Some of the key files in this directory are:
1306
1307 bzr
1308- The command you run to start Bazaar itself. This script is pretty
1309+ The command you run to start Breezy itself. This script is pretty
1310 short and just does some checks then jumps into bzrlib.
1311
1312 README
1313- This file covers a brief introduction to Bazaar and lists some of its
1314+ This file covers a brief introduction to Breezy and lists some of its
1315 key features.
1316
1317 setup.py
1318- Installs Bazaar system-wide or to your home directory. To perform
1319- development work on Bazaar it is not required to run this file - you
1320- can simply run the bzr command from the top level directory of your
1321+ Installs Breezy system-wide or to your home directory. To perform
1322+ development work on Breezy it is not required to run this file - you
1323+ can simply run the Breezy command from the top level directory of your
1324 development copy. Note: That if you run setup.py this will create a
1325 'build' directory in your development branch. There's nothing wrong
1326 with this but don't be confused by it. The build process puts a copy
1327@@ -268,35 +268,35 @@
1328 bzrlib
1329 Possibly the most exciting folder of all, bzrlib holds the main code
1330 base. This is where you will go to edit python files and contribute to
1331- Bazaar.
1332+ Breezy.
1333
1334 doc
1335- Holds documentation on a whole range of things on Bazaar from the
1336- origination of ideas within the project to information on Bazaar
1337+ Holds documentation on a whole range of things on Breezy from the
1338+ origination of ideas within the project to information on Breezy
1339 features and use cases. Within this directory there is a subdirectory
1340 for each translation into a human language. All the documentation
1341 is in the ReStructuredText markup language.
1342
1343 doc/developers
1344- Documentation specifically targeted at Bazaar and plugin developers.
1345+ Documentation specifically targeted at Breezy and plugin developers.
1346 (Including this document.)
1347
1348 doc/en/release-notes/
1349
1350- Detailed changes in each Bazaar release (there is one file by series:
1351+ Detailed changes in each Breezy release (there is one file by series:
1352 bzr-2.3.txt, bzr-2.4.txt, etc) that can affect users or plugin
1353 developers.
1354
1355 doc/en/whats-new/
1356
1357- High-level summaries of changes in each Bazaar release (there is one
1358+ High-level summaries of changes in each Breezy release (there is one
1359 file by series: whats-new-in-2.3.txt, whats-new-in-2.4.txt, etc).
1360
1361
1362 Automatically-generated API reference information is available at
1363 <http://people.canonical.com/~mwh/bzrlibapi/>.
1364
1365-See also the `Bazaar Architectural Overview
1366+See also the `Breezy Architectural Overview
1367 <http://doc.bazaar.canonical.com/developers/overview.html>`_.
1368
1369
1370@@ -307,7 +307,7 @@
1371 ===================
1372
1373 We don't change APIs in stable branches: any supported symbol in a stable
1374-release of bzr must not be altered in any way that would result in
1375+release of Breezy must not be altered in any way that would result in
1376 breaking existing code that uses it. That means that method names,
1377 parameter ordering, parameter names, variable and attribute names etc must
1378 not be changed without leaving a 'deprecated forwarder' behind. This even
1379@@ -368,68 +368,22 @@
1380 General Guidelines
1381 ==================
1382
1383-Copyright
1384----------
1385-
1386-The copyright policy for bzr was recently made clear in this email (edited
1387-for grammatical correctness)::
1388-
1389- The attached patch cleans up the copyright and license statements in
1390- the bzr source. It also adds tests to help us remember to add them
1391- with the correct text.
1392-
1393- We had the problem that lots of our files were "Copyright Canonical
1394- Development Ltd" which is not a real company, and some other variations
1395- on this theme. Also, some files were missing the GPL statements.
1396-
1397- I want to be clear about the intent of this patch, since copyright can
1398- be a little controversial.
1399-
1400- 1) The big motivation for this is not to shut out the community, but
1401- just to clean up all of the invalid copyright statements.
1402-
1403- 2) It has been the general policy for bzr that we want a single
1404- copyright holder for all of the core code. This is following the model
1405- set by the FSF, which makes it easier to update the code to a new
1406- license in case problems are encountered. (For example, if we want to
1407- upgrade the project universally to GPL v3 it is much simpler if there is
1408- a single copyright holder). It also makes it clearer if copyright is
1409- ever debated, there is a single holder, which makes it easier to defend
1410- in court, etc. (I think the FSF position is that if you assign them
1411- copyright, they can defend it in court rather than you needing to, and
1412- I'm sure Canonical would do the same).
1413- As such, Canonical has requested copyright assignments from all of the
1414- major contributers.
1415-
1416- 3) If someone wants to add code and not attribute it to Canonical, there
1417- is a specific list of files that are excluded from this check. And the
1418- test failure indicates where that is, and how to update it.
1419-
1420- 4) If anyone feels that I changed a copyright statement incorrectly, just
1421- let me know, and I'll be happy to correct it. Whenever you have large
1422- mechanical changes like this, it is possible to make some mistakes.
1423-
1424- Just to reiterate, this is a community project, and it is meant to stay
1425- that way. Core bzr code is copyright Canonical for legal reasons, and
1426- the tests are just there to help us maintain that.
1427-
1428-
1429 Miscellaneous Topics
1430 ####################
1431
1432 Debugging
1433 =========
1434
1435-Bazaar has a few facilities to help debug problems by going into pdb_, the
1436+Breezy has a few facilities to help debug problems by going into pdb_, the
1437 Python debugger.
1438
1439 .. _pdb: http://docs.python.org/lib/debugger-commands.html
1440
1441 If the ``BZR_PDB`` environment variable is set
1442-then bzr will go into pdb post-mortem mode when an unhandled exception
1443+then brz will go into pdb post-mortem mode when an unhandled exception
1444 occurs.
1445
1446-If you send a SIGQUIT or SIGBREAK signal to bzr then it will drop into the
1447+If you send a SIGQUIT or SIGBREAK signal to brz then it will drop into the
1448 debugger immediately. SIGQUIT can be generated by pressing Ctrl-\\ on
1449 Unix. SIGBREAK is generated with Ctrl-Pause on Windows (some laptops have
1450 this as Fn-Pause). You can continue execution by typing ``c``. This can
1451@@ -446,7 +400,7 @@
1452 Debug Flags
1453 ===========
1454
1455-Bazaar accepts some global options starting with ``-D`` such as
1456+Breezy accepts some global options starting with ``-D`` such as
1457 ``-Dhpss``. These set a value in `bzrlib.debug.debug_flags`, and
1458 typically cause more information to be written to the trace file. Most
1459 `mutter` calls should be guarded by a check of those flags so that we
1460@@ -454,7 +408,7 @@
1461
1462 Debug flags may have effects other than just emitting trace messages.
1463
1464-Run ``bzr help global-options`` to see them all.
1465+Run ``brz help global-options`` to see them all.
1466
1467 These flags may also be set as a comma-separated list in the
1468 ``debug_flags`` option in e.g. ``~/.config/breezy/breezy.conf``. (Note
1469@@ -478,7 +432,7 @@
1470 Unicode and Encoding Support
1471 ============================
1472
1473-This section discusses various techniques that Bazaar uses to handle
1474+This section discusses various techniques that Breezy uses to handle
1475 characters that are outside the ASCII set.
1476
1477 ``Command.outf``
1478@@ -498,15 +452,15 @@
1479 marker (typically '?'), and no exception will be raised. This is for
1480 any command which generates text for the user to review, rather than
1481 for automated processing.
1482- For example: ``bzr log`` should not fail if one of the entries has text
1483+ For example: ``brz log`` should not fail if one of the entries has text
1484 that cannot be displayed.
1485
1486 strict
1487 Attempting to print an unprintable character will cause a UnicodeError.
1488 This is for commands that are intended more as scripting support, rather
1489 than plain user review.
1490- For example: ``bzr ls`` is designed to be used with shell scripting. One
1491- use would be ``bzr ls --null --unknowns | xargs -0 rm``. If ``bzr``
1492+ For example: ``brz ls`` is designed to be used with shell scripting. One
1493+ use would be ``brz ls --null --unknowns | xargs -0 rm``. If ``bzr``
1494 printed a filename with a '?', the wrong file could be deleted. (At the
1495 very least, the correct file would not be deleted). An error is used to
1496 indicate that the requested action could not be performed.
1497@@ -514,7 +468,7 @@
1498 exact
1499 Do not attempt to automatically convert Unicode strings. This is used
1500 for commands that must handle conversion themselves.
1501- For example: ``bzr diff`` needs to translate Unicode paths, but should
1502+ For example: ``brz diff`` needs to translate Unicode paths, but should
1503 not change the exact text of the contents of the files.
1504
1505
1506@@ -540,7 +494,7 @@
1507 * User with C compiler
1508 * Developers
1509
1510-The recommended way to install bzr is to have a C compiler so that the
1511+The recommended way to install Breezy is to have a C compiler so that the
1512 extensions can be built, but if no C compiler is present, the pure python
1513 versions we supply will work, though more slowly.
1514
1515@@ -572,14 +526,14 @@
1516 What is a Core Developer?
1517 -------------------------
1518
1519-While everyone in the Bazaar community is welcome and encouraged to
1520+While everyone in the Breezy community is welcome and encouraged to
1521 propose and submit changes, a smaller team is reponsible for pulling those
1522 changes together into a cohesive whole. In addition to the general developer
1523 stuff covered above, "core" developers have responsibility for:
1524
1525 * reviewing changes
1526 * planning releases
1527-* managing releases (see `Releasing Bazaar <http://doc.bazaar.canonical.com/developers/releasing.html>`_)
1528+* managing releases (see `Releasing Breezy <http://doc.bazaar.canonical.com/developers/releasing.html>`_)
1529
1530 .. note::
1531 Removing barriers to community participation is a key reason for adopting
1532
1533=== added file 'doc/developers/branding.txt'
1534--- doc/developers/branding.txt 1970-01-01 00:00:00 +0000
1535+++ doc/developers/branding.txt 2017-11-11 18:32:23 +0000
1536@@ -0,0 +1,14 @@
1537+Breezy branding
1538+===============
1539+
1540+``Breezy`` (with that capitalisation) is the name of the project and our current implementation.
1541+
1542+``breezy`` is the name of the Python package.
1543+
1544+``brz`` is the command line tool.
1545+
1546+``Bazaar`` is the name of the old project, as well as the name of the formats.
1547+
1548+``bzr`` is the name of the old binary.
1549+
1550+Slogan: "Like bzr, but with more b-s in"
1551
1552=== modified file 'doc/developers/bug-handling.txt'
1553--- doc/developers/bug-handling.txt 2011-05-04 10:45:00 +0000
1554+++ doc/developers/bug-handling.txt 2017-11-11 18:32:23 +0000
1555@@ -1,46 +1,46 @@
1556 ***********************
1557-Tracking Bugs in Bazaar
1558+Tracking Bugs in Breezy
1559 ***********************
1560
1561-This document describes the bug-tracking processes for developing Bazaar
1562-itself. Bugs in Bazaar are recorded in Launchpad.
1563+This document describes the bug-tracking processes for developing Breezy
1564+itself. Bugs in Breezy are recorded in Launchpad.
1565
1566
1567 See also:
1568
1569-* `Bazaar Developer Documents <index.html>`_.
1570-
1571-* `The Bazaar Development Cycle <cycle.html>`_.
1572-
1573-* `The Bazaar User Guide <../en/user-guide/index.html>`_ -- for
1574- information on integrating Bazaar with other bug trackers.
1575+* `Breezy Developer Documents <index.html>`_.
1576+
1577+* `The Breezy Development Cycle <cycle.html>`_.
1578+
1579+* `The Breezy User Guide <../en/user-guide/index.html>`_ -- for
1580+ information on integrating Breezy with other bug trackers.
1581
1582
1583 Links
1584 *****
1585
1586-* `bzr bugs home page <https://bugs.launchpad.net/bzr>`_.
1587-
1588-* `Critical bugs <https://bugs.launchpad.net/bzr/+bugs?search=Search&field.importance=Critical&field.status=New&field.status=Incomplete&field.status=Confirmed&field.status=Triaged&field.status=In+Progress&field.status=Fix+Committed>`_.
1589-
1590-* `Open bugs by importance <https://bugs.launchpad.net/bzr/+bugs>`_.
1591+* `Breezy bugs home page <https://bugs.launchpad.net/brz>`_.
1592+
1593+* `Critical bugs <https://bugs.launchpad.net/brz/+bugs?search=Search&field.importance=Critical&field.status=New&field.status=Incomplete&field.status=Confirmed&field.status=Triaged&field.status=In+Progress&field.status=Fix+Committed>`_.
1594+
1595+* `Open bugs by importance <https://bugs.launchpad.net/brz/+bugs>`_.
1596
1597 * `Open bugs most recently changed first
1598- <https://bugs.launchpad.net/bzr/+bugs?field.searchtext=&orderby=-date_last_updated&search=Search&field.status%3Alist=NEW&field.status%3Alist=INCOMPLETE_WITH_RESPONSE&field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE&field.status%3Alist=CONFIRMED&field.status%3Alist=TRIAGED&field.status%3Alist=INPROGRESS&field.status%3Alist=FIXCOMMITTED&field.assignee=&field.bug_reporter=&field.omit_dupes=on&field.has_patch=&field.has_no_package=>`_.
1599+ <https://bugs.launchpad.net/brz/+bugs?field.searchtext=&orderby=-date_last_updated&search=Search&field.status%3Alist=NEW&field.status%3Alist=INCOMPLETE_WITH_RESPONSE&field.status%3Alist=INCOMPLETE_WITHOUT_RESPONSE&field.status%3Alist=CONFIRMED&field.status%3Alist=TRIAGED&field.status%3Alist=INPROGRESS&field.status%3Alist=FIXCOMMITTED&field.assignee=&field.bug_reporter=&field.omit_dupes=on&field.has_patch=&field.has_no_package=>`_.
1600
1601-* `Most commonly duplicated bugs <http://tinyurl.com/bzr-bugs-by-dupes>`_.
1602+* `Most commonly duplicated bugs <http://tinyurl.com/brz-bugs-by-dupes>`_.
1603
1604
1605 Generalities
1606 ************
1607
1608-Anyone involved with Bazaar is welcome to contribute to managing our bug
1609+Anyone involved with Breezy is welcome to contribute to managing our bug
1610 reports. **Edit boldly**: try to help users out, assess importance or improve
1611 the bug description or status. Other people will see the bugs: it's
1612 better to have 20 of them processed and later change the status of a
1613 couple than to leave them lie.
1614
1615-When you file a bug as a Bazaar developer or active user, if you feel
1616+When you file a bug as a Breezy developer or active user, if you feel
1617 confident in doing so, make an assessment of status and importance at the
1618 time you file it, rather than leaving it for someone else. It's more
1619 efficient to change the importance if someone else feels it's higher or
1620@@ -143,17 +143,16 @@
1621 progress on the bug without that information. The bug will expire if
1622 it remains in this state for two months.
1623 Confirmed
1624+ This bug has been confirmed by at least one other person (developer or otherwise).
1625+Triaged
1626 The bug report has been seen by a developer and we agree it's a bug.
1627- You don't have to reproduce the bug to mark it Confirmed. (Generally
1628+ You don't have to reproduce the bug to mark it Triaged. (Generally
1629 it's not a good idea for a developer to spend time reproducing the bug
1630 until they're going to work on it.)
1631-Triaged
1632- We don't use this status. If it is set, it means the same as
1633- Confirmed.
1634 In Progress
1635 Someone has started working on this. We can deliver the value of the
1636- work already done by finishing and shipping the fix.
1637-
1638+ work already done by finishing and shipping the fix.
1639+
1640 The bug keeps this state from the time someone does non-trivial
1641 analysis, until the fix is merged to a release or trunk branch (when
1642 it is Fix Released), or until they give up on it (back to New or
1643@@ -169,15 +168,15 @@
1644 Don't use this. If set on old bug, it probably means In Progress,
1645 with the fix waiting for review. See Launchpad `bug 163694`_.
1646 Fix Released
1647- The fix for this bug is now in the bzr branch that this task is for.
1648- The branch for the default task on a bug is bzr.dev.
1649-
1650+ The fix for this bug is now in the Breezy branch that this task is for.
1651+ The branch for the default task on a bug is trunk.
1652+
1653 We use this value even though the fix may not have been been included
1654 in a release yet because all the developer activity around it is
1655 complete and we want to both avoid bug spam when releases happen, and
1656 keep the list of bugs that developers see when they look at the bug
1657- tracker trimmed to those that require action.
1658-
1659+ tracker trimmed to those that require action.
1660+
1661 When setting a bug task to fix released, the bug target milestone
1662 should be set to the release the fix will be included in (or was
1663 included in, if you are updating an old bug). Don't spend too much
1664@@ -191,14 +190,14 @@
1665 **************
1666
1667 Critical
1668- This is a serious bug that could cause data loss, stop bzr being
1669+ This is a serious bug that could cause data loss, stop Breezy being
1670 usable in an important case, or represents a regression in something
1671 previously working. We should fix critical bugs before doing other
1672 work, or seriously consider whether the bug is really critical
1673 or whether the other change is more urgent.
1674 High
1675 This is a bug that can seriously interfere with people's use of
1676- Bazaar. We should seriously consider fixing these bugs before
1677+ Breezy. We should seriously consider fixing these bugs before
1678 working on new features.
1679 Medium
1680 A regular bug. We'd like to fix them, but there may be a long delay.
1681@@ -228,7 +227,7 @@
1682 ***************
1683
1684 It's possible to target a bug to a milestone, eg
1685-<https://bugs.launchpad.net/bzr/+milestone/1.16>. We use this to help the
1686+<https://bugs.launchpad.net/brz/+milestone/1.16>. We use this to help the
1687 release manager know what **must** be merged to make the release.
1688
1689 Therefore, we don't target bugs that we'd like to have fixed or that could
1690@@ -289,7 +288,7 @@
1691 bugs for causes of VFS methods of the smart server
1692
1693 launchpad
1694- bugs about interactions with launchpad (typically this means bzrlib.plugins.launchpad).
1695+ bugs about interactions with launchpad (typically this means breezy.plugins.launchpad).
1696
1697 locale
1698 problems using locales other than English
1699@@ -304,7 +303,7 @@
1700 bugs about performance problems.
1701
1702 regression
1703- bugs which represent an aspect of bzr becoming accidentally less good than it was.
1704+ bugs which represent an aspect of Breezy becoming accidentally less good than it was.
1705
1706 test
1707 needs changes to the test framework
1708@@ -313,18 +312,18 @@
1709 virtual filesystem for HTTP, SFTP, etc.
1710
1711 trivial
1712- should be very easy to fix (10-20 minutes) and easily landed: typically
1713+ should be very easy to fix (10-20 minutes) and easily landed: typically
1714 just spelling errors and the like
1715
1716 ui
1717- bugs relating to the bzr user interface, e.g. confusing error messages.
1718+ bugs relating to the Breezy user interface, e.g. confusing error messages.
1719
1720 win32
1721- bugs that mainly affects Windows. Also there is cygwin and win98 tags for
1722+ bugs that mainly affects Windows. Also there is cygwin and win98 tags for
1723 marking specific bugs.
1724
1725 You can see the full list of tags in use at
1726-<https://bugs.launchpad.net/bzr/+bugs>. As of September 2008 the
1727-list is on the right.
1728+<https://bugs.launchpad.net/brz/+bugs>. As of September 2008 the
1729+list is on the right.
1730
1731 .. vim: ft=rst
1732
1733=== modified file 'doc/developers/case-insensitive-file-systems.txt'
1734--- doc/developers/case-insensitive-file-systems.txt 2011-11-24 17:24:21 +0000
1735+++ doc/developers/case-insensitive-file-systems.txt 2017-11-11 18:32:23 +0000
1736@@ -66,7 +66,7 @@
1737 accidentally creating 2 inventory items that differ only by case.
1738
1739 * If an argument results in the creation of a *new* filename (eg, a move
1740- destination), the argument will be used as specified. Bzr will create
1741+ destination), the argument will be used as specified. Breezy will create
1742 a file and inventory item that exactly matches the case specified (although
1743 as above, care must be taken to avoid creating two inventory items that
1744 differ only by case.)
1745
1746=== modified file 'doc/developers/check.txt'
1747--- doc/developers/check.txt 2010-11-12 22:43:38 +0000
1748+++ doc/developers/check.txt 2017-11-11 18:32:23 +0000
1749@@ -10,7 +10,7 @@
1750
1751 * Ensure that the data as recorded on disk is accessible intact and unaltered.
1752 * Ensure that a branch/repository/tree/whatever is ready for upgrade.
1753-* Look for and report on recorded-data issues where previous bzr's, or changing
1754+* Look for and report on recorded-data issues where previous Breezy's, or changing
1755 situations have lead so some form of inconsistency.
1756 * Report sufficient information for a user to either fix the issue themselves
1757 or report a bug that will hopefully be sufficiently detailed we can fix based
1758
1759=== modified file 'doc/developers/code-review.txt'
1760--- doc/developers/code-review.txt 2011-06-06 08:24:45 +0000
1761+++ doc/developers/code-review.txt 2017-11-11 18:32:23 +0000
1762@@ -3,7 +3,7 @@
1763
1764 All non-trivial code changes coming in to Bazaar are reviewed by someone else.
1765
1766-Anyone is welcome to review any patch. You don't need to have a full
1767+Anyone is welcome to review any patch. You don't need to have a full
1768 understanding of the codebase to find problems in the code, the documentation,
1769 or the concept of the patch.
1770
1771@@ -11,12 +11,12 @@
1772 developer, and changes from other people are reviewed by two core
1773 developers. Use intelligent discretion about whether the patch is trivial.
1774
1775-No one likes their merge requests sitting in a queue going nowhere: this
1776-is pure waste. We prioritize reviewing existing proposals.
1777-Canonical dedicates some staff time to providing prompt helpful reviews.
1778+No one likes their merge requests sitting in a queue going nowhere: this
1779+is pure waste. We prioritize reviewing existing proposals.
1780+Canonical dedicates some staff time to providing prompt helpful reviews.
1781 (See <http://wiki.bazaar.canonical.com/PatchPilot/>.)
1782
1783-From late 2009 on, we do all our code reviews through Launchpad's
1784+From late 2009 on, we do all our code reviews through Launchpad's
1785 merge proposal interface.
1786
1787
1788@@ -85,7 +85,7 @@
1789 Anyone can propose or comment on a merge proposal just by creating a
1790 Launchpad account.
1791
1792-From <https://code.launchpad.net/bzr/+activereviews> you can see all
1793+From <https://code.launchpad.net/brz/+activereviews> you can see all
1794 currently active reviews, and choose one to comment on. This page also
1795 shows proposals that are now approved and should be merged by someone with
1796 PQM access.
1797@@ -100,5 +100,5 @@
1798
1799 Once a merge proposal is approved and finished, it's sent to PQM (the patch
1800 queue manager) which will automatically test and integrate it. The recommended
1801-way to start this off is by running the ``feed-pqm`` script from
1802+way to start this off is by running the ``feed-pqm`` script from
1803 <https://launchpad.net/hydrazine/>.
1804
1805=== modified file 'doc/developers/code-style.txt'
1806--- doc/developers/code-style.txt 2017-05-21 12:29:48 +0000
1807+++ doc/developers/code-style.txt 2017-11-11 18:32:23 +0000
1808@@ -62,7 +62,7 @@
1809 character on the following line. This makes it easier to add new items in
1810 future::
1811
1812- from bzrlib.goo import (
1813+ from breezy.goo import (
1814 jam,
1815 jelly,
1816 marmalade,
1817@@ -98,7 +98,7 @@
1818 ``**kwargs`` in the prototype of a function should be used sparingly.
1819 It can be good on higher-order functions that decorate other functions,
1820 such as ``addCleanup`` or ``assertRaises``, or on functions that take only
1821-(or almost only) kwargs, where any kwargs can be passed.
1822+(or almost only) kwargs, where any kwargs can be passed.
1823
1824 Otherwise, be careful: if the parameters to a function are a bit complex
1825 and might vary over time (e.g. the ``commit`` API) then we prefer to pass an
1826@@ -133,7 +133,7 @@
1827 they don't run inside hot functions.
1828
1829 * Module names should always be given fully-qualified,
1830- i.e. ``bzrlib.hashcache`` not just ``hashcache``.
1831+ i.e. ``breezy.hashcache`` not just ``hashcache``.
1832
1833
1834 Naming
1835@@ -141,7 +141,7 @@
1836
1837 Functions, methods or members that are relatively private are given
1838 a leading underscore prefix. Names without a leading underscore are
1839-public not just across modules but to programmers using bzrlib as an
1840+public not just across modules but to programmers using breezy as an
1841 API.
1842
1843 We prefer class names to be concatenated capital words (``TestCase``)
1844@@ -193,7 +193,7 @@
1845 being leaked); merely having a del method inhibits Python gc; the
1846 warnings appear to users and upset them; they can also break tests that
1847 are checking what appears on stderr.
1848-
1849+
1850 In short, just don't use ``__del__``.
1851
1852 Cleanup methods
1853@@ -201,7 +201,7 @@
1854
1855 Often when something has failed later code will fail too, including
1856 cleanups invoked from ``finally`` blocks. These secondary failures are
1857-generally uninteresting compared to the original exception. ``bzrlib``
1858+generally uninteresting compared to the original exception. ``breezy``
1859 has some facilities you can use to mitigate this.
1860
1861 * In ``Command`` subclasses, prefer the ``add_cleanup`` method to using
1862@@ -215,14 +215,14 @@
1863 acquire/release) because there isn't a large block of code separating
1864 them.
1865
1866-* Use the ``only_raises`` decorator (from ``bzrlib.decorators``) when
1867+* Use the ``only_raises`` decorator (from ``breezy.decorators``) when
1868 defining methods that are typically called in ``finally`` blocks, such
1869 as ``unlock`` methods. For example, ``@only_raises(LockNotHeld,
1870 LockBroken)``. All errors that are unlikely to be a knock-on failure
1871 from a previous failure should be allowed.
1872
1873 * Consider using the ``OperationWithCleanups`` helper from
1874- ``bzrlib.cleanup`` anywhere else you have a ``finally`` block that
1875+ ``breezy.cleanup`` anywhere else you have a ``finally`` block that
1876 might fail.
1877
1878
1879@@ -273,25 +273,25 @@
1880 Lazy Imports
1881 ============
1882
1883-To make startup time faster, we use the ``bzrlib.lazy_import`` module to
1884+To make startup time faster, we use the ``breezy.lazy_import`` module to
1885 delay importing modules until they are actually used. ``lazy_import`` uses
1886 the same syntax as regular python imports. So to import a few modules in a
1887 lazy fashion do::
1888
1889- from bzrlib.lazy_import import lazy_import
1890+ from breezy.lazy_import import lazy_import
1891 lazy_import(globals(), """
1892 import os
1893 import subprocess
1894 import sys
1895 import time
1896
1897- from bzrlib import (
1898+ from breezy import (
1899 errors,
1900 transport,
1901 revision as _mod_revision,
1902 )
1903- import bzrlib.transport
1904- import bzrlib.xml5
1905+ import breezy.transport
1906+ import breezy.xml5
1907 """)
1908
1909 At this point, all of these exist as a ``ImportReplacer`` object, ready to
1910@@ -330,7 +330,7 @@
1911
1912 The null revision is the ancestor of all revisions. Its revno is 0, its
1913 revision-id is ``null:``, and its tree is the empty tree. When referring
1914-to the null revision, please use ``bzrlib.revision.NULL_REVISION``. Old
1915+to the null revision, please use ``breezy.revision.NULL_REVISION``. Old
1916 code sometimes uses ``None`` for the null revision, but this practice is
1917 being phased out.
1918
1919@@ -460,12 +460,12 @@
1920 Portability Tips
1921 ================
1922
1923-The ``bzrlib.osutils`` module has many useful helper functions, including
1924+The ``breezy.osutils`` module has many useful helper functions, including
1925 some more portable variants of functions in the standard library.
1926
1927 In particular, don't use ``shutil.rmtree`` unless it's acceptable for it
1928 to fail on Windows if some files are readonly or still open elsewhere.
1929-Use ``bzrlib.osutils.rmtree`` instead.
1930+Use ``breezy.osutils.rmtree`` instead.
1931
1932 Using the ``open(..).read(..)`` or ``open(..).write(..)`` style chaining
1933 of methods for reading or writing file content relies on garbage collection
1934@@ -489,7 +489,7 @@
1935 * If importing a module, not an attribute, and the module is a top-level
1936 module (i.e. has no dots in the name), then it's ok to use the builtin
1937 ``__import__``, e.g. ``__import__(module_name)``.
1938- * In all other cases, prefer ``bzrlib.pyutils.get_named_object`` to the
1939+ * In all other cases, prefer ``breezy.pyutils.get_named_object`` to the
1940 built-in ``__import__``. ``__import__`` has some subtleties and
1941 unintuitive behaviours that make it hard to use correctly.
1942
1943
1944=== modified file 'doc/developers/colocated-branches.txt'
1945--- doc/developers/colocated-branches.txt 2010-04-12 15:28:32 +0000
1946+++ doc/developers/colocated-branches.txt 2017-11-11 18:32:23 +0000
1947@@ -41,21 +41,21 @@
1948 UI Changes
1949 ~~~~~~~~~~
1950
1951-Bazaar URLs need to have some way to address colocated branches in
1952-directories that contain multiple branches.
1953+Bazaar URLs need to have some way to address colocated branches in
1954+directories that contain multiple branches.
1955
1956-Per RFC3986 we have picked the comma (",") to allow the specification of
1957-colocated branch names. Comma's in path names would have to be
1958-urlencoded at first to avoid ambiguity, though perhaps it would be
1959+Per RFC3986 we have picked the comma (",") to allow the specification of
1960+colocated branch names. Comma's in path names would have to be
1961+urlencoded at first to avoid ambiguity, though perhaps it would be
1962 possible to support heuristics later when interpreting user-specified URLs.
1963
1964 An example URL would be:
1965
1966 bzr://bazaar.launchpad.net/~jelmer/bzr/bzr.dev,colo-urls
1967
1968-The segment after the comma will initially be interpreted as a colocated
1969-branch name but we would like to keep the option to allow
1970-key=value style specifications in the future and DWIM for segments that
1971+The segment after the comma will initially be interpreted as a colocated
1972+branch name but we would like to keep the option to allow
1973+key=value style specifications in the future and DWIM for segments that
1974 do not contain an =. Following the RFC the comma would be interpreted within
1975 the scope of a path segment. In other words, in the URL:
1976
1977@@ -64,26 +64,26 @@
1978 unstable is interpreted as the colocated branch living in the python-debian.git
1979 control directory; README is a path inside of the branch.
1980
1981-Control directories will also have the notion of an "active" branch. This is
1982-the branch that is being used by a working tree, if present and the branch
1983-that will be used if no explicit colocated branch is specified. The
1984-active branch support makes it easier to deal with existing bzrdirs and
1985-is useful when accessing foreign control directories that have the concept
1986+Control directories will also have the notion of an "active" branch. This is
1987+the branch that is being used by a working tree, if present and the branch
1988+that will be used if no explicit colocated branch is specified. The
1989+active branch support makes it easier to deal with existing bzrdirs and
1990+is useful when accessing foreign control directories that have the concept
1991 as well.
1992
1993-A new command 'bzr rmbranch' needs to be added to make it possible to
1994-remove colocated branches, as this won't be possible by simple
1995+A new command 'bzr rmbranch' needs to be added to make it possible to
1996+remove colocated branches, as this won't be possible by simple
1997 directory removal, at least not of a user-visible directory.
1998
1999 Code Changes
2000 ~~~~~~~~~~~~
2001
2002-BzrDirFormat will need a supports_colocated_branches property that
2003-indicates whether a format supports the creation, removal and accessing of
2004+BzrDirFormat will need a supports_colocated_branches property that
2005+indicates whether a format supports the creation, removal and accessing of
2006 colocated branches.
2007
2008-Several methods on BzrDir will need to be updated to take an option branch_name
2009-parameter. If this parameter is not specified or None, the active branch
2010+Several methods on BzrDir will need to be updated to take an option branch_name
2011+parameter. If this parameter is not specified or None, the active branch
2012 will be used.
2013
2014 The methods that will have to be extended are:
2015@@ -96,15 +96,15 @@
2016 * BranchFormat.initialise()
2017 * BranchFormat.open()
2018
2019-A new BzrDir.list_branches() method will return all colocated branches
2020-present in a control directory.
2021+A new BzrDir.list_branches() method will return all colocated branches
2022+present in a control directory.
2023
2024-Any URL interpreting methods (e.g. Branch.open) will need to be updated
2025-to extract a colocated branch name and need to pass that into the
2026+Any URL interpreting methods (e.g. Branch.open) will need to be updated
2027+to extract a colocated branch name and need to pass that into the
2028 relevant methods.
2029
2030-Existing callers of BzrDir.{create,open,destroy}_branch() need to
2031-be updated to pass in branch names and optionally be changed to use
2032+Existing callers of BzrDir.{create,open,destroy}_branch() need to
2033+be updated to pass in branch names and optionally be changed to use
2034 BzrDir.list_branches().
2035
2036 Schema Changes
2037@@ -117,7 +117,7 @@
2038 Eventually, Bazaar could easily support colocated branches by just
2039 creating a new branch transport for each colocated branch and have a
2040 "regular" branch live there. This would require something like
2041-BzrDirMeta2 though. An example of this is implemented in the
2042+BzrDirMeta2 though. An example of this is implemented in the
2043 lp:bzr-colocated plugin
2044
2045 Further integration
2046
2047=== renamed file 'doc/developers/new-config-rationale.txt' => 'doc/developers/config-rationale.txt'
2048--- doc/developers/new-config-rationale.txt 2017-07-31 00:12:06 +0000
2049+++ doc/developers/config-rationale.txt 2017-11-11 18:32:23 +0000
2050@@ -6,12 +6,12 @@
2051 ====
2052
2053 Not all needs can be addressed by the default values used inside bzr and
2054-bzrlib, no matter how well they are chosen (and they are ;).
2055+breezy, no matter how well they are chosen (and they are ;).
2056
2057 Options that are rarely used don't deserve a corresponding command line
2058 switch in one or several commands.
2059
2060-Many parts of ``bzrlib`` depends on some constants though and the user
2061+Many parts of ``breezy`` depends on some constants though and the user
2062 should be able to customize the behavior to suit his needs so these
2063 constants need to become configuration options or more generally, be easier
2064 to set.
2065@@ -28,7 +28,7 @@
2066 Current issues
2067 ==============
2068
2069-* Many parts of ``bzrlib`` declare constants and there is no way for the
2070+* Many parts of ``breezy`` declare constants and there is no way for the
2071 user to look at or modify them (see http://pad.lv/832061).
2072
2073 * The old design requires a configuration object to create, modify or delete
2074@@ -158,7 +158,7 @@
2075 transports only and the hpss implementing the corresponding verbs).
2076
2077 * While the underlying ``ConfigObj`` implementation provides an
2078- interpolation feature, the ``bzrlib`` implementation doesn't provide an
2079+ interpolation feature, the ``breezy`` implementation doesn't provide an
2080 easy handling of templates where other configuration options can be
2081 interpolated. Instead, ``locations.conf`` (and only it) allows for
2082 ``appendpath`` and ``norecurse``. (Cross-section, cross-file interpolation
2083@@ -218,7 +218,7 @@
2084
2085 The option name space is organized by topic:
2086
2087-* bzrlib options are grouped by topic (``branch``, ``tree``, ``repo``)
2088+* breezy options are grouped by topic (``branch``, ``tree``, ``repo``)
2089
2090 * plugins are encouraged (but not required) to prefix their specific options
2091 with their name (``qbzr.`` for qbzr)
2092@@ -263,7 +263,7 @@
2093 Some option values can be templates and contain references to other
2094 options. This is especially useful to define URLs in sections shared for
2095 multiple branches for example. It can also be used to describe commands
2096-where some parameters are set by ``bzrlib`` at runtime.
2097+where some parameters are set by ``breezy`` at runtime.
2098
2099 Since option values are text-only, and to avoid clashing with other option
2100 expansion (also known as interpolation) syntaxes, references are enclosed
2101@@ -276,7 +276,7 @@
2102 configuration applies to a given branch.
2103
2104 The interpolation implementation should accept an additional dict so that
2105-``bzrlib`` or plugins can define references that can be expanded without
2106+``breezy`` or plugins can define references that can be expanded without
2107 being existing configuration options::
2108
2109 diff_command={cmd} {cmd_opts} {file_a} {file_b}
2110
2111=== modified file 'doc/developers/content-filtering.txt'
2112--- doc/developers/content-filtering.txt 2010-12-02 09:46:15 +0000
2113+++ doc/developers/content-filtering.txt 2017-11-11 18:32:23 +0000
2114@@ -37,7 +37,7 @@
2115 hold the whole file in memory). There is no guarantee that the chunks
2116 will be aligned with line endings. Write filters are passed a context
2117 object through which they can obtain some information about eg which
2118-file they're working on. (See ``bzrlib.filters`` docstring.)
2119+file they're working on. (See ``breezy.filters`` docstring.)
2120
2121 These are at the moment strictly *content* filters: they can't make
2122 changes to the tree like changing the execute bit, file types, or
2123@@ -46,7 +46,7 @@
2124 Conventions
2125 ***********
2126
2127-bzrlib interfaces that aren't explicitly specified to deal with the
2128+breezy interfaces that aren't explicitly specified to deal with the
2129 convenient form should return the canonical form. Whenever we have the
2130 SHA1 hash of a file, it's the hash of the canonical form.
2131
2132@@ -142,6 +142,6 @@
2133
2134 * `Developer Documentation <index.html>`_
2135
2136-* ``bzrlib.filters``
2137+* ``breezy.filters``
2138
2139 .. vim: ft=rst tw=72
2140
2141=== modified file 'doc/developers/contribution-quickstart.txt'
2142--- doc/developers/contribution-quickstart.txt 2011-08-11 05:48:38 +0000
2143+++ doc/developers/contribution-quickstart.txt 2017-11-11 18:32:23 +0000
2144@@ -88,9 +88,9 @@
2145 merge that does not yet have tests.
2146
2147 Normally for command-line code you should look in
2148-``bzrlib.tests.blackbox`` and for library code in ``bzrlib.tests``. For
2149+``breezy.tests.blackbox`` and for library code in ``breezy.tests``. For
2150 functions on an interface for which there are multiple implementations,
2151-like `Transport`, look in ``bzrlib.tests.per_transport``.
2152+like `Transport`, look in ``breezy.tests.per_transport``.
2153
2154 It's a good idea to search the tests for something related to the thing
2155 you're changing and you may find a test you can modify or adapt.
2156
2157=== modified file 'doc/developers/cycle.txt'
2158--- doc/developers/cycle.txt 2011-01-03 23:48:17 +0000
2159+++ doc/developers/cycle.txt 2017-11-11 18:32:23 +0000
2160@@ -1,14 +1,13 @@
2161 *********************
2162-Bazaar Release Cycles
2163+Breezy Release Cycles
2164 *********************
2165
2166-:status: Current policy, as of 2010-10.
2167-:blueprint: <https://blueprints.launchpad.net/bzr/+spec/6m-cycle>
2168+:status: Current policy, as of 2017-11.
2169
2170
2171 Our users want easy access to bug fixes without other changes to the
2172 core product. They also want a Just Works experience across the full
2173-Bazaar ecosystem. To deliver the first and enable the second, we're
2174+Breezy ecosystem. To deliver the first and enable the second, we're
2175 adopting some standard process patterns: a 6 monthly release cycle and a
2176 stable series. These changes will also have other benefits, including
2177 better availability of bug fixes in OS distributions, more freedom to
2178@@ -16,7 +15,7 @@
2179
2180 See also:
2181
2182-* `Bazaar Developer Document Catalog <index.html>`_
2183+* `Breezy Developer Document Catalog <index.html>`_
2184
2185 * `Releasing Bazaar <releasing.html>`_ -- the process for actually making
2186 a release or release candidate.
2187@@ -25,7 +24,7 @@
2188 The Process
2189 ************
2190
2191-Bazaar will make a major release every six months, which will be supported at
2192+Breezy will make a major release every six months, which will be supported at
2193 least until the time of the next major release and generally 18 months after
2194 the first final release in a series. During this support period, we'll make
2195 incremental releases which fix bugs, but which do not change network or disk
2196@@ -193,18 +192,18 @@
2197 Within a development series, the focus is on helping plugin authors keep
2198 up to date by giving clear error messages when an interface is removed.
2199 We will no longer focus on letting old plugin code work with new versions
2200-of bzrlib, which is an elusive target in Python.
2201+of breezy, which is an elusive target in Python.
2202
2203 This may mean that in cases where today a plugin would keep running but
2204 give warnings, it will now fail altogether with an error.
2205
2206-In return we expect more freedom to change and cleanup bzrlib code without
2207+In return we expect more freedom to change and cleanup breezy code without
2208 needing to keep old code around, or write extra compatibility shims, or
2209 have review turnarounds related to compatibility. Some changes, such as
2210 removing module-global variables, that are hard to do now, will be
2211 possible to do safely.
2212
2213-Discussion of plugins here includes programs that import and use bzrlib
2214+Discussion of plugins here includes programs that import and use breezy
2215 but that aren't technically plugins. The same approach, though the
2216 technical considerations are different, should apply to other extensions
2217 such as programs that use bzr through the shell interface.
2218@@ -251,7 +250,7 @@
2219
2220 This can be handled in various ways either at the OS packaging or the
2221 Python level. We don't propose to directly address it in the upstream
2222-source. (For example, we will not change the bzrlib library name from one
2223+source. (For example, we will not change the breezy library name from one
2224 release to the next.)
2225
2226 The issue already exists with people who may want to use for example the
2227
2228=== modified file 'doc/developers/development-repo.txt'
2229--- doc/developers/development-repo.txt 2010-08-13 19:08:57 +0000
2230+++ doc/developers/development-repo.txt 2017-11-11 18:32:23 +0000
2231@@ -200,17 +200,17 @@
2232 ``development`` and ``development-subtree`` formats to point to the
2233 new class you are creating.
2234 3. Add a new development format (and tests!). Repository formats are in
2235- ``bzrlib.repofmt``. You probably want to reproduce the current
2236- development format from ``bzrlib.repofmt.pack_repo`` with just new
2237+ ``breezy.repofmt``. You probably want to reproduce the current
2238+ development format from ``breezy.repofmt.pack_repo`` with just new
2239 disk format strings, ``_get_matching_bzrdir`` and help.
2240 4. Register your development format with the various registries. At the
2241 moment you need to update:
2242
2243- 1. ``bzrlib/bzrdir.py`` to register the WT/Branch/Repository
2244+ 1. ``breezy/bzrdir.py`` to register the WT/Branch/Repository
2245 collection.
2246
2247- 2. ``bzrlib/workingtree.py``, ``bzrlib/branch.py``,
2248- ``bzrlib/repository.py``, each one maintains a direct list of
2249+ 2. ``breezy/workingtree.py``, ``breezy/branch.py``,
2250+ ``breezy/repository.py``, each one maintains a direct list of
2251 their respective formats.
2252
2253 3. For repositories, you also need to update the InterKnit1and2
2254@@ -218,11 +218,11 @@
2255 non-rich-root repositories.
2256
2257 4. For repositories based on KnitPackRepository, you need to update
2258- ``bzrlib/tests/test_pack_repository.py`` to add the class to the
2259+ ``breezy/tests/test_pack_repository.py`` to add the class to the
2260 tested permutations.
2261
2262 5. Alter any other things that do class based tests. The easiest way
2263- to find these is a grep for Development in bzrlib - and please
2264+ to find these is a grep for Development in breezy - and please
2265 refactor as you find these to reduce the relevance this step has,
2266 as it should not need to exist.
2267 6. Now subclass/create from scratch/whatever the live object code you
2268
2269=== modified file 'doc/developers/documenting-changes.txt'
2270--- doc/developers/documenting-changes.txt 2010-10-14 21:23:08 +0000
2271+++ doc/developers/documenting-changes.txt 2017-11-11 18:32:23 +0000
2272@@ -7,7 +7,7 @@
2273
2274 Changing existing behavior
2275 If the change will break existing command lines, or break
2276- interoperability with other versions of Bazaar, mention this in
2277+ interoperability with other versions of Breezy, mention this in
2278 "External Compatibility Breaks" in NEWS, and also in "What's New".
2279
2280 Adding a new feature, function or option
2281@@ -17,7 +17,7 @@
2282
2283 A new hook or extension point
2284 These are also described in NEWS, in the hook documentation, and in
2285- "What's New." Even though they might be API-only changes, the fact that
2286+ "What's New." Even though they might be API-only changes, the fact that
2287 they exist may interest users enough to write a new plugin that uses
2288 them.
2289
2290@@ -40,8 +40,8 @@
2291 to testing.
2292
2293 Purely internal changes
2294- If the change has no user-visible impact and is not interesting to
2295- plugin developers, it doesn't need to be mentioned in NEWS. If you're
2296+ If the change has no user-visible impact and is not interesting to
2297+ plugin developers, it doesn't need to be mentioned in NEWS. If you're
2298 setting a new pattern or adding a new abstraction, update the developer
2299 docs.
2300
2301
2302=== modified file 'doc/developers/ec2.txt'
2303--- doc/developers/ec2.txt 2010-12-16 06:24:14 +0000
2304+++ doc/developers/ec2.txt 2017-11-11 18:32:23 +0000
2305@@ -1,5 +1,5 @@
2306 =========================
2307-Bazaar Windows EC2 Server
2308+Breezy Windows EC2 Server
2309 =========================
2310
2311 We have an Amazon EC2 virtual machine called Desolation_ for
2312@@ -10,7 +10,7 @@
2313
2314 See also:
2315
2316-* `Bazaar Developer Documentation Catalog <index.html>`_.
2317+* `Breezy Developer Documentation Catalog <index.html>`_.
2318
2319
2320 .. _Desolation: http://en.wikipedia.org/wiki/Desolation_Island
2321@@ -31,7 +31,7 @@
2322 * We keep snapshot of the OS and tool chain so that we can roll back if
2323 we need to.
2324
2325-* bzr branches and similar information are kept on stable storage that
2326+* branches and similar information are kept on stable storage that
2327 survives rollbacks of the OS state, and that can be backed up.
2328
2329 Later on we may try automated Windows testing in a similar setup.
2330@@ -92,7 +92,7 @@
2331 Preparation
2332 -----------
2333
2334-* Be in the bzr core team. If you are interested in helping with
2335+* Be in the brz core team. If you are interested in helping with
2336 Windows packaging, testing or development just ask.
2337
2338 * Install the
2339
2340=== modified file 'doc/developers/implementation-notes.txt'
2341--- doc/developers/implementation-notes.txt 2010-07-07 11:21:19 +0000
2342+++ doc/developers/implementation-notes.txt 2017-11-11 18:32:23 +0000
2343@@ -10,7 +10,7 @@
2344 lca_tree_merging
2345
2346
2347-* `BTree Index Prefetch <btree_index_prefetch.html>`_ |--| How bzr decides
2348+* `BTree Index Prefetch <btree_index_prefetch.html>`_ |--| How Breezy decides
2349 to pre-read extra nodes in the btree index.
2350
2351 * `Computing last_modified values <last-modified.html>`_ for inventory
2352
2353=== modified file 'doc/developers/index-plain.txt'
2354--- doc/developers/index-plain.txt 2012-02-29 13:55:25 +0000
2355+++ doc/developers/index-plain.txt 2017-11-11 18:32:23 +0000
2356@@ -1,5 +1,5 @@
2357 =================================
2358-Bazaar Developer Document Catalog
2359+Breezy Developer Document Catalog
2360 =================================
2361
2362
2363@@ -15,45 +15,42 @@
2364 (external link)
2365 |--| automatically generated API reference information
2366
2367-* `Integrating with Bazaar <http://wiki.bazaar.canonical.com/Integrating_with_Bazaar>`_
2368- (wiki) |--| a guide for writing Python programs that work with Bazaar.
2369+* `Integrating with Breezy <http://wiki.bazaar.canonical.com/Integrating_with_Bazaar>`_
2370+ (wiki) |--| a guide for writing Python programs that work with Breezy.
2371
2372 * `Revision Properties <revision-properties.html>`_ |--| An application
2373 can set arbitrary per-revision key/value pairs to store app-specific
2374 data.
2375
2376-* `Testing <testing.html>`_ |--| Guide to writing tests for Bazaar.
2377+* `Testing <testing.html>`_ |--| Guide to writing tests for Breezy.
2378
2379 * `Code Review <code-review.html>`_.
2380
2381-* `Bazaar Code Style Guide <code-style.html>`_.
2382+* `Breezy Code Style Guide <code-style.html>`_.
2383
2384 * `Writing plugins <http://doc.bazaar.canonical.com/plugins/en/plugin-development.html>`_
2385- |--| specific advice on writing Bazaar plugins. (web link)
2386+ |--| specific advice on writing Breezy plugins. (web link)
2387
2388 * `Documenting changes <documenting-changes.html>`_.
2389
2390 Process
2391 =======
2392
2393-* `The Bazaar Development Cycle <cycle.html>`_ |--| The monthly
2394- development cycle and how to run it.
2395-
2396-* `Releasing Bazaar <releasing.html>`_ |--|
2397- Checklist to make a release of Bazaar.
2398-
2399-* `Managing the Bazaar PPA <ppa.html>`_ |--| Packaging Bazaar for Ubuntu.
2400+* `Releasing Breezy <releasing.html>`_ |--|
2401+ Checklist to make a release of Breezy.
2402+
2403+* `Managing the Breezy PPA <ppa.html>`_ |--| Packaging Breezy for Ubuntu.
2404
2405 * `Giving back <http://wiki.bazaar.canonical.com/BzrGivingBack>`_ (wiki) |--| How to get
2406- your changes to Bazaar integrated into a release.
2407+ your changes to Breezy integrated into a release.
2408
2409 * `Profiling notes <profiling.html>`_ |--| Instructions on how to profile
2410- bzr code and visualize the results.
2411+ brz code and visualize the results.
2412
2413 * `EC2 resources <ec2.html>`_ |--| A team resource for
2414 Windows packaging and testing, and Ubuntu testing.
2415
2416-* `Tracking Bugs in Bazaar <bug-handling.html>`_ |--| How we use the bug
2417+* `Tracking Bugs in Breezy <bug-handling.html>`_ |--| How we use the bug
2418 tracker.
2419
2420 Architecture overviews
2421@@ -66,13 +63,13 @@
2422 =====
2423
2424 * `Performance roadmap <performance-roadmap.html>`_ |--| The roadmap
2425- for fixing performance in bzr over the next few releases.
2426+ for fixing performance in brz over the next few releases.
2427
2428 * `Co-located branches <colocated-branches.html>`_ |--| Planned(?) support
2429 for storing multiple branches in one file-system directory.
2430
2431-* `Bazaar Windows Shell Extension Options <tortoise-strategy.html>`_ |--|
2432- Implmentation strategy for Bazaar Windows Shell Extensions, aka
2433+* `Breezy Windows Shell Extension Options <tortoise-strategy.html>`_ |--|
2434+ Implementation strategy for Breezy Windows Shell Extensions, aka
2435 TortoiseBzr.
2436
2437 * `CHK Optimized index <improved_chk_index.html>`_
2438@@ -88,10 +85,10 @@
2439 * `Authentication ring <authentication-ring.html>`_ |--| Configuring
2440 authentication.
2441
2442-* `Bundles <bundles.html>`_ |--| All about bzr bundles.
2443+* `Bundles <bundles.html>`_ |--| All about brz bundles.
2444
2445 * `Container format <container-format.html>`_ |--| Notes on a container format
2446- for streaming and storing Bazaar data.
2447+ for streaming and storing Breezy data.
2448
2449 * `Groupcompress <groupcompress-design.html>`_ |--| Notes on the compression
2450 technology used in CHK repositories.
2451@@ -114,8 +111,8 @@
2452 * `Integration Guide <integration.html>`_ |--| A guide to integrate bzrlib into
2453 any python application.
2454
2455-* `Bazaar and case-insensitive file systems <case-insensitive-file-systems.html>`_
2456- |--| How Bazaar operates on case-insensitive file systems such as commonly
2457+* `Breezy and case-insensitive file systems <case-insensitive-file-systems.html>`_
2458+ |--| How Breezy operates on case-insensitive file systems such as commonly
2459 found on Windows, USB sticks, etc.
2460
2461 * `Development repository formats <development-repo.html>`_ |--| How to
2462@@ -132,7 +129,7 @@
2463 Implementation notes
2464 ====================
2465
2466-* `BTree Index Prefetch <btree_index_prefetch.html>`_ |--| How bzr decides
2467+* `BTree Index Prefetch <btree_index_prefetch.html>`_ |--| How brz decides
2468 to pre-read extra nodes in the btree index.
2469
2470 * `Computing last_modified values <last-modified.html>`_ for inventory
2471@@ -148,7 +145,7 @@
2472
2473 * `dirstate <dirstate.html>`_ |--| An observation re. the dirstate file
2474
2475-* `"bzr update" performance analysis <update.html>`_ |--| "bzr update"
2476+* `"brz update" performance analysis <update.html>`_ |--| "brz update"
2477 performance analysis
2478
2479
2480
2481=== modified file 'doc/developers/index.txt'
2482--- doc/developers/index.txt 2012-02-29 13:55:25 +0000
2483+++ doc/developers/index.txt 2017-11-11 18:32:23 +0000
2484@@ -1,5 +1,5 @@
2485 =================================
2486-Bazaar Developer Document Catalog
2487+Breezy Developer Document Catalog
2488 =================================
2489
2490
2491@@ -12,13 +12,12 @@
2492 contribution-quickstart
2493
2494
2495-Working on Bazaar
2496+Working on Breezy
2497 =================
2498
2499 .. toctree::
2500 :maxdepth: 1
2501
2502- cycle
2503 profiling
2504 bug-handling
2505 HACKING
2506@@ -27,7 +26,7 @@
2507 code-style
2508 documenting-changes
2509
2510-* `Contributing to Bazaar Documentation <http://wiki.bazaar.canonical.com/ContributingToTheDocs>`_ (wiki)
2511+* `Contributing to Breezy Documentation <http://wiki.bazaar.canonical.com/ContributingToTheDocs>`_ (wiki)
2512
2513
2514 Architecture overviews
2515@@ -61,7 +60,7 @@
2516 overview
2517 integration
2518
2519-* `Writing plugins for Bazaar <http://doc.bazaar.canonical.com/plugins/en/plugin-development.html>`_ (web link)
2520+* `Writing plugins for Breezy <http://doc.bazaar.canonical.com/plugins/en/plugin-development.html>`_ (web link)
2521
2522 * `bzrlib API reference <http://people.canonical.com/~mwh/bzrlibapi/>`_
2523 (web link)
2524@@ -83,8 +82,8 @@
2525 Licence
2526 ============
2527
2528-Copyright 2005-2011 Canonical Ltd. Bazaar is free software, and you
2529-may use, modify and redistribute both Bazaar and this document under
2530+Copyright 2005-2011 Canonical Ltd. Breezy is free software, and you
2531+may use, modify and redistribute both Breezy and this document under
2532 the terms of the GNU General Public License version 2 or later. See
2533 <http://www.gnu.org/licenses/>.
2534
2535
2536=== modified file 'doc/developers/indices.txt'
2537--- doc/developers/indices.txt 2007-07-15 15:40:37 +0000
2538+++ doc/developers/indices.txt 2017-11-11 18:32:23 +0000
2539@@ -7,7 +7,7 @@
2540
2541 :Date: 2007-07-14
2542
2543-This document describes the indexing facilities within bzrlib.
2544+This document describes the indexing facilities within breezy.
2545
2546
2547 .. contents::
2548@@ -33,7 +33,7 @@
2549 Overview
2550 ========
2551
2552-bzr is moving to a write-once model for repository storage in order to
2553+Breezy is moving to a write-once model for repository storage in order to
2554 achieve lock-free repositories eventually. In order to support this, we are
2555 making our new index classes **immutable**. That is, one creates a new
2556 index in a single operation, and after that it is read only. To combine
2557@@ -98,7 +98,7 @@
2558
2559 ``GraphIndex`` supports graph based lookups. While currently unoptimised
2560 for reading, the index is quite space efficient at storing the revision
2561-graph index for bzr. The ``GraphIndexBuilder`` may be used to create one
2562+graph index for Breezy. The ``GraphIndexBuilder`` may be used to create one
2563 of these indices by calling ``add_node`` until all nodes are added, then
2564 ``finish`` to obtain a file stream containing the index data. Multiple
2565 indices may be queried using the ``CombinedGraphIndex`` class.
2566
2567=== modified file 'doc/developers/integration.txt'
2568--- doc/developers/integration.txt 2017-06-10 00:17:06 +0000
2569+++ doc/developers/integration.txt 2017-11-11 18:32:23 +0000
2570@@ -1,9 +1,9 @@
2571 =======================
2572-Integrating with Bazaar
2573+Integrating with Breezy
2574 =======================
2575
2576 This document provides some general observations on integrating with
2577-Bazaar and some recipes for typical tasks. It is intended to be useful to
2578+Breezy and some recipes for typical tasks. It is intended to be useful to
2579 someone developing either a plugin or some other piece of software that
2580 integrates with bzr. If you want to know about a topic that's not covered
2581 here, just ask us.
2582@@ -11,26 +11,26 @@
2583
2584
2585
2586-Starting with bzrlib
2587+Starting with breezy
2588 ====================
2589
2590 Within bzr
2591 ----------
2592
2593-When using bzrlib within the ``bzr`` program (for instance as a bzr
2594-plugin), bzrlib's global state is already available for use.
2595+When using breezy within the ``bzr`` program (for instance as a bzr
2596+plugin), breezy's global state is already available for use.
2597
2598 From outside bzr
2599 ----------------
2600
2601-To use bzrlib outside of ``bzr`` some global state needs to be setup.
2602-bzrlib needs ways to handle user input, passwords, a place to emit
2603+To use breezy outside of ``bzr`` some global state needs to be setup.
2604+breezy needs ways to handle user input, passwords, a place to emit
2605 progress bars, logging setup appropriately for your program. The easiest
2606 way to set all this up in the same fashion ``bzr`` does is to call
2607-``bzrlib.initialize``.
2608+``breezy.initialize``.
2609
2610-This returns a context manager within which bzrlib functions will work
2611-correctly. See the pydoc for ``bzrlib.initialize`` for more information.
2612+This returns a context manager within which breezy functions will work
2613+correctly. See the pydoc for ``breezy.initialize`` for more information.
2614 (You can get away without entering the context manager, because the setup
2615 work happens directly from ``initialize``.)
2616
2617@@ -39,7 +39,7 @@
2618
2619 # This sets up your ~/.bzr.log, ui factory and so on and so forth. It is
2620 # not safe to use as a doctest.
2621- library_state = bzrlib.initialize()
2622+ library_state = breezy.initialize()
2623 library_state.__enter__()
2624 try:
2625 pass
2626@@ -53,22 +53,22 @@
2627
2628 To run command-line commands in-process::
2629
2630- from bzrlib.commands import get_command
2631+ from breezy.commands import get_command
2632
2633 cmd = get_command('version')
2634 cmd.run([])
2635
2636 This will send output through the current UIFactory; you can redirect this
2637-elsewhere through the parameters to `bzrlib.initialize`.
2638+elsewhere through the parameters to `breezy.initialize`.
2639
2640
2641 Manipulating the Working Tree
2642 =============================
2643-Most objects in Bazaar are in files, named after the class they contain.
2644+Most objects in Breezy are in files, named after the class they contain.
2645 To manipulate the Working Tree we need a valid WorkingTree object, which
2646 is loaded from the workingtree.py file, eg::
2647
2648- from bzrlib import workingtree
2649+ from breezy import workingtree
2650 wt = workingtree.WorkingTree.open('/home/jebw/bzrtest')
2651
2652
2653@@ -86,7 +86,7 @@
2654
2655 ``changes_from`` creates a Delta object showing changes::
2656
2657- from bzrlib import delta
2658+ from breezy import delta
2659 changes = wt.changes_from(wt.basis_tree())
2660
2661 This gives us a Delta object, which has several lists of files for each type of
2662@@ -186,15 +186,15 @@
2663 Generating a log is, in itself, simple. Grab a branch (see below) and pass
2664 it to show_log together with a log formatter, eg::
2665
2666- from bzrlib import log
2667- from bzrlib import branch
2668+ from breezy import log
2669+ from breezy import branch
2670
2671 b = branch.Branch.open('/path/to/bazaar/branch')
2672 lf = log.LongLogFormatter(to_file=sys.stdout)
2673 log.show_log(b, lf)
2674
2675
2676-Three log formatters are included with bzrlib: LongLogFormatter,
2677+Three log formatters are included with breezy: LongLogFormatter,
2678 ShortLogFormatter and LineLogFormatter. These provide long, short and
2679 single-line log output formats. It's also possible to write your own in
2680 very little code.
2681@@ -239,7 +239,7 @@
2682
2683 To work with a branch you need a branch object, created from your branch::
2684
2685- from bzrlib import branch
2686+ from breezy import branch
2687
2688 b = branch.Branch.open('/home/jebw/bzrtest')
2689
2690@@ -249,17 +249,17 @@
2691
2692 To branch you create a branch object representing the branch you are
2693 branching from, and supply a path/url to the new branch location.
2694-The following code clones the bzr.dev branch (the latest copy of the Bazaar
2695+The following code clones the bzr.dev branch (the latest copy of the Breezy
2696 source code) - be warned it has to download 60meg so takes a while to run
2697 with no feedback::
2698
2699- from bzrlib import branch
2700+ from breezy import branch
2701
2702 b = branch.Branch.open('http://bazaar.launchpad.net/~bzr-pqm/bzr/bzr.dev')
2703 nb = b.controldir.sprout('/tmp/newBzrBranch').open_branch()
2704
2705
2706-This provides no feedback, since Bazaar automatically uses the 'silent' UI.
2707+This provides no feedback, since Breezy automatically uses the 'silent' UI.
2708
2709
2710 Pushing and pulling branches
2711@@ -268,7 +268,7 @@
2712 To push a branch you need to open the source and destination branches, then
2713 just call push with the other branch as a parameter::
2714
2715- from bzrlib import branch
2716+ from breezy import branch
2717
2718 b1 = branch.Branch.open('file:///home/user/mybranch')
2719 b2 = branch.Branch.open('http://bazaar.launchpad.net/~bzr-pqm/bzr/bzr.dev')
2720@@ -292,7 +292,7 @@
2721
2722 This performs a Lightweight checkout from an existing Branch::
2723
2724- from bzrlib import bzrdir
2725+ from breezy import bzrdir
2726
2727 accelerator_tree, source = bzrdir.BzrDir.open_tree_or_branch('http:URL')
2728 source.create_checkout('/tmp/newBzrCheckout', None, True, accelerator_tree)
2729
2730=== modified file 'doc/developers/inventory.txt'
2731--- doc/developers/inventory.txt 2010-11-12 22:08:18 +0000
2732+++ doc/developers/inventory.txt 2017-11-11 18:32:23 +0000
2733@@ -25,7 +25,7 @@
2734 Serialization
2735 =============
2736
2737-There are several variants of serialised tree shape in use by bzr. To date
2738+There are several variants of serialised tree shape in use by Breezy. To date
2739 these have been mostly XML-based, though plugins have offered non-XML versions.
2740
2741 dirstate
2742@@ -61,12 +61,12 @@
2743 5. Allow fetch to determine the file texts that need to be pulled to ensure
2744 that the entire tree can be reconstructed without having to probe every
2745 path in the tree.
2746- 6. Allow bzr to map paths to file ids without reading the entire serialised
2747+ 6. Allow Breezy to map paths to file ids without reading the entire serialised
2748 form. This is something that is used by commands such as merge PATH and
2749 diff -r X PATH.
2750- 7. Let bzr map file ids to paths without reading the entire serialised form.
2751+ 7. Let Breezy map file ids to paths without reading the entire serialised form.
2752 This is used by commands that are presenting output to the user such as
2753- loggerhead, bzr-search, log FILENAME.
2754+ loggerhead, brz-search, log FILENAME.
2755 8. We want a strong validator for inventories which is cheap to generate.
2756 Specifically we should be able to create the generator for a new commit
2757 without processing all the data of the basis commit.
2758@@ -127,7 +127,7 @@
2759
2760 Some key layers we have today and can look at using or tweaking are:
2761
2762- * Tree objects - the abstract interface bzrlib code works in
2763+ * Tree objects - the abstract interface breezy code works in
2764 * VersionedFiles - the optionally delta compressing key->bytes storage
2765 interface.
2766 * Inventory - the abstract interface that many tree operations are written in.
2767@@ -503,7 +503,7 @@
2768 =================
2769
2770 Inventory deltas and more broadly changes between trees are a significant part
2771-of bzr's core operations: they are key components in status, diff, commit,
2772+of Breezy's core operations: they are key components in status, diff, commit,
2773 and merge (although merge uses tree transform, deltas contain the changes that
2774 are applied to the transform). Our ability to perform a given operation depends
2775 on us creating consistent deltas between trees. Inconsistent deltas lead to
2776
2777=== modified file 'doc/developers/last-modified.txt'
2778--- doc/developers/last-modified.txt 2009-12-02 20:34:07 +0000
2779+++ doc/developers/last-modified.txt 2017-11-11 18:32:23 +0000
2780@@ -90,7 +90,7 @@
2781 ----------------------------
2782
2783 Accessing a foreign branch requires synthesizing this information.
2784-If last_modified is removed from a future bzr version, we will also need
2785+If last_modified is removed from a future Breezy version, we will also need
2786 to synthesize it to pull back to earlier formats.
2787
2788 Because last_modified is not natively stored in the foreign branches, we
2789
2790=== modified file 'doc/developers/lca_tree_merging.txt'
2791--- doc/developers/lca_tree_merging.txt 2008-09-05 02:29:34 +0000
2792+++ doc/developers/lca_tree_merging.txt 2017-11-11 18:32:23 +0000
2793@@ -47,7 +47,7 @@
2794 Resolution Algorithm
2795 --------------------
2796
2797-(This can be seen as ``bzrlib.merge.Merge3Merger._lca_multi_way```
2798+(This can be seen as ``breezy.merge.Merge3Merger._lca_multi_way```
2799
2800 1. If ``THIS`` and ``OTHER`` have the same value, use it. There is no need to
2801 inspect any other values in this case. Either nothing was changed (all
2802
2803=== modified file 'doc/developers/network-protocol.txt'
2804--- doc/developers/network-protocol.txt 2011-11-29 14:59:18 +0000
2805+++ doc/developers/network-protocol.txt 2017-11-11 18:32:23 +0000
2806@@ -70,7 +70,7 @@
2807 machine until the request can be satisfied,
2808 sends structured data to the protocol.
2809
2810-Request handlers are registered in the `bzrlib.smart.request` module.
2811+Request handlers are registered in the `breezy.smart.request` module.
2812
2813
2814 Client-side
2815
2816=== modified file 'doc/developers/overview.txt'
2817--- doc/developers/overview.txt 2012-02-06 23:39:18 +0000
2818+++ doc/developers/overview.txt 2017-11-11 18:32:23 +0000
2819@@ -1,11 +1,11 @@
2820 =============================
2821-Bazaar Architectural Overview
2822+Breezy Architectural Overview
2823 =============================
2824
2825-This document describes the key classes and concepts within Bazaar. It is
2826-intended to be useful to people working on the Bazaar codebase, or to
2827+This document describes the key classes and concepts within Breezy. It is
2828+intended to be useful to people working on the Breezy codebase, or to
2829 people writing plugins. People writing plugins may also like to read the
2830-guide to `Integrating with Bazaar <integration.html>`_ for some specific recipes.
2831+guide to `Integrating with Breezy <integration.html>`_ for some specific recipes.
2832
2833 There's some overlap between this and the `Core Concepts`_ section of the
2834 user guide, but this document is targetted to people interested in the
2835@@ -15,7 +15,7 @@
2836
2837 If you have any questions, or if something seems to be incorrect, unclear
2838 or missing, please talk to us in ``irc://irc.freenode.net/#bzr``, write to
2839-the Bazaar mailing list, or simply file a bug report.
2840+the Breezy mailing list, or simply file a bug report.
2841
2842
2843 IDs and keys
2844@@ -24,7 +24,7 @@
2845 IDs
2846 ===
2847
2848-All IDs are globally unique identifiers. Inside bzrlib they are almost
2849+All IDs are globally unique identifiers. Inside breezy they are almost
2850 always represented as UTF-8 encoded bytestrings (i.e. ``str`` objects).
2851
2852 The main two IDs are:
2853@@ -33,12 +33,12 @@
2854 ``pqm@pqm.ubuntu.com-20110201161347-ao76mv267gc1b5v2``
2855 :File IDs: The unique identifier of a single file.
2856
2857-By convention, in the bzrlib API, parameters of methods that are expected
2858+By convention, in the breezy API, parameters of methods that are expected
2859 to be IDs (as opposed to keys, revision numbers, or some other handle)
2860 will end in ``id``, e.g. ``revid`` or ``file_id``.
2861
2862 Ids may be stored directly or they can be inferred from other
2863-data. Native Bazaar formats store ids directly; foreign VCS
2864+data. Native Breezy formats store ids directly; foreign VCS
2865 support usually generates them somehow. For example, the
2866 Git commit with SHA ``fb235a3be6372e40ff7f7ebbcd7905a08cb04444``
2867 is referred to with the revision ID
2868@@ -82,7 +82,7 @@
2869 actual file. This means that lookups of file ids doesn't scale with
2870 the number of nested trees.
2871
2872-Inventory file ids are only relevant for native Bazaar formats; foreign
2873+Inventory file ids are only relevant for native Breezy formats; foreign
2874 formats don't use inventories.
2875
2876 Transform ids
2877@@ -160,8 +160,8 @@
2878
2879 See also:
2880
2881-* `Developer guide to bzrlib transports <transports.html>`_
2882-* API docs for ``bzrlib.transport.Transport``
2883+* `Developer guide to breezy transports <transports.html>`_
2884+* API docs for ``breezy.transport.Transport``
2885
2886 Control directory
2887 =================
2888@@ -188,7 +188,7 @@
2889 Trees have an inventory and parents (an ordered list of zero or more
2890 revision IDs).
2891
2892-The implementation of ``Tree`` for Bazaar's own formats is based around
2893+The implementation of ``Tree`` for Breezy's own formats is based around
2894 ``Inventory`` objects which describe the shape of the tree. Each tree has
2895 at least one inventory associated with it, which is available as the
2896 ``root_inventory`` attribute on tree. The tree can have more inventories
2897
2898=== modified file 'doc/developers/packrepo.txt'
2899--- doc/developers/packrepo.txt 2010-11-12 22:08:18 +0000
2900+++ doc/developers/packrepo.txt 2017-11-11 18:32:23 +0000
2901@@ -10,7 +10,7 @@
2902 Motivation
2903 ----------
2904
2905-KnitPack is a new repository format for Bazaar, which is expected to be
2906+KnitPack is a new repository format for Breezy, which is expected to be
2907 faster both locally and over the network, is usually more compact, and
2908 will work with more FTP servers.
2909
2910@@ -145,7 +145,7 @@
2911 ===============
2912
2913 Bazaar 0.92 adds a new format (experimental at first) implemented in
2914-``bzrlib.repofmt.pack_repo.py``.
2915+``breezy.repofmt.pack_repo.py``.
2916
2917 This format provides a knit-like interface which is quite compatible
2918 with knit format repositories: you can get a VersionedFile for a
2919@@ -186,7 +186,7 @@
2920 compression base
2921 ======== ========== ======================== ==========================
2922
2923-Indices are accessed through the ``bzrlib.index.GraphIndex`` class.
2924+Indices are accessed through the ``breezy.index.GraphIndex`` class.
2925 Indices are stored as sorted files on disk. Each line is one record,
2926 and contains:
2927
2928
2929=== added directory 'doc/developers/plans'
2930=== renamed file 'doc/developers/plans.txt' => 'doc/developers/plans/index.txt'
2931--- doc/developers/plans.txt 2012-01-24 13:14:06 +0000
2932+++ doc/developers/plans/index.txt 2017-11-11 18:32:23 +0000
2933@@ -5,7 +5,5 @@
2934 :maxdepth: 1
2935
2936 Performance roadmap <performance-roadmap>
2937- new-config-rationale
2938 tortoise-strategy
2939- improved_chk_index
2940 nested-trees
2941
2942=== renamed file 'doc/developers/nested-trees.txt' => 'doc/developers/plans/nested-trees.txt'
2943=== added directory 'doc/developers/plans/performance'
2944=== renamed file 'doc/developers/add.txt' => 'doc/developers/plans/performance/add.txt'
2945=== renamed file 'doc/developers/annotate.txt' => 'doc/developers/plans/performance/annotate.txt'
2946=== renamed file 'doc/developers/bundle-creation.txt' => 'doc/developers/plans/performance/bundle-creation.txt'
2947=== renamed file 'doc/developers/commit.txt' => 'doc/developers/plans/performance/commit.txt'
2948--- doc/developers/commit.txt 2009-12-02 20:34:07 +0000
2949+++ doc/developers/plans/performance/commit.txt 2017-11-11 18:32:23 +0000
2950@@ -101,7 +101,7 @@
2951
2952 3 - Before starting the commit proper, we prompt for a commit message
2953 and in that commit message editor we show a list of the files that
2954-will be committed: basically the output of bzr status. This is
2955+will be committed: basically the output of brz status. This is
2956 basically the same as the list of changes we detect while storing the
2957 commit, but because the user will sometimes change the tree after
2958 opening the commit editor and expect the final state to be committed I
2959@@ -130,7 +130,7 @@
2960 they don't seem to have substantial performance consequences.
2961
2962 If one wanted to optimize solely for the speed of commit I think
2963-hash-addressed file-per-text storage like in git (or bzr 0.1) is very
2964+hash-addressed file-per-text storage like in git (or Breezy 0.1) is very
2965 good. Remarkably, it does not need to read the inventory for the
2966 previous revision. For each versioned file, we just need to get its
2967 hash, either by reading the file or validating its stat data. If that
2968@@ -186,9 +186,9 @@
2969 the 2 parents).
2970
2971 3) **Automatic deletion of 'missing' files.** This is a point that we go
2972- back and forth on. I think the basic idea is that 'bzr commit' by
2973+ back and forth on. I think the basic idea is that 'brz commit' by
2974 default should abort if it finds a 'missing' file (in case that file was
2975- renamed rather than deleted), but 'bzr commit --auto' can add unknown
2976+ renamed rather than deleted), but 'brz commit --auto' can add unknown
2977 files and remove missing files automatically.
2978
2979 4) **sha1 for newly added files.** status doesn't really need this: it should
2980@@ -262,7 +262,7 @@
2981 all the work to do really fast comparison and throw-away of unimportant
2982 records.
2983
2984-The way I made "bzr status" fast is by moving the 'ignore this record'
2985+The way I made "brz status" fast is by moving the 'ignore this record'
2986 ability as deep into the stack as I could get. Status has the property
2987 that you don't care about most of the records, just like commit. So the
2988 sooner you can stop evaluating the 99% that you don't care about, the
2989
2990=== renamed file 'doc/developers/diff.txt' => 'doc/developers/plans/performance/diff.txt'
2991=== renamed file 'doc/developers/directory-fingerprints.txt' => 'doc/developers/plans/performance/directory-fingerprints.txt'
2992--- doc/developers/directory-fingerprints.txt 2010-11-12 22:08:18 +0000
2993+++ doc/developers/plans/performance/directory-fingerprints.txt 2017-11-11 18:32:23 +0000
2994@@ -223,7 +223,7 @@
2995 * Are unbalanced trees a significant problem? Trees can be unbalanced by having
2996 many directories (deep or wide), or many files per directory.
2997
2998- For small trees like bzr, 744 of 874 are in the bzrlib subtree. In
2999+ For small trees like bzr, 744 of 874 are in the breezy subtree. In
3000 general, larger trees are more balanced, because humans, editors and
3001 other tools have trouble managing very unbalanced trees. But there are
3002 exceptions: Aaron has one tree with 20,000 generated but versioned
3003
3004=== renamed file 'doc/developers/gc.txt' => 'doc/developers/plans/performance/gc.txt'
3005=== renamed file 'doc/developers/incremental-push-pull.txt' => 'doc/developers/plans/performance/incremental-push-pull.txt'
3006--- doc/developers/incremental-push-pull.txt 2010-11-12 14:28:36 +0000
3007+++ doc/developers/plans/performance/incremental-push-pull.txt 2017-11-11 18:32:23 +0000
3008@@ -14,7 +14,7 @@
3009 A push or pull operation must:
3010 * Copy all the data to reconstruct the selected revisions in the target
3011 branch. This is the goal of push and pull after all.
3012- * Reject corrupt data. As bzr has no innate mechanism for discarding corrupted
3013+ * Reject corrupt data. As brz has no innate mechanism for discarding corrupted
3014 data, corrupted data should not be incorporated accidentally.
3015
3016 Factors which should add work for push/pull
3017
3018=== renamed file 'doc/developers/initial-push-pull.txt' => 'doc/developers/plans/performance/initial-push-pull.txt'
3019=== renamed file 'doc/developers/merge-scaling.txt' => 'doc/developers/plans/performance/merge-scaling.txt'
3020=== renamed file 'doc/developers/missing.txt' => 'doc/developers/plans/performance/missing.txt'
3021=== renamed file 'doc/developers/performance-use-case-analysis.txt' => 'doc/developers/plans/performance/performance-use-case-analysis.txt'
3022=== renamed file 'doc/developers/planned-change-integration.txt' => 'doc/developers/plans/performance/planned-change-integration.txt'
3023=== renamed file 'doc/developers/planned-performance-changes.txt' => 'doc/developers/plans/performance/planned-performance-changes.txt'
3024=== renamed file 'doc/developers/revert.txt' => 'doc/developers/plans/performance/revert.txt'
3025=== renamed file 'doc/developers/performance-roadmap.txt' => 'doc/developers/plans/performance/roadmap.txt'
3026--- doc/developers/performance-roadmap.txt 2009-06-10 05:00:47 +0000
3027+++ doc/developers/plans/performance/roadmap.txt 2017-11-11 18:32:23 +0000
3028@@ -1,5 +1,5 @@
3029 ==========================
3030-Bazaar Performance Roadmap
3031+Breezy Performance Roadmap
3032 ==========================
3033
3034 .. Mark sections in included files as following:
3035
3036=== renamed file 'doc/developers/status.txt' => 'doc/developers/plans/performance/status.txt'
3037=== renamed file 'doc/developers/uncommit.txt' => 'doc/developers/plans/performance/uncommit.txt'
3038=== renamed file 'doc/developers/update.txt' => 'doc/developers/plans/performance/update.txt'
3039=== renamed file 'doc/developers/tortoise-strategy.txt' => 'doc/developers/plans/tortoise-strategy.txt'
3040=== modified file 'doc/developers/plugin-api.txt'
3041--- doc/developers/plugin-api.txt 2010-04-16 12:59:03 +0000
3042+++ doc/developers/plugin-api.txt 2017-11-11 18:32:23 +0000
3043@@ -11,7 +11,7 @@
3044 Introduction
3045 ============
3046
3047-bzrlib has a very flexible internal structure allowing plugins for many
3048+breezy has a very flexible internal structure allowing plugins for many
3049 operations. Plugins can add commands, new storage formats, diff and merge
3050 features and more. This document provides an overview of the API and
3051 conventions for plugin authors.
3052@@ -22,15 +22,15 @@
3053 See also
3054 --------
3055
3056- * `Bazaar Developer Documentation Catalog <../index.html>`_.
3057- * `Bazaar Plugins Guide <http://doc.bazaar.canonical.com/plugins/en/plugin-development.html>`_ for
3058+ * `Breezy Developer Documentation Catalog <../index.html>`_.
3059+ * `Breezy Plugins Guide <http://doc.bazaar.canonical.com/plugins/en/plugin-development.html>`_ for
3060 more suggestions about particular APIs.
3061
3062
3063 Structure of a plugin
3064 =====================
3065
3066-Plugins are Python modules under ``bzrlib.plugins``. They can be installed
3067+Plugins are Python modules under ``breezy.plugins``. They can be installed
3068 either into the PYTHONPATH in that location, or in ~/.bazaar/plugins.
3069
3070 Plugins should have a setup.py.
3071@@ -42,12 +42,12 @@
3072 Plugin metadata before installation
3073 ===================================
3074
3075-Plugins can export a summary of what they provide, and what versions of bzrlib
3076+Plugins can export a summary of what they provide, and what versions of breezy
3077 they are compatible with. This allows tools to be written to work with plugins,
3078 such as to generate a directory of plugins, or install them via a
3079 symlink/checkout to ~/.bazaar/plugins.
3080
3081-This interface allows bzr to interrogate a plugin without actually loading
3082+This interface allows Breezy to interrogate a plugin without actually loading
3083 it. This is useful because loading a plugin may have side effects such
3084 as registering or overriding commands, or the plugin may raise an error,
3085 if for example a prerequisite is not present.
3086@@ -56,7 +56,7 @@
3087 Metadata protocol
3088 -----------------
3089
3090-A plugin that supports the bzr plugin metadata protocol will do two
3091+A plugin that supports the Breezy plugin metadata protocol will do two
3092 things. Firstly, the ``setup.py`` for the plugin will guard the call to
3093 ``setup()``::
3094
3095@@ -71,45 +71,45 @@
3096 +------------------------+---------+----------------------------------------+
3097 | Variable | Default | Definition |
3098 +========================+=========+========================================+
3099-| bzr_plugin_name | None | The name the plugin package should be |
3100+| brz_plugin_name | None | The name the plugin package should be |
3101 | | | given on disk. The plugin is then |
3102 | | | available to python at |
3103-| | | bzrlib.plugins.NAME |
3104+| | | breezy.plugins.NAME |
3105 +------------------------+---------+----------------------------------------+
3106-| bzr_commands | [] | A list of the commands that the plugin |
3107+| brz_commands | [] | A list of the commands that the plugin |
3108 | | | provides. Commands that already exist |
3109-| | | in bzr and are decorated by the plugin |
3110+| | | in brz and are decorated by the plugin |
3111 | | | do not need to be listed (but it is not|
3112 | | | harmful if you do list them). |
3113 +------------------------+---------+----------------------------------------+
3114-| bzr_plugin_version | None | A version_info 5-tuple with the plugins|
3115+| brz_plugin_version | None | A version_info 5-tuple with the plugins|
3116 | | | version. |
3117 +------------------------+---------+----------------------------------------+
3118-| bzr_minimum_version | None | A version_info 3-tuple for comparison |
3119-| | | with the bzrlib minimum and current |
3120+| brz_minimum_version | None | A version_info 3-tuple for comparison |
3121+| | | with the breezy minimum and current |
3122 | | | version, for determining likely |
3123 | | | compatibility. |
3124 +------------------------+---------+----------------------------------------+
3125-| bzr_maximum_version | None | A version_info 3-tuple like |
3126-| | | bzr_minimum_version but checking the |
3127+| brz_maximum_version | None | A version_info 3-tuple like |
3128+| | | brz_minimum_version but checking the |
3129 | | | upper limits supported. |
3130 +------------------------+---------+----------------------------------------+
3131-| bzr_control_formats | {} | A dictionary of descriptions of version|
3132+| brz_control_formats | {} | A dictionary of descriptions of version|
3133 | | | control directories. See |
3134 | | | `Control Formats` below. |
3135 +------------------------+---------+----------------------------------------+
3136-| bzr_checkout_formats | {} | A dictionary of tree_format_string -> |
3137+| brz_checkout_formats | {} | A dictionary of tree_format_string -> |
3138 | | | human description strings, for tree |
3139 | | | formats that drop into the |
3140 | | | ``.bzr/checkout`` metadir system. |
3141 +------------------------+---------+----------------------------------------+
3142-| bzr_branch_formats | {} | As bzr_checkout_formats but for |
3143+| brz_branch_formats | {} | As brz_checkout_formats but for |
3144 | | | branches. |
3145 +------------------------+---------+----------------------------------------+
3146-| bzr_repository_formats | {} | As bzr_checkout_formats but for |
3147+| brz_repository_formats | {} | As brz_checkout_formats but for |
3148 | | | repositories. |
3149 +------------------------+---------+----------------------------------------+
3150-| bzr_transports | [] | URL prefixes for which this plugin |
3151+| brz_transports | [] | URL prefixes for which this plugin |
3152 | | | will register transports. |
3153 +------------------------+---------+----------------------------------------+
3154
3155@@ -127,10 +127,10 @@
3156 the content of the file. Thus::
3157
3158 # (look for a .hg directory)
3159- bzr_control_formats = {"Mercurial":{'.hg/': None}}
3160+ brz_control_formats = {"Mercurial":{'.hg/': None}}
3161
3162 # (look for a file called .svn/format with contents 4\n).
3163- bzr_control_formats = {"Subversion":{'.svn/format': '4\n'}}
3164+ brz_control_formats = {"Subversion":{'.svn/format': '4\n'}}
3165
3166
3167 Example
3168@@ -141,21 +141,21 @@
3169 #!/usr/bin/env python2.4
3170 from distutils.core import setup
3171
3172- bzr_plugin_name = 'demo'
3173- bzr_commands = [
3174+ brz_plugin_name = 'demo'
3175+ brz_commands = [
3176 'new-command',
3177 ]
3178
3179- bzr_branch_formats = {
3180+ brz_branch_formats = {
3181 "Branch label on disk\n":"demo branch",
3182 }
3183
3184- bzr_control_formats = {"Subversion":{'.svn/format': '4\n'}}
3185-
3186- bzr_transports = ["hg+ssh://"]
3187-
3188- bzr_plugin_version = (1, 3, 0, 'dev', 0)
3189- bzr_minimum_version = (1, 0, 0)
3190+ brz_control_formats = {"Subversion":{'.svn/format': '4\n'}}
3191+
3192+ brz_transports = ["hg+ssh://"]
3193+
3194+ brz_plugin_version = (1, 3, 0, 'dev', 0)
3195+ brz_minimum_version = (1, 0, 0)
3196
3197 if __name__ == 'main':
3198 setup(name="Demo",
3199@@ -165,10 +165,10 @@
3200 author_email="bazaar@lists.canonical.com",
3201 license = "GNU GPL v2",
3202 url="https://launchpad.net/bzr-demo",
3203- packages=['bzrlib.plugins.demo',
3204- 'bzrlib.plugins.demo.tests',
3205+ packages=['breezy.plugins.demo',
3206+ 'breezy.plugins.demo.tests',
3207 ],
3208- package_dir={'bzrlib.plugins.demo': '.'})
3209+ package_dir={'breezy.plugins.demo': '.'})
3210
3211
3212 Plugin metadata after installation
3213@@ -193,14 +193,14 @@
3214 -----------
3215
3216 Plugins can and should declare that they depend on a particular version of
3217-bzrlib like so::
3218-
3219- from bzrlib.api import require_api
3220-
3221- require_api(bzrlib, (1, 11, 0))
3222+breezy like so::
3223+
3224+ from breezy.api import require_api
3225+
3226+ require_api(breezy, (1, 11, 0))
3227
3228 Please see `API versioning <api-versioning.html>`_ for more details on the API
3229-metadata protocol used by bzrlib.
3230+metadata protocol used by breezy.
3231
3232 Plugin version
3233 --------------
3234@@ -219,8 +219,8 @@
3235 other places. To detect whether the module is being loaded by bzr, use
3236 something like this::
3237
3238- if __name__ == 'bzrlib.plugins.loggerhead':
3239- # register with bzrlib...
3240+ if __name__ == 'breezy.plugins.loggerhead':
3241+ # register with breezy...
3242
3243
3244 Plugin performance
3245@@ -228,7 +228,7 @@
3246
3247 Plugins should avoid doing work or loading code from the plugin or
3248 external libraries, if they're just installed but not actually active,
3249-because this slows down every invocation of bzr. The bzrlib APIs
3250+because this slows down every invocation of bzr. The breezy APIs
3251 generally allow the plugin to 'lazily' register methods to invoke if a
3252 particular disk format or seen or a particular command is run.
3253
3254@@ -240,8 +240,8 @@
3255 startup. Generally the plugin won't want to actually do anything at this
3256 time other than register or override functions to be called later.
3257
3258-The plugin can import bzrlib and call any function.
3259-Some interesting APIs are described in `Bazaar Plugins Guide <http://doc.bazaar.canonical.com/plugins/en/plugin-development.html>`_.
3260+The plugin can import breezy and call any function.
3261+Some interesting APIs are described in `Breezy Plugins Guide <http://doc.bazaar.canonical.com/plugins/en/plugin-development.html>`_.
3262
3263
3264 Publishing your plugin
3265
3266=== modified file 'doc/developers/ppa.txt'
3267--- doc/developers/ppa.txt 2011-02-01 01:34:58 +0000
3268+++ doc/developers/ppa.txt 2017-11-11 18:32:23 +0000
3269@@ -1,13 +1,13 @@
3270-Managing the Bazaar PPA
3271+Managing the Breezy PPA
3272 =======================
3273
3274-See also: `Bazaar Developer Document Catalog <index.html>`_.
3275+See also: `Breezy Developer Document Catalog <index.html>`_.
3276
3277
3278 Background
3279 ----------
3280
3281-We build Ubuntu ``.deb`` packages for Bazaar as an important part of the
3282+We build Ubuntu ``.deb`` packages for Breezy as an important part of the
3283 release process. These packages are hosted in a few `Personal Package
3284 Archives (PPA)`__ on Launchpad.
3285
3286@@ -48,7 +48,7 @@
3287
3288 Final release versions are first uploaded into the proposed PPA, which
3289 serves as a staging area to allow for new packages to be tested, and also
3290-so that a complete set of Bazaar core and plugin updated versions can be
3291+so that a complete set of Breezy core and plugin updated versions can be
3292 prepared together, when negotiating an API version transition.
3293
3294 Once ready, packages can be copied from the proposed PPA to the main PPA
3295@@ -121,7 +121,7 @@
3296 .. _`bzr-builddeb`: http://launchpad.net/bzr-builddeb
3297
3298
3299-Packaging Bazaar
3300+Packaging Breezy
3301 ----------------
3302
3303 Overview of packaging with builddeb
3304@@ -227,7 +227,7 @@
3305 #. The ``bzr-builddeb`` step will download the original tarball if you do
3306 not already have it, putting it into a ``tarballs`` directory.
3307
3308-#. For Bazaar plugins, change the ``debian/control`` file to express a
3309+#. For Breezy plugins, change the ``debian/control`` file to express a
3310 dependency on the correct version of ``bzr``.
3311
3312 For bzrtools this is typically::
3313
3314=== modified file 'doc/developers/principles.txt'
3315--- doc/developers/principles.txt 2009-12-14 04:58:08 +0000
3316+++ doc/developers/principles.txt 2017-11-11 18:32:23 +0000
3317@@ -1,8 +1,8 @@
3318 ========================
3319-Bazaar Design Principles
3320+Breezy Design Principles
3321 ========================
3322
3323-We have learned or adopted a few general principles for code in Bazaar.
3324+We have learned or adopted a few general principles for code in Breezy.
3325 Generally we will try to follow them in future, either for consistency or
3326 because they've been proven to work well, or both.
3327
3328@@ -10,7 +10,7 @@
3329 or modify them as we learn more, or we might be diverging for them for no
3330 very good reason but just because of bugs. If in doubt, ask.
3331
3332-See also: `Bazaar Developer Document Catalog <index.html>`_.
3333+See also: `Breezy Developer Document Catalog <index.html>`_.
3334
3335
3336 Testing
3337@@ -36,7 +36,7 @@
3338 the whole object.
3339
3340 The format marker should be a string understandable by a user that names
3341-the format and gives the bzr release that introduced it. If the bzr
3342+the format and gives the Breezy release that introduced it. If the Breezy
3343 program doesn't understand that format, it can at least show that format
3344 marker to the user.
3345
3346@@ -49,14 +49,14 @@
3347 those changes, or don't propagate them properly.
3348
3349 We clearly distinguish internal files from user files. Files inside
3350-``.bzr/`` are only written to by bzr and we discourage users from editing
3351-them. Within bzr, code addressing the abstract interface of the Branch,
3352-BzrDir, etc shouldn't know where or how the internal files are stored. If
3353+``.bzr/`` are only written to by Breezy and we discourage users from editing
3354+them. Within Breezy, code addressing the abstract interface of the Branch,
3355+ControlDir, etc shouldn't know where or how the internal files are stored. If
3356 anything else is written in there, it won't be propagated when pushing or
3357 pulling, and won't be converted when upgrading. (This is not quite true
3358 though; there is a ``branch.conf``.)
3359
3360 User files within the tree, by contrast, we always store and return
3361-verbatim. It's OK for Bazaar to read and act on these files (as we do
3362-with ``.bzrignore``), and to update them (as ``bzr ignore`` does), but
3363+verbatim. It's OK for Breezy to read and act on these files (as we do
3364+with ``.bzrignore``), and to update them (as ``brz ignore`` does), but
3365 they remain clearly user files and can be directly edited.
3366
3367=== modified file 'doc/developers/profiling.txt'
3368--- doc/developers/profiling.txt 2009-12-02 20:34:07 +0000
3369+++ doc/developers/profiling.txt 2017-11-11 18:32:23 +0000
3370@@ -8,7 +8,7 @@
3371 information. In the simpliest case, the ``--lsprof`` option can be used as
3372 shown below::
3373
3374- bzr --lsprof ...
3375+ brz --lsprof ...
3376
3377 This will dump the profiling information to stdout before exiting.
3378 Alternatively, the ``--lsprof-file`` option can be used to specify a filename
3379@@ -28,10 +28,10 @@
3380 in combination with KCacheGrind to visualize what the ``status`` command
3381 is doing::
3382
3383- bzr --lsprof-file callgrind.out.st001 status
3384+ brz --lsprof-file callgrind.out.st001 status
3385 kcachegrind callgrind.out.st001 &
3386
3387-.. Note:: bzr also has a ``--profile`` option that uses the hotshot profiler
3388+.. Note:: brz also has a ``--profile`` option that uses the hotshot profiler
3389 instead of the lsprof profiler. The hotshot profiler can be useful
3390 though the lsprof one is generally recommended. See
3391 http://docs.python.org/lib/node795.html.
3392@@ -49,7 +49,7 @@
3393 identifying unnecessary lock traffic. This is activated by the ``-Dlock``
3394 global option.
3395
3396-This writes messages into ``~/.bzr.log``.
3397+This writes messages into ``~/.brz.log``.
3398 At present this only logs actions relating to the on-disk lockdir. It
3399 doesn't describe actions on in-memory lock counters, or OS locks (which
3400 are used for dirstate.)
3401
3402=== added directory 'doc/developers/proposals'
3403=== modified file 'doc/developers/releasing.txt'
3404--- doc/developers/releasing.txt 2017-06-06 01:10:48 +0000
3405+++ doc/developers/releasing.txt 2017-11-11 18:32:23 +0000
3406@@ -114,9 +114,9 @@
3407
3408 To start a new series cycle:
3409
3410-#. Create a new series ``x.y`` at <https://launchpad.net/bzr/+addseries>.
3411+#. Create a new series ``x.y`` at <https://launchpad.net/brz/+addseries>.
3412
3413-#. Add milestones at <https://launchpad.net/bzr/x.y/+addmilestone> to that
3414+#. Add milestones at <https://launchpad.net/brz/x.y/+addmilestone> to that
3415 series for the beta releases and the stable series mentioning their
3416 expected dates. Only the milestone associated to the next release in
3417 this series should be left active to avoid clutter when targeting bugs.
3418@@ -189,8 +189,8 @@
3419 #. Update the "What's New" documents in ``doc/en/whats-new``.
3420
3421 #. Make sure a milestone exists for your release and that it is active,
3422- <https://launchpad.net/bzr/x.y> lists the existing milestones,
3423- <https://launchpad.net/bzr/x.y/x.y.z/+edit> allows you to toggle the
3424+ <https://launchpad.net/brz/x.y> lists the existing milestones,
3425+ <https://launchpad.net/brz/x.y/x.y.z/+edit> allows you to toggle the
3426 active flag.
3427
3428 #. Commit this and send it to PQM.
3429@@ -205,7 +205,7 @@
3430 #. Check that there is a milestone for the release you're doing. If there
3431 is no milestone it indicates a process problem - make the milestone but
3432 also mail the list to raise this issue in our process. Milestones are
3433- found at <https://launchpad.net/bzr/+milestone/x.y.z>.
3434+ found at <https://launchpad.net/brz/+milestone/x.y.z>.
3435
3436 #. Merge into your branch all previous stable series fixes that haven't been
3437 merged yet. For example, if you're releasing 2.6.x, make sure the fixes
3438@@ -421,7 +421,7 @@
3439 Publishing the source tarball
3440 -----------------------------
3441
3442-#. Go to the relevant <https://launchpad.net/bzr/x.y> series page in Launchpad.
3443+#. Go to the relevant <https://launchpad.net/brz/x.y> series page in Launchpad.
3444
3445 #. Create a release of the milestone, and upload the source tarball and
3446 the GPG signature. Or, if you prefer, use the
3447@@ -497,7 +497,7 @@
3448 brz push lp:~brz-core/brz/brz-translations-export-x.y
3449
3450 #. On the translations series synchronization settings page
3451- <https://translations.launchpad.net/bzr/x.y/+translations-settings>
3452+ <https://translations.launchpad.net/brz/x.y/+translations-settings>
3453 turn on ``Import template files`` then for exports click ``Choose a
3454 target branch`` and point it at the branch you just pushed.
3455
3456@@ -541,7 +541,7 @@
3457 we have a releasable product. The next step is to make it generally
3458 available to the world.
3459
3460-#. Go to the release web page at <https://launchpad.net/bzr/x.y/x.y.z>
3461+#. Go to the release web page at <https://launchpad.net/brz/x.y/x.y.z>
3462
3463 #. Announce on the Breezy website.
3464
3465@@ -595,15 +595,15 @@
3466 feedback.
3467
3468 Breezy is now available for download from
3469- https://launchpad.net/bzr/x.y/x.y.z/ as a source tarball; packages
3470+ https://launchpad.net/brz/x.y/x.y.z/ as a source tarball; packages
3471 for various systems will be available soon.
3472
3473 <<release notes from this release back to the last major release>>
3474
3475 Feel free to tweak this to your taste.
3476
3477-#. Make an announcement through <https://launchpad.net/bzr/+announce>
3478- mentioning the milestone URL <https://launchpad.net/bzr/+milestone/x.y.z>
3479+#. Make an announcement through <https://launchpad.net/brz/+announce>
3480+ mentioning the milestone URL <https://launchpad.net/brz/+milestone/x.y.z>
3481 so people get an easy access to details.
3482
3483 #. Announce on https://freecode.com/projects/bazaar-vcs
3484@@ -627,8 +627,8 @@
3485 can still access the releases notes via the ``Release Notes`` URL in
3486 the ``Links`` box in the upper right area of the page. When doing the
3487 first stable release in a series, delete the ``Unstable installers``
3488- <https://launchpad.net/bzr/x.y/x.ybn> and ``Unstable source tarball``
3489- <http://launchpad.net/bzr/x.y/x.ybn/+download/brz-x.ybn.tar.gz>
3490+ <https://launchpad.net/brz/x.y/x.ybn> and ``Unstable source tarball``
3491+ <http://launchpad.net/brz/x.y/x.ybn/+download/brz-x.ybn.tar.gz>
3492 links. Conversely, when creating the first beta in a development
3493 series, create these links again. Check all links when doing other
3494 kinds of release.
3495
3496=== modified file 'doc/developers/repository-stream.txt'
3497--- doc/developers/repository-stream.txt 2009-12-02 20:34:07 +0000
3498+++ doc/developers/repository-stream.txt 2017-11-11 18:32:23 +0000
3499@@ -9,7 +9,7 @@
3500
3501 This document describes the proposed programming interface for streaming
3502 data from and into repositories. This programming interface should allow
3503-a single interface for pulling data from and inserting data into a Bazaar
3504+a single interface for pulling data from and inserting data into a Breezy
3505 repository.
3506
3507 .. contents::
3508
3509=== modified file 'doc/developers/repository.txt'
3510--- doc/developers/repository.txt 2010-11-12 14:28:36 +0000
3511+++ doc/developers/repository.txt 2017-11-11 18:32:23 +0000
3512@@ -8,7 +8,7 @@
3513 :Date: 2007-07-08
3514
3515 This document describes the services repositories offer and need to offer
3516-within bzrlib.
3517+within breezy.
3518
3519
3520 .. contents::
3521@@ -24,7 +24,7 @@
3522 Terminology
3523 ===========
3524
3525-A **repository** is a store of historical data for bzr.
3526+A **repository** is a store of historical data for Breezy.
3527
3528
3529 Command Requirements
3530@@ -230,7 +230,7 @@
3531 ^^^^^^^^^^^^^
3532
3533 We could discard the per-knit .kndx by writing a new index at the end of
3534-every bzr transaction indexing the new data introduced by the bzr
3535+every Breezy transaction indexing the new data introduced by the Breezy
3536 operation. e.g. at the end of fetch. This can be based on the new
3537 ``GraphIndex`` index type.
3538
3539
3540=== modified file 'doc/developers/revision-properties.txt'
3541--- doc/developers/revision-properties.txt 2012-02-16 16:42:43 +0000
3542+++ doc/developers/revision-properties.txt 2017-11-11 18:32:23 +0000
3543@@ -26,7 +26,7 @@
3544 ---------------------
3545
3546 At the moment, three standardized revision properties are recognized and used
3547-by bzrlib:
3548+by breezy:
3549
3550 * ``authors`` - Authors of the change. This value is a "\\n" separated set
3551 of values in the same format as the committer-id. This property can be
3552@@ -40,7 +40,7 @@
3553 The value is set automatically in ``MutableTree.commit``.
3554 * ``bugs`` - A list of bug URLs and their statuses. The list is separated
3555 by the new-line character (\\n) and each entry is in format
3556- '<URL> <status>'. Currently, bzrlib uses only status 'fixed'. See
3557+ '<URL> <status>'. Currently, breezy uses only status 'fixed'. See
3558 `Bug Trackers`_ for more details about using this feature.
3559
3560 .. _Bug Trackers: ../en/user-guide/index.html#bug-trackers
3561
3562=== modified file 'doc/developers/specifications.txt'
3563--- doc/developers/specifications.txt 2010-07-07 11:21:19 +0000
3564+++ doc/developers/specifications.txt 2017-11-11 18:32:23 +0000
3565@@ -21,13 +21,14 @@
3566 case-insensitive-file-systems
3567 development-repo
3568 packrepo
3569+ feature-flags
3570
3571
3572 * `Revision Properties <revision-properties.html>`_ |--| An application
3573 can set arbitrary per-revision key/value pairs to store app-specific
3574 data.
3575
3576-* `API versioning <api-versioning.html>`_ |--| bzrlib API versioning.
3577+* `API versioning <api-versioning.html>`_ |--| breezy API versioning.
3578
3579 * `Apport error reporting <apport.html>`_ |--| Capture data to report
3580 bugs.
3581@@ -43,7 +44,7 @@
3582 * `Groupcompress <groupcompress-design.html>`_ |--| Notes on the compression
3583 technology used in CHK repositories.
3584
3585-* `Indices <indices.html>`_ |--| The index facilities available within bzrlib.
3586+* `Indices <indices.html>`_ |--| The index facilities available within breezy.
3587
3588 * `Inventories <inventory.html>`_ |--| Tree shape abstraction.
3589
3590@@ -70,6 +71,10 @@
3591 * `Knit pack repositories <packrepo.html>`_ |--| KnitPack repositories
3592 (new in Bazaar 0.92).
3593
3594+* `Format feature flags <feature-flags.html>`_ |--| Allow extending
3595+ formats with optional features. (new in Bazaar 2.5).
3596+
3597+
3598
3599 .. |--| unicode:: U+2014
3600
3601
3602=== modified file 'doc/developers/transports.txt'
3603--- doc/developers/transports.txt 2010-11-12 22:08:18 +0000
3604+++ doc/developers/transports.txt 2017-11-11 18:32:23 +0000
3605@@ -1,8 +1,8 @@
3606 ####################################
3607-Developer guide to bzrlib transports
3608+Developer guide to breezy transports
3609 ####################################
3610
3611-This guide describes the `Transport` classes that Bazaar uses for most
3612+This guide describes the `Transport` classes that Breezy uses for most
3613 local and remote file access. (Working tree files are the major
3614 exception (`bug 606249 <https://bugs.launchpad.net/bzr/+bug/606249>`).
3615
3616@@ -23,17 +23,17 @@
3617
3618 self.requireFeature(tests.SymlinkFeature)
3619
3620-Bazaar versions symlinks as objects in their own right, whose content is
3621-the path they point to. bzr doesn't care whether a versioned
3622+Breezy versions symlinks as objects in their own right, whose content is
3623+the path they point to. Breezy doesn't care whether a versioned
3624 symlink is absolute or relative; or whether it points inside or outside
3625 the working tree; or whether its referent exists or not. In Unix the
3626-target of a symlink is a byte string; bzr treats this as a Unicode string
3627+target of a symlink is a byte string; Breezy treats this as a Unicode string
3628 in the filesystem encoding (`osutils._fs_enc`).
3629
3630-So when we say ``bzr add symlink``, this should always add the symlink to
3631+So when we say ``brz add symlink``, this should always add the symlink to
3632 its containing working tree, and never dereference the symlink.
3633
3634-However, ``bzr add symlink/file`` shouldn't add ``file`` as a child of
3635+However, ``brz add symlink/file`` shouldn't add ``file`` as a child of
3636 ``symlink``. (Symlinks don't have files underneath them: they may point to
3637 a directory which contains children, but if the symlink was pointed
3638 somewhere else those children would be unaffected.) This could either add
3639@@ -41,7 +41,7 @@
3640
3641 One interesting case for this is ::
3642
3643- bzr add ~/dev/bug123/a.c
3644+ brz add ~/dev/bug123/a.c
3645
3646 where ``~/dev`` is actually a symlink to ``/srv/dev/joe/``. In this case
3647 clearly the user does want us to follow the symlink to open the tree.
3648@@ -54,7 +54,7 @@
3649 Useful functions
3650 ----------------
3651
3652-`bzrlib.osutils.dereference_path` does the commonly useful operation of
3653+`breezy.osutils.dereference_path` does the commonly useful operation of
3654 resolving the directory part of a path, but leaving the filename
3655 untouched. In other words ::
3656
3657@@ -90,7 +90,7 @@
3658
3659 On local, SFTP and bzr+ssh transports, we can directly see symlinks as
3660 symlinks. Over HTTP (and FTP?) they're expanded by the server and we
3661-cannot detect them. This can cause problems when bzr follows relative
3662+cannot detect them. This can cause problems when Breezy follows relative
3663 paths because typically we will join the paths, and we may do this
3664 inconsistently with how the server, which can see the symlinks, would do.
3665
3666@@ -98,9 +98,9 @@
3667 Symlinks and ChrootTransports
3668 -----------------------------
3669
3670-bzr has an internal concept of a `ChrootTransport` that locks access into
3671+Breezy has an internal concept of a `ChrootTransport` that locks access into
3672 a particular directory. Symlinks should not break out of a chroot jail
3673-which implies they should be expanded and checked within bzrlib.
3674+which implies they should be expanded and checked within breezy.
3675 (At least as long as the transport lets us see the symlink; otherwise it
3676 may not be possible.)
3677
3678
3679=== modified file 'doc/developers/ui.txt'
3680--- doc/developers/ui.txt 2010-09-14 06:46:18 +0000
3681+++ doc/developers/ui.txt 2017-11-11 18:32:23 +0000
3682@@ -8,7 +8,7 @@
3683 Processing Command Lines
3684 ------------------------
3685
3686-bzrlib has a standard framework for parsing command lines and calling
3687+breezy has a standard framework for parsing command lines and calling
3688 processing routines associated with various commands. See builtins.py
3689 for numerous examples.
3690
3691@@ -19,7 +19,7 @@
3692 There are some common requirements in the library: some parameters need to be
3693 unicode safe, some need byte strings, and so on. At the moment we have
3694 only codified one specific pattern: Parameters that need to be unicode
3695-should be checked via ``bzrlib.osutils.safe_unicode``. This will coerce the
3696+should be checked via ``breezy.osutils.safe_unicode``. This will coerce the
3697 input into unicode in a consistent fashion, allowing trivial strings to be
3698 used for programmer convenience, but not performing unpredictably in the
3699 presence of different locales.
3700@@ -28,8 +28,8 @@
3701 ============
3702
3703 There are some operations, such as uncommitting, or breaking a lock, where
3704-bzr may want to get confirmation from the user before proceeding.
3705-However in some circumstances bzr should just go ahead without asking: if
3706+Breezy may want to get confirmation from the user before proceeding.
3707+However in some circumstances Breezy should just go ahead without asking: if
3708 it's being used from a noninteractive program, or if the user's asked to
3709 never be asked for this particular confirmation or for any confirmations
3710 at all.
3711@@ -45,13 +45,13 @@
3712 reasons be done elsewhere, they need not perfectly correspond to the place
3713 they're used, and they should stay stable even when the code moves.)
3714
3715-``bzrlib.builtins.uncommit``
3716+``breezy.builtins.uncommit``
3717 Before the ``uncommit`` command actually changes the branch.
3718
3719-``bzrlib.lockdir.break``
3720+``breezy.lockdir.break``
3721 Before breaking a lock.
3722
3723-``bzrlib.msgeditor.unchanged``
3724+``breezy.msgeditor.unchanged``
3725 Proceed even though the user made no changes to the template message.
3726
3727 Interactive confirmations can be overridden by using a
3728@@ -65,7 +65,7 @@
3729 (The strategy described here is what we want to get to, but it's not
3730 consistently followed in the code at the moment.)
3731
3732-bzrlib is intended to be a generically reusable library. It shouldn't
3733+breezy is intended to be a generically reusable library. It shouldn't
3734 write messages to stdout or stderr, because some programs that use it
3735 might want to display that information through a GUI or some other
3736 mechanism.
3737@@ -85,7 +85,7 @@
3738
3739 2. Unstructured log/debug messages, mostly for the benefit of the
3740 developers or users trying to debug problems. This should always
3741- be sent through ``bzrlib.trace`` and Python ``logging``, so that
3742+ be sent through ``breezy.trace`` and Python ``logging``, so that
3743 it can be redirected by the client.
3744
3745 The distinction between the two is a bit subjective, but in general if
3746@@ -99,7 +99,7 @@
3747 Progress and Activity Indications
3748 ---------------------------------
3749
3750-bzrlib has a way for code to display to the user that stuff is happening
3751+breezy has a way for code to display to the user that stuff is happening
3752 during a long operation. There are two particular types: *activity* which
3753 means that IO is happening on a Transport, and *progress* which means that
3754 higher-level application work is occurring. Both are drawn together by
3755@@ -111,7 +111,7 @@
3756 Progress uses a model/view pattern: application code acts on a
3757 `ProgressTask` object, which notifies the UI when it needs to be
3758 displayed. Progress tasks form a stack. To create a new progress task on
3759-top of the stack, call `bzrlib.ui.ui_factory.nested_progress_bar()`, then
3760+top of the stack, call `breezy.ui.ui_factory.nested_progress_bar()`, then
3761 call `update()` on the returned ProgressTask. It can be updated with just
3762 a text description, with a numeric count, or with a numeric count and
3763 expected total count. If an expected total count is provided the view
3764@@ -157,8 +157,8 @@
3765 Displaying help
3766 ===============
3767
3768-Bazaar has online help for various topics through ``bzr help COMMAND`` or
3769-equivalently ``bzr command -h``. We also have help on command options,
3770+Breezy has online help for various topics through ``brz help COMMAND`` or
3771+equivalently ``brz command -h``. We also have help on command options,
3772 and on other help topics. (See ``help_topics.py``.)
3773
3774 As for python docstrings, the first paragraph should be a single-sentence
3775@@ -190,7 +190,7 @@
3776 4. An internal error occurred (one that shows a traceback.)
3777
3778 Errors are handled through Python exceptions. Exceptions should be defined
3779-inside bzrlib.errors, so that we can see the whole tree at a glance.
3780+inside breezy.errors, so that we can see the whole tree at a glance.
3781
3782 We broadly classify errors as either being either internal or not,
3783 depending on whether ``internal_error`` is set or not. If we think it's our
3784@@ -208,7 +208,7 @@
3785 either there's a bug in bzr, or something complicated has gone wrong in
3786 the environment that means one internal file was deleted.
3787
3788-Many errors are defined in ``bzrlib/errors.py`` but it's OK for new errors
3789+Many errors are defined in ``breezy/errors.py`` but it's OK for new errors
3790 to be added near the place where they are used.
3791
3792 Exceptions are formatted for the user by conversion to a string
3793
3794=== modified file 'doc/developers/win32_build_setup.txt'
3795--- doc/developers/win32_build_setup.txt 2010-11-12 22:36:19 +0000
3796+++ doc/developers/win32_build_setup.txt 2017-11-11 18:32:23 +0000
3797@@ -22,7 +22,7 @@
3798 1) Download cygwin's setup.exe from http://www.cygwin.com
3799 At present the current version is 1.5.25-15. This is used primarily to
3800 install the build scripts and gcc-mingw. Note that we explicitly *don't*
3801- install cygwin's python or bzr package. As we are only interested in
3802+ install cygwin's python or Breezy package. As we are only interested in
3803 running the native version of bzr. For information on running the cygwin
3804 port of bzr, look elsewhere.
3805
3806
3807=== removed file 'doc/developers/xdg_config_spec.txt'
3808--- doc/developers/xdg_config_spec.txt 2014-02-14 10:29:49 +0000
3809+++ doc/developers/xdg_config_spec.txt 1970-01-01 00:00:00 +0000
3810@@ -1,24 +0,0 @@
3811-Transitioning Unix installs to the XDG Base Directory Specification
3812-===================================================================
3813-
3814-Currently, Bazaar stores its configuration files and plugins under the
3815-directory ~/.bazaar on unix installs. On Windows, this is %APPDATA%/Bazaar/2.0.
3816-With the XDG Base Directory specification
3817-(http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html), many
3818-Linux and Unix platforms have tried to centralize configuration files under a
3819-specific directory referred to as $XDG_CONFIG_HOME. This has a default value
3820-of ~/.config.
3821-
3822-Bazaar would like to be a good Unix citizen by using these standard locations
3823-for configuration files. As such, we should support that location, but not
3824-require it. Note that the following descriptions do not apply
3825-to Windows which should use their own native configuration
3826-locations. (On Windows, we currently do this by working under %APPDATA%.
3827-
3828-* If $XDG_CONFIG_HOME/bazaar exists, use the files there for configuration,
3829- noting in the log that we are doing so. This allows individuals who would
3830- like to use the XDG specification to do so.
3831-* Due to a lack of consensus on where plugins should live under the XDG Base
3832- Directory spec, continue to look for plugins in ~/.bazaar/plugins. To
3833- change this directory to something not under ~/.bazaar, use the environment
3834- variable $BZR_PLUGIN_PATH.
3835
3836=== modified file 'doc/en/release-notes/brz-3.0.txt'
3837--- doc/en/release-notes/brz-3.0.txt 2017-10-07 13:27:26 +0000
3838+++ doc/en/release-notes/brz-3.0.txt 2017-11-11 18:32:23 +0000
3839@@ -140,6 +140,9 @@
3840 Thanks to Augie Fackler for reporting.
3841 (Jelmer Vernooij, #1710979)
3842
3843+* Support automatic rename tracking into new directories.
3844+ (mnn, #373319)
3845+
3846 Documentation
3847 *************
3848

Subscribers

People subscribed via source and target branches