bzr 0.7

Bazaar

bzr 0.7

Released:2006-01-09

Changes

  • .bzrignore is excluded from exports, on the grounds that it’s a bzr internal-use file and may not be wanted. (Jamie Wilkinson)
  • The “bzr directories” command were removed in favor of the new –kind option to the “bzr inventory” command. To list all versioned directories, now use “bzr inventory –kind directory”. (Johan Rydberg)
  • Under Windows configuration directory is now %APPDATA%\bazaar\2.0 by default. (John Arbash Meinel)
  • The parent of Bzr configuration directory can be set by BZR_HOME environment variable. Now the path for it is searched in BZR_HOME, then in HOME. Under Windows the order is: BZR_HOME, APPDATA (usually points to C:\Documents and Settings\User Name\Application Data), HOME. (John Arbash Meinel)
  • Plugins with the same name in different directories in the bzr plugin path are no longer loaded: only the first successfully loaded one is used. (Robert Collins)
  • Use systems’ external ssh command to open connections if possible. This gives better integration with user settings such as ProxyCommand. (James Henstridge)
  • Permissions on files underneath .bzr/ are inherited from the .bzr directory. So for a shared repository, simply doing ‘chmod -R g+w .bzr/’ will mean that future file will be created with group write permissions.
  • configure.in and config.guess are no longer in the builtin default ignore list.
  • ‘.sw[nop]’ pattern ignored, to ignore vim swap files for nameless files. (John Arbash Meinel, Martin Pool)

Improvements

  • “bzr INIT dir” now initializes the specified directory, and creates it if it does not exist. (John Arbash Meinel)
  • New remerge command (Aaron Bentley)
  • Better zsh completion script. (Steve Borho)
  • ‘bzr diff’ now returns 1 when there are changes in the working tree. (Robert Collins)
  • ‘bzr push’ now exists and can push changes to a remote location. This uses the transport infrastructure, and can store the remote location in the ~/.bazaar/branches.conf configuration file. (Robert Collins)
  • Test directories are only kept if the test fails and the user requests that they be kept.
  • Tweaks to short log printing
  • Added branch nicks, new nick command, printing them in log output. (Aaron Bentley)
  • If $BZR_PDB is set, pop into the debugger when an uncaught exception occurs. (Martin Pool)
  • Accept ‘bzr resolved’ (an alias for ‘bzr resolve’), as this is the same as Subversion. (Martin Pool)
  • New ftp transport support (on ftplib), for ftp:// and aftp:// URLs. (Daniel Silverstone)
  • Commit editor temporary files now start with bzr_log., to allow text editors to match the file name and set up appropriate modes or settings. (Magnus Therning)
  • Improved performance when integrating changes from a remote weave. (Goffredo Baroncelli)
  • Sftp will attempt to cache the connection, so it is more likely that a connection will be reused, rather than requiring multiple password requests.
  • bzr revno now takes an optional argument indicating the branch whose revno should be printed. (Michael Ellerman)
  • bzr cat defaults to printing the last version of the file. (Matthieu Moy, #3632)
  • New global option ‘bzr –lsprof COMMAND’ runs bzr under the lsprof profiler. (Denys Duchier)
  • Faster commits by reading only the headers of affected weave files. (Denys Duchier)
  • ‘bzr add’ now takes a –dry-run parameter which shows you what would be added, but doesn’t actually add anything. (Michael Ellerman)
  • ‘bzr add’ now lists how many files were ignored per glob. add –verbose lists the specific files. (Aaron Bentley)
  • ‘bzr missing’ now supports displaying changes in diverged trees and can be limited to show what either end of the comparison is missing. (Aaron Bently, with a little prompting from Daniel Silverstone)

Bug Fixes

  • SFTP can walk up to the root path without index errors. (Robert Collins)
  • Fix bugs in running bzr with ‘python -O’. (Martin Pool)
  • Error when run with -OO
  • Fix bug in reporting http errors that don’t have an http error code. (Martin Pool)
  • Handle more cases of pipe errors in display commands
  • Change status to 3 for all errors
  • Files that are added and unlinked before committing are completely ignored by diff and status
  • Stores with some compressed texts and some uncompressed texts are now able to be used. (John A Meinel)
  • Fix for bzr pull failing sometimes under windows
  • Fix for sftp transport under windows when using interactive auth
  • Show files which are both renamed and modified as such in ‘bzr status’ output. (Daniel Silverstone, #4503)
  • Make annotate cope better with revisions committed without a valid email address. (Marien Zwart)
  • Fix representation of tab characters in commit messages. (Harald Meland)
  • List of plugin directories in BZR_PLUGIN_PATH environment variable is now parsed properly under Windows. (Alexander Belchenko)
  • Show number of revisions pushed/pulled/merged. (Robey Pointer)
  • Keep a cached copy of the basis inventory to speed up operations that need to refer to it. (Johan Rydberg, Martin Pool)
  • Fix bugs in bzr status display of non-ascii characters. (Martin Pool)
  • Remove Makefile.in from default ignore list. (Tollef Fog Heen, Martin Pool, #6413)
  • Fix failure in ‘bzr added’. (Nathan McCallum, Martin Pool)

Testing

  • Fix selftest asking for passwords when there are no SFTP keys. (Robey Pointer, Jelmer Vernooij)
  • Fix selftest run with ‘python -O’. (Martin Pool)
  • Fix HTTP tests under Windows. (John Arbash Meinel)
  • Make tests work even if HOME is not set (Aaron Bentley)
  • Updated build_tree to use fixed line-endings for tests which read the file cotents and compare. Make some tests use this to pass under Windows. (John Arbash Meinel)
  • Skip stat and symlink tests under Windows. (Alexander Belchenko)
  • Delay in selftest/testhashcash is now issued under win32 and Cygwin. (John Arbash Meinel)
  • Use terminal width to align verbose test output. (Martin Pool)
  • Blackbox tests are maintained within the bzrlib.tests.blackbox directory. If adding a new test script please add that to bzrlib.tests.blackbox.__init__. (Robert Collins)
  • Much better error message if one of the test suites can’t be imported. (Martin Pool)
  • Make check now runs the test suite twice - once with the default locale, and once with all locales forced to C, to expose bugs. This is not trivially done within python, so for now its only triggered by running Make check. Integrators and packagers who wish to check for full platform support should run ‘make check’ to test the source. (Robert Collins)
  • Tests can now run TestSkipped if they can’t execute for any reason. (Martin Pool) (NB: TestSkipped should only be raised for correctable reasons - see the wiki spec ImprovingBzrTestSuite).
  • Test sftp with relative, absolute-in-homedir and absolute-not-in-homedir paths for the transport tests. Introduce blackbox remote sftp tests that test the same permutations. (Robert Collins, Robey Pointer)
  • Transport implementation tests are now independent of the local file system, which allows tests for esoteric transports, and for features not available in the local file system. They also repeat for variations on the URL scheme that can introduce issues in the transport code, see bzrlib.transport.TransportTestProviderAdapter() for this. (Robert Collins).
  • TestCase.build_tree uses the transport interface to build trees, pass in a transport parameter to give it an existing connection. (Robert Collins).

Internals

  • WorkingTree.pull has been split across Branch and WorkingTree, to allow Branch only pulls. (Robert Collins)

  • commands.display_command now returns the result of the decorated function. (Robert Collins)

  • LocationConfig now has a set_user_option(key, value) call to save a setting in its matching location section (a new one is created if needed). (Robert Collins)

  • Branch has two new methods, get_push_location and set_push_location to respectively, get and set the push location. (Robert Collins)

  • commands.register_command now takes an optional flag to signal that the registrant is planning to decorate an existing command. When given multiple plugins registering a command is not an error, and the original command class (whether built in or a plugin based one) is returned to the caller. There is a new error ‘MustUseDecorated’ for signalling when a wrapping command should switch to the original version. (Robert Collins)

  • Some option parsing errors will raise ‘BzrOptionError’, allowing granular detection for decorating commands. (Robert Collins).

  • Branch.read_working_inventory has moved to WorkingTree.read_working_inventory. This necessitated changes to Branch.get_root_id, and a move of Branch.set_inventory to WorkingTree as well. To make it clear that a WorkingTree cannot always be obtained Branch.working_tree() will raise errors.NoWorkingTree if one cannot be obtained. (Robert Collins)

  • All pending merges operations from Branch are now on WorkingTree. (Robert Collins)

  • The follow operations from Branch have moved to WorkingTree:

    add()
    commit()
    move()
    rename_one()
    unknowns()
    

    (Robert Collins)

  • bzrlib.add.smart_add_branch is now smart_add_tree. (Robert Collins)

  • New “rio” serialization format, similar to rfc-822. (Martin Pool)

  • Rename selftests to bzrlib.tests.test_foo. (John A Meinel, Martin Pool)

  • bzrlib.plugin.all_plugins has been changed from an attribute to a query method. (Robert Collins)

  • New options to read only the table-of-contents of a weave. (Denys Duchier)

  • Raise NoSuchFile when someone tries to add a non-existant file. (Michael Ellerman)

  • Simplify handling of DivergedBranches in cmd_pull(). (Michael Ellerman)

  • Branch.controlfile* logic has moved to lockablefiles.LockableFiles, which is exposed as Branch().control_files. Also this has been altered with the controlfile pre/suffix replaced by simple method names like ‘get’ and ‘put’. (Aaron Bentley, Robert Collins).

  • Deprecated functions and methods can now be marked as such using the bzrlib.symbol_versioning module. Marked method have their docstring updated and will issue a DeprecationWarning using the warnings module when they are used. (Robert Collins)

  • bzrlib.osutils.safe_unicode now exists to provide parameter coercion for functions that need unicode strings. (Robert Collins)