~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to NEWS

  • Committer: wang
  • Date: 2006-10-29 13:41:32 UTC
  • mto: (2104.4.1 wang_65714)
  • mto: This revision was merged to the branch mainline in revision 2109.
  • Revision ID: wang@ubuntu-20061029134132-3d7f4216f20c4aef
Replace python's difflib by patiencediff because the worst case 
performance is cubic for difflib and people commiting large data 
files are often hurt by this. The worst case performance of patience is 
quadratic. Fix bug 65714.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
IN DEVELOPMENT
2
 
  
3
 
  IMPROVEMENTS:
4
 
 
5
 
  BUG FIXES:
6
 
 
7
 
  INTERNALS:
 
2
 
 
3
  IMPROVEMENTS:
 
4
 
 
5
  INTERNALS:
 
6
 
 
7
  BUG FIXES:
 
8
 
 
9
    * mv correctly handles paths that traverse symlinks. 
 
10
      (Aaron Bentley, #66964)
 
11
 
 
12
    * Pushing to a remote branch does not currently update the remote working
 
13
      tree. After a remote push, ``bzr status`` and ``bzr diff`` on the remote
 
14
      machine now show that the working tree is out of date.
 
15
      (Cheuksan Edward Wang #48136)
 
16
 
 
17
 
 
18
bzr 0.12rc1  2006-10-23
 
19
 
 
20
  IMPROVEMENTS:
 
21
 
 
22
    * ``bzr log`` now shows dotted-decimal revision numbers for all revisions,
 
23
      rather than just showing a decimal revision number for revisions on the
 
24
      mainline. These revision numbers are not yet accepted as input into bzr
 
25
      commands such as log, diff etc. (Robert Collins)
 
26
 
 
27
    * revisions can now be specified using dotted-decimal revision numbers.
 
28
      For instance, ``bzr diff -r 1.2.1..1.2.3. (Robert Collins)
 
29
 
 
30
    * ``bzr help commands`` output is now shorter (Aaron Bentley)
 
31
 
 
32
    * New connection: ``bzr+http://`` which supports tunnelling the smart
 
33
      protocol over an HTTP connection. If writing is enabled on the bzr
 
34
      server, then you can write over the http connection.
 
35
      (Andrew Bennetts)
 
36
 
 
37
    * ``bzr`` now uses lazy importing to reduce the startup time. This has
 
38
      a moderate effect on lots of actions, especially ones that have
 
39
      little to do. For example ``bzr rocks`` time is down to 116ms from
 
40
      283ms. (John Arbash Meinel)
 
41
 
 
42
    * New Registry class to provide name-to-object registry-like support,
 
43
      for example for schemes where plugins can register new classes to
 
44
      do certain tasks (e.g. log formatters). Also provides lazy registration
 
45
      to allow modules to be loaded on request. (John Arbash Meinel, Adeodato
 
46
      Simó)
 
47
 
 
48
  API INCOMPATABILITY:
 
49
  
 
50
    * LogFormatter subclasses show now expect the 'revno' parameter to 
 
51
      show() to be a string rather than an int. (Robert Collins)
 
52
 
 
53
  INTERNALS:
 
54
 
 
55
    * ``TestCase.run_bzr``, ``run_bzr_captured``, and ``run_bzr_subprocess``
 
56
      can take a ``working_dir='foo'`` parameter, which will change directory 
 
57
      for the command. (John Arbash Meinel)
 
58
 
 
59
    * ``bzrlib.lazy_regex.lazy_compile`` can be used to create a proxy
 
60
      around a regex, which defers compilation until first use. 
 
61
      (John Arbash Meinel)
 
62
 
 
63
    * ``TestCase.run_bzr_subprocess`` defaults to supplying the
 
64
      ``--no-plugins`` parameter to ensure test reproducability, and avoid
 
65
      problems with system-wide installed plugins. (John Arbash Meinel)
 
66
 
 
67
    * Unique tree root ids are now supported. Newly created trees still
 
68
      use the common root id for compatibility with bzr versions before 0.12.
 
69
      (Aaron Bentley)
 
70
 
 
71
    * ``WorkingTree.set_root_id(None)`` is now deprecated. Please
 
72
      pass in inventory.ROOT_ID if you want the default root id value.
 
73
      (Robert Collins, John Arbash Meinel)
 
74
 
 
75
    * New method ``WorkingTree.flush()`` which will write the current memory
 
76
      inventory out to disk. At the same time, read_working_inventory will
 
77
      no longer trash the current tree inventory if it has been modified within
 
78
      the current lock, and the tree will now ``flush()`` automatically on
 
79
      ``unlock()``. ``WorkingTree.set_root_id()`` has been updated to take
 
80
      advantage of this functionality. (Robert Collins, John Arbash Meinel)
 
81
 
 
82
    * ``bzrlib.tsort.merge_sorted`` now accepts ``generate_revnos``. This
 
83
      parameter will cause it to add another column to its output, which
 
84
      contains the dotted-decimal revno for each revision, as a tuple.
 
85
      (Robert Collins)
 
86
 
 
87
    * ``LogFormatter.show_merge`` is deprecated in favour of
 
88
      ``LogFormatter.show_merge_revno``. (Robert Collins)
 
89
 
 
90
  BUG FIXES:
 
91
 
 
92
    * Avoid circular imports by creating a deprecated function for
 
93
      ``bzrlib.tree.RevisionTree``. Callers should have been using
 
94
      ``bzrlib.revisontree.RevisionTree`` anyway. (John Arbash Meinel,
 
95
      #63360, #66349)
 
96
 
 
97
    * Don't use ``socket.MSG_WAITALL`` as it doesn't exist on all
 
98
      platforms. (Martin Pool, #66356)
 
99
 
 
100
    * Don't require ``Content-Type`` in range responses. Assume they are a
 
101
      single range if ``Content-Type`` does not exist.
 
102
      (John Arbash Meinel, #62473)
 
103
 
 
104
    * bzr branch/pull no longer complain about progress bar cleanup when
 
105
      interrupted during fetch.  (Aaron Bentley, #54000)
 
106
 
 
107
    * ``WorkingTree.set_parent_trees()`` uses the trees to directly write
 
108
      the basis inventory, rather than going through the repository. This
 
109
      allows us to have 1 inventory read, and 2 inventory writes when
 
110
      committing a new tree. (John Arbash Meinel)
 
111
 
 
112
    * When reverting, files that are not locally modified that do not exist
 
113
      in the target are deleted, not just unversioned (Aaron Bentley)
 
114
 
 
115
    * When trying to acquire a lock, don't fail immediately. Instead, try
 
116
      a few times (up to 1 hour) before timing out. Also, report why the
 
117
      lock is unavailable (John Arbash Meinel, #43521, #49556)
 
118
 
 
119
    * Leave HttpTransportBase daughter classes decides how they
 
120
      implement cloning. (Vincent Ladeuil, #61606)
 
121
 
 
122
   * diff3 does not indicate conflicts on clean merge. (Aaron Bentley)
 
123
 
 
124
  TESTING:
 
125
 
 
126
    * New test base class TestCaseWithMemoryTransport offers memory-only
 
127
      testing facilities: its not suitable for tests that need to mutate disk
 
128
      state, but most tests should not need that and should be converted to
 
129
      TestCaseWithMemoryTransport. (Robert Collins)
 
130
 
 
131
    * ``TestCase.make_branch_and_memory_tree`` now takes a format
 
132
      option to set the BzrDir, Repository and Branch formats of the
 
133
      created objects. (Robert Collins, John Arbash Meinel)
 
134
 
 
135
bzr 0.11  2006-10-02
 
136
 
 
137
    * Smart server transport test failures on windows fixed. (Lukáš Lalinský).
 
138
 
 
139
bzr 0.11rc2  2006-09-27
 
140
 
 
141
  BUG FIXES:
 
142
 
 
143
    * Test suite hangs on windows fixed. (Andrew Bennets, Alexander Belchenko).
 
144
    
 
145
    * Commit performance regression fixed. (Aaron Bentley, Robert Collins, John
 
146
      Arbash Meinel).
 
147
 
 
148
bzr 0.11rc1  2006-09-25
 
149
 
 
150
  IMPROVEMENTS:
 
151
 
 
152
    * Knit files now wait to create their contents until the first data is
 
153
      added. The old code used to create an empty .knit and a .kndx with just
 
154
      the header. However, this caused a lot of extra round trips over sftp.
 
155
      This can change the time for ``bzr push`` to create a new remote branch
 
156
      from 160s down to 100s. This also affects ``bzr commit`` performance when
 
157
      adding new files, ``bzr commit`` on a new kernel-like tree drops from 50s
 
158
      down to 40s (John Arbash Meinel, #44692)
 
159
 
 
160
    * When an entire subtree has been deleted, commit will now report that
 
161
      just the top of the subtree has been deleted, rather than reporting
 
162
      all the individual items. (Robert Collins)
 
163
 
 
164
    * Commit performs one less XML parse. (Robert Collins)
 
165
 
 
166
    * ``bzr checkout`` now operates on readonly branches as well
 
167
      as readwrite branches. This fixes bug #39542. (Robert Collins)
 
168
 
 
169
    * ``bzr bind`` no longer synchronises history with the master branch.
 
170
      Binding should be followed by an update or push to synchronise the 
 
171
      two branches. This is closely related to the fix for bug #39542.
 
172
      (Robert Collins)
 
173
 
 
174
    * ``bzrlib.lazy_import.lazy_import`` function to create on-demand 
 
175
      objects.  This allows all imports to stay at the global scope, but
 
176
      modules will not actually be imported if they are not used.
 
177
      (John Arbash Meinel)
 
178
 
 
179
    * Support bzr:// and bzr+ssh:// urls to work with the new RPC-based
 
180
      transport which will be used with the upcoming high-performance smart
 
181
      server. The new command ``bzr serve`` will invoke bzr in server mode,
 
182
      which processes these requests. (Andrew Bennetts, Robert Collins, Martin
 
183
      Pool)
 
184
 
 
185
    * New command ``bzr version-info`` which can be used to get a summary
 
186
      of the current state of the tree. This is especially useful as part
 
187
      of a build commands. See ``doc/version_info.txt`` for more information 
 
188
      (John Arbash Meinel)
 
189
 
 
190
  BUG FIXES:
 
191
 
 
192
    * 'bzr inventory [FILE...]' allows restricting the file list to a
 
193
      specific set of files. (John Arbash Meinel, #3631)
 
194
 
 
195
    * Don't abort when annotating empty files (John Arbash Meinel, #56814)
 
196
 
 
197
    * Add ``Stanza.to_unicode()`` which can be passed to another Stanza
 
198
      when nesting stanzas. Also, add ``read_stanza_unicode`` to handle when
 
199
      reading a nested Stanza. (John Arbash Meinel)
 
200
 
 
201
    * Transform._set_mode() needs to stat the right file. 
 
202
      (John Arbash Meinel, #56549)
 
203
 
 
204
    * Raise WeaveFormatError rather than StopIteration when trying to read
 
205
      an empty Weave file. (John Arbash Meinel, #46871)
 
206
 
 
207
    * Don't access e.code for generic URLErrors, only HTTPErrors have .code.
 
208
      (Vincent Ladeuil, #59835)
 
209
 
 
210
    * Handle boundary="" lines properly to allow access through a Squid proxy.
 
211
      (John Arbash Meinel, #57723)
 
212
 
 
213
    * revert now removes newly-added directories (Aaron Bentley, #54172)
 
214
 
 
215
    * ``bzr upgrade sftp://`` shouldn't fail to upgrade v6 branches if there 
 
216
      isn't a working tree. (David Allouche, #40679)
 
217
 
 
218
    * Give nicer error messages when a user supplies an invalid --revision
 
219
      parameter. (John Arbash Meinel, #55420)
 
220
 
 
221
    * Handle when LANG is not recognized by python. Emit a warning, but
 
222
      just revert to using 'ascii'. (John Arbash Meinel, #35392)
 
223
 
 
224
    * Don't use preexec_fn on win32, as it is not supported by subprocess.
 
225
      (John Arbash Meinel)
 
226
 
 
227
    * Skip specific tests when the dependencies aren't met. This includes
 
228
      some ``setup.py`` tests when ``python-dev`` is not available, and
 
229
      some tests that depend on paramiko. (John Arbash Meinel, Mattheiu Moy)
 
230
 
 
231
    * Fallback to Paramiko properly, if no ``ssh`` executable exists on
 
232
      the system. (Andrew Bennetts, John Arbash Meinel)
 
233
 
 
234
    * ``Branch.bind(other_branch)`` no longer takes a write lock on the
 
235
      other branch, and will not push or pull between the two branches.
 
236
      API users will need to perform a push or pull or update operation if they
 
237
      require branch synchronisation to take place. (Robert Collins, #47344)
 
238
 
 
239
    * When creating a tarball or zipfile export, export unicode names as utf-8
 
240
      paths. This may not work perfectly on all platforms, but has the best
 
241
      chance of working in the common case. (John Arbash Meinel, #56816)
 
242
 
 
243
    * When committing, only files that exist in working tree or basis tree
 
244
      may be specified (Aaron Bentley, #50793)
 
245
 
 
246
  PORTABILITY:
 
247
 
 
248
    * Fixes to run on Python 2.5 (Brian M. Carlson, Martin Pool, Marien Zwart)
 
249
 
 
250
  INTERNALS:
 
251
 
 
252
    * TestCaseInTempDir now creates a separate directory for HOME, rather
 
253
      than having HOME set to the same location as the working directory.
 
254
      (John Arbash Meinel)
 
255
 
 
256
    * run_bzr_subprocess() can take an optional 'env_changes={}' parameter,
 
257
      which will update os.environ inside the spawned child. It also can
 
258
      take a 'universal_newlines=True', which helps when checking the output
 
259
      of the command. (John Arbash Meinel)
 
260
 
 
261
    * Refactor SFTP vendors to allow easier re-use when ssh is used. 
 
262
      (Andrew Bennetts)
 
263
 
 
264
    * Transport.list_dir() and Transport.iter_files_recursive() should always
 
265
      return urlescaped paths. This is now tested (there were bugs in a few
 
266
      of the transports) (Andrew Bennetts, David Allouche, John Arbash Meinel)
 
267
 
 
268
    * New utility function symbol_versioning.deprecation_string. Returns the
 
269
      formatted string for a callable, deprecation format pair. (Robert Collins)
 
270
 
 
271
    * New TestCase helper applyDeprecated. This allows you to call a callable
 
272
      which is deprecated without it spewing to the screen, just by supplying
 
273
      the deprecation format string issued for it. (Robert Collins)
 
274
 
 
275
    * Transport.append and Transport.put have been deprecated in favor of
 
276
      .append_bytes, .append_file, .put_bytes, and .put_file. This removes the
 
277
      ambiguity in what type of object the functions take.
 
278
      Transport.non_atomic_put_{bytes,file} has also been added. Which works
 
279
      similarly to Transport.append() except for SFTP, it doesn't have a round
 
280
      trip when opening the file. Also, it provides functionality for creating
 
281
      a parent directory when trying to create a file, rather than raise
 
282
      NoSuchFile and forcing the caller to repeat their request.
 
283
      (John Arbash Meinel)
 
284
 
 
285
    * WorkingTree has a new api ``unversion`` which allow the unversioning of
 
286
      entries by their file id. (Robert Collins)
 
287
 
 
288
    * WorkingTree.pending_merges is deprecated.  Please use the get_parent_ids
 
289
      (introduced in 0.10) method instead. (Robert Collins)
 
290
 
 
291
    * WorkingTree has a new lock_tree_write method which locks the branch for
 
292
      read rather than write. This is appropriate for actions which only need
 
293
      the branch data for reference rather than mutation. A new decorator
 
294
      needs_tree_write_lock is provided in the workingtree module. Like the
 
295
      needs_read_lock and needs_write_lock decorators this allows static 
 
296
      declaration of the locking requirements of a function to ensure that
 
297
      a lock is taken out for casual scripts. (Robert Collins, #54107)
 
298
 
 
299
    * All WorkingTree methods which write to the tree, but not to the branch
 
300
      have been converted to use ``needs_tree_write_lock`` rather than 
 
301
      ``needs_write_lock``. Also converted is the revert, conflicts and tree
 
302
      transform modules. This provides a modest performance improvement on 
 
303
      metadir style trees, due to the reduce lock-acquisition, and a more
 
304
      significant performance improvement on lightweight checkouts from 
 
305
      remote branches, where trivial operations used to pay a significant 
 
306
      penalty. It also provides the basis for allowing readonly checkouts.
 
307
      (Robert Collins)
 
308
 
 
309
    * Special case importing the standard library 'copy' module. This shaves
 
310
      off 40ms of startup time, while retaining compatibility. See:
 
311
      ``bzrlib/inspect_for_copy.py`` for more details. (John Arbash Meinel)
 
312
 
 
313
    * WorkingTree has a new parent class MutableTree which represents the 
 
314
      specialisations of Tree which are able to be altered. (Robert Collins)
 
315
 
 
316
    * New methods mkdir and put_file_bytes_non_atomic on MutableTree that
 
317
      mutate the tree and its contents. (Robert Collins)
 
318
 
 
319
    * Transport behaviour at the root of the URL is now defined and tested.
 
320
      (Andrew Bennetts, Robert Collins)
 
321
 
 
322
  TESTING:
 
323
 
 
324
    * New test helper classs MemoryTree. This is typically accessed via
 
325
      ``self.make_branch_and_memory_tree()`` in test cases. (Robert Collins)
 
326
      
 
327
    * Add start_bzr_subprocess and stop_bzr_subprocess to allow test code to
 
328
      continue running concurrently with a subprocess of bzr. (Andrew Bennetts,
 
329
      Robert Collins)
 
330
 
 
331
    * Add a new method ``Transport.get_smart_client()``. This is provided to
 
332
      allow upgrades to a richer interface than the VFS one provided by
 
333
      Transport. (Andrew Bennetts, Martin Pool)
 
334
 
 
335
bzr 0.10  2006-08-29
 
336
  
 
337
  IMPROVEMENTS:
 
338
    * 'merge' now takes --uncommitted, to apply uncommitted changes from a
 
339
      tree.  (Aaron Bentley)
 
340
  
 
341
    * 'bzr add --file-ids-from' can be used to specify another path to use
 
342
      for creating file ids, rather than generating all new ones. Internally,
 
343
      the 'action' passed to smart_add_tree() can return file_ids that
 
344
      will be used, rather than having bzrlib generate new ones.
 
345
      (John Arbash Meinel, #55781)
 
346
 
 
347
    * ``bzr selftest --benchmark`` now allows a ``--cache-dir`` parameter.
 
348
      This will cache some of the intermediate trees, and decrease the
 
349
      setup time for benchmark tests. (John Arbash Meinel)
 
350
 
 
351
    * Inverse forms are provided for all boolean options.  For example,
 
352
      --strict has --no-strict, --no-recurse has --recurse (Aaron Bentley)
 
353
 
 
354
    * Serialize out Inventories directly, rather than using ElementTree.
 
355
      Writing out a kernel sized inventory drops from 2s down to ~350ms.
 
356
      (Robert Collins, John Arbash Meinel)
 
357
 
 
358
  BUG FIXES:
 
359
 
 
360
    * Help diffutils 2.8.4 get along with binary tests (Marien Zwart: #57614)
 
361
 
 
362
    * Change LockDir so that if the lock directory doesn't exist when
 
363
      lock_write() is called, an attempt will be made to create it.
 
364
      (John Arbash Meinel, #56974)
 
365
 
 
366
    * ``bzr uncommit`` preserves pending merges. (John Arbash Meinel, #57660)
 
367
 
 
368
    * Active FTP transport now works as intended. (ghozzy, #56472)
 
369
 
 
370
    * Really fix mutter() so that it won't ever raise a UnicodeError.
 
371
      It means it is possible for ~/.bzr.log to contain non UTF-8 characters.
 
372
      But it is a debugging log, not a real user file.
 
373
      (John Arbash Meinel, #56947, #53880)
 
374
 
 
375
    * Change Command handle to allow Unicode command and options.
 
376
      At present we cannot register Unicode command names, so we will get
 
377
      BzrCommandError('unknown command'), or BzrCommandError('unknown option')
 
378
      But that is better than a UnicodeError + a traceback.
 
379
      (John Arbash Meinel, #57123)
 
380
 
 
381
    * Handle TZ=UTC properly when reading/writing revisions.
 
382
      (John Arbash Meinel, #55783, #56290)
 
383
 
 
384
    * Use GPG_TTY to allow gpg --cl to work with gpg-agent in a pipeline,
 
385
      (passing text to sign in on stdin). (John Arbash Meinel, #54468)
 
386
 
 
387
    * External diff does the right thing for binaries even in foreign 
 
388
      languages. (John Arbash Meinel, #56307)
 
389
 
 
390
    * Testament handles more cases when content is unicode. Specific bug was
 
391
      in handling of revision properties. (John Arbash Meinel, Holger Krekel,
 
392
      #54723)
 
393
 
 
394
    * The bzr selftest was failing on installed versions due to a bug in a new
 
395
      test helper. (John Arbash Meinel, Robert Collins, #58057)
 
396
 
 
397
  INTERNALS:
 
398
 
 
399
    * ``bzrlib.cache_utf8`` contains ``encode()`` and ``decode()`` functions
 
400
      which can be used to cache the conversion between utf8 and Unicode.
 
401
      Especially helpful for some of the knit annotation code, which has to
 
402
      convert revision ids to utf8 to annotate lines in storage.
 
403
      (John Arbash Meinel)
 
404
 
 
405
    * ``setup.py`` now searches the filesystem to find all packages which
 
406
      need to be installed. This should help make the life of packagers
 
407
      easier. (John Arbash Meinel)
8
408
 
9
409
bzr 0.9.0  2006-08-11
10
410
 
980
1380
    * Config options have moved from bzrlib.osutils to bzrlib.config.
981
1381
      Configuration is now done via the config.Config interface:
982
1382
      Depending on whether you have a Branch, a Location or no information
983
 
      available, construct a *Config, and use its signature_checking,
984
 
      username and user_email methods. (Robert Collins)
 
1383
      available, construct a ``*Config``, and use its ``signature_checking``,
 
1384
      ``username`` and ``user_email`` methods. (Robert Collins)
985
1385
 
986
1386
    * Plugins are now loaded under bzrlib.plugins, not bzrlib.plugin, and
987
1387
      they are made available for other plugins to use. You should not