Version: | 1.4 |
---|---|
Generated: | 2008-10-17 |
This manual is generated from Bazaar's online help. To use the online help system, try the following commands.
Introduction including a list of commonly used commands:
bzr helpList of topics and a summary of each:
bzr help topicsList of commands and a summary of each:
bzr help commandsMore information about a particular topic or command:
bzr help topic-or-command-name
The following web sites provide further information on Bazaar:
Home page: | http://www.bazaar-vcs.org/ |
---|---|
Official docs: | http://doc.bazaar-vcs.org/ |
Launchpad: | https://launchpad.net/bzr/ |
A branch consists of the state of a project, including all of its history. All branches have a repository associated (which is where the branch history is stored), but multiple branches may share the same repository (a shared repository). Branches can be copied and merged.
Related commands:
init Make a directory into a versioned branch. branch Create a new copy of a branch. merge Perform a three-way merge.
Checkouts are source trees that are connected to a branch, so that when you commit in the source tree, the commit goes into that branch. They allow you to use a simpler, more centralized workflow, ignoring some of Bazaar's decentralized features until you want them. Using checkouts with shared repositories is very similar to working with SVN or CVS, but doesn't have the same restrictions. And using checkouts still allows others working on the project to use whatever workflow they like.
A checkout is created with the bzr checkout command (see "help checkout"). You pass it a reference to another branch, and it will create a local copy for you that still contains a reference to the branch you created the checkout from (the master branch). Then if you make any commits they will be made on the other branch first. This creates an instant mirror of your work, or facilitates lockstep development, where each developer is working together, continuously integrating the changes of others.
However the checkout is still a first class branch in Bazaar terms, so that you have the full history locally. As you have a first class branch you can also commit locally if you want, for instance due to the temporary loss af a network connection. Use the --local option to commit to do this. All the local commits will then be made on the master branch the next time you do a non-local commit.
If you are using a checkout from a shared branch you will periodically want to pull in all the changes made by others. This is done using the "update" command. The changes need to be applied before any non-local commit, but Bazaar will tell you if there are any changes and suggest that you use this command when needed.
It is also possible to create a "lightweight" checkout by passing the --lightweight flag to checkout. A lightweight checkout is even closer to an SVN checkout in that it is not a first class branch, it mainly consists of the working tree. This means that any history operations must query the master branch, which could be slow if a network connection is involved. Also, as you don't have a local branch, then you cannot commit locally.
Lightweight checkouts work best when you have fast reliable access to the master branch. This means that if the master branch is on the same disk or LAN a lightweight checkout will be faster than a heavyweight one for any commands that modify the revision history (as only one copy of the branch needs to be updated). Heavyweight checkouts will generally be faster for any command that uses the history but does not change it, but if the master branch is on the same disk then there won't be a noticeable difference.
Another possible use for a checkout is to use it with a treeless repository containing your branches, where you maintain only one working tree by switching the master branch that the checkout points to when you want to work on a different branch.
Obviously to commit on a checkout you need to be able to write to the master branch. This means that the master branch must be accessible over a writeable protocol , such as sftp://, and that you have write permissions at the other end. Checkouts also work on the local file system, so that all that matters is file permissions.
You can change the master of a checkout by using the "bind" command (see "help bind"). This will change the location that the commits are sent to. The bind command can also be used to turn a branch into a heavy checkout. If you would like to convert your heavy checkout into a normal branch so that every commit is local, you can use the "unbind" command.
Related commands:
checkout Create a checkout. Pass --lightweight to get a lightweight checkout update Pull any changes in the master branch in to your checkout commit Make a commit that is sent to the master branch. If you have a heavy checkout then the --local option will commit to the checkout without sending the commit to the master bind Change the master branch that the commits in the checkout will be sent to unbind Turn a heavy checkout into a standalone branch so that any commits are only made locally
A criss-cross in the branch history can cause the default merge technique to emit more conflicts than would normally be expected.
In complex merge cases, bzr merge --lca or bzr merge --weave may give better results. You may wish to bzr revert the working tree and merge again. Alternatively, use bzr remerge on particular conflicted files.
Criss-crosses occur in a branch's history if two branches merge the same thing and then merge one another, or if two branches merge one another at the same time. They can be avoided by having each branch only merge from or into a designated central branch (a "star topology").
Criss-crosses cause problems because of the way merge works. Bazaar's default merge is a three-way merger; in order to merge OTHER into THIS, it must find a basis for comparison, BASE. Using BASE, it can determine whether differences between THIS and OTHER are due to one side adding lines, or from another side removing lines.
Criss-crosses mean there is no good choice for a base. Selecting the recent merge points could cause one side's changes to be silently discarded. Selecting older merge points (which Bazaar does) mean that extra conflicts are emitted.
The weave merge type is not affected by this problem because it uses line-origin detection instead of a basis revision to determine the cause of differences.
Repositories in Bazaar are where committed information is stored. There is a repository associated with every branch.
Repositories are a form of database. Bzr will usually maintain this for good performance automatically, but in some situations (e.g. when doing very many commits in a short time period) you may want to ask bzr to optimise the database indices. This can be done by the 'bzr pack' command.
By default just running 'bzr init' will create a repository within the new branch but it is possible to create a shared repository which allows multiple branches to share their information in the same location. When a new branch is created it will first look to see if there is a containing shared repository it can use.
When two branches of the same project share a repository, there is generally a large space saving. For some operations (e.g. branching within the repository) this translates in to a large time saving.
To create a shared repository use the init-repository command (or the alias init-repo). This command takes the location of the repository to create. This means that 'bzr init-repository repo' will create a directory named 'repo', which contains a shared repository. Any new branches that are created in this directory will then use it for storage.
It is a good idea to create a repository whenever you might create more than one branch of a project. This is true for both working areas where you are doing the development, and any server areas that you use for hosting projects. In the latter case, it is common to want branches without working trees. Since the files in the branch will not be edited directly there is no need to use up disk space for a working tree. To create a repository in which the branches will not have working trees pass the '--no-trees' option to 'init-repository'.
Related commands:
init-repository Create a shared repository. Use --no-trees to create one in which new branches won't get a working tree.
A standalone tree is a working tree with an associated repository. It is an independently usable branch, with no dependencies on any other. Creating a standalone tree (via bzr init) is the quickest way to put an existing project under version control.
Related Commands:
init Make a directory into a versioned branch.
A working tree is the contents of a branch placed on disk so that you can see the files and edit them. The working tree is where you make changes to a branch, and when you commit the current state of the working tree is the snapshot that is recorded in the commit.
When you push a branch to a remote system, a working tree will not be created. If one is already present the files will not be updated. The branch information will be updated and the working tree will be marked as out-of-date. Updating a working tree remotely is difficult, as there may be uncommitted changes or the update may cause content conflicts that are difficult to deal with remotely.
If you have a branch with no working tree you can use the 'checkout' command to create a working tree. If you run 'bzr checkout .' from the branch it will create the working tree. If the branch is updated remotely, you can update the working tree by running 'bzr update' in that directory.
If you have a branch with a working tree that you do not want the 'remove-tree' command will remove the tree if it is safe. This can be done to avoid the warning about the remote working tree not being updated when pushing to the branch. It can also be useful when working with a '--no-trees' repository (see 'bzr help repositories').
If you want to have a working tree on a remote machine that you push to you can either run 'bzr update' in the remote branch after each push, or use some other method to update the tree during the push. There is an 'rspush' plugin that will update the working tree using rsync as well as doing a push. There is also a 'push-and-update' plugin that automates running 'bzr update' via SSH after each push.
Useful commands:
checkout Create a working tree when a branch does not have one. remove-tree Removes the working tree from a branch when it is safe to do so. update When a working tree is out of sync with it's associated branch this will update the tree to match the branch.
Many different authentication policies can be described in the authentication.conf file but a particular user should need only a few definitions to cover his needs without having to specify a user and a password for every branch he uses.
The definitions found in this file are used to find the credentials to use for a given url. The same credentials can generally be used for as many branches as possible by grouping their declaration around the remote servers that need them. It's even possible to declare credentials that will be used by different servers.
The intent is to make this file as small as possible to minimize maintenance.
Once the relevant credentials are declared in this file you may use branch urls without embedding passwords (security hazard) or even users (enabling sharing of your urls with others).
Instead of using:
bzr branch ftp://joe:secret@host.com/path/to/my/branch
you simply use:
bzr branch ftp://host.com/path/to/my/branch
provided you have created the following authentication.conf file:
[myprojects] scheme=ftp host=host.com user=joe password=secret
There are two kinds of authentication used by the various schemes supported by bzr:
FTP and SFTP needs a (user, password) to authenticate against a host (SFTP can use ssh keys too, but we don't talk about that here as ssh agents provide a better solution).
HTTP and HTTPS needs a (user, realm, password) to authenticate against a host. But, by using .htaccess files, for example, it is possible to define several (user, realm, password) for a given host. So what is really needed is (user, password, host, path). The realm is not taken into account in the defitions, but will displayed if bzr prompts you for a password.
HTTP proxy can be handled as HTTP (or HTTPS) by explicitely specifying the appropriate port.
To take all schemes into account, the password will be deduced from a set of authentication definitions (scheme, host, port, path, user, password).
- scheme: can be empty (meaning the rest of the definition can be used for any scheme), SFTP and bzr+ssh should not be used here, ssh should be used instead since this is the real scheme regarding authentication,
- host: can be empty (to act as a default for any host),
- port can be empty (useful when an host provides several servers for the same scheme), only numerical values are allowed, this should be used only when the server uses a port different than the scheme standard port,
- path: can be empty (FTP or SFTP will never user it),
- user: can be empty (bzr will defaults to python's getpass.get_user()),
- password: can be empty if you prefer to always be prompted for your password.
Multiple definitions can be provided and, for a given URL, bzr will select a (user [, password]) based on the following rules :
- the first match wins,
- empty fields match everything,
- scheme matches even if decorators are used in the requested URL,
- host matches exactly or act as a domain if it starts with '.' (project.bzr.sf.net will match .bzr.sf.net but projectbzr.sf.net will not match bzr.sf.net).
- port matches if included in the requested URL (exact matches only)
- path matches if included in the requested URL (and by rule #2 above, empty paths will match any provided path).
The general rules for configuration files apply except for the variable policies.
Each section describes an authentication definition.
The section name is an arbitrary string, only the DEFAULT value is reserved and should appear as the last section.
Each section should define:
Each section could define:
All connections are done with the same user (the remote one for which the default bzr one is not appropriate) and the password is always prompted with some exceptions:
# Pet projects on hobby.net [hobby] host=r.hobby.net user=jim password=obvious1234 # Home server [home] scheme=https host=home.net user=joe password=1essobV10us [DEFAULT] # Our local user is barbaz, on all remote sites we're known as foobar user=foobar
In the shp.net (fictious) domain, each project has its own site:
[shpnet domain] # we use sftp, but ssh is the scheme used for authentication scheme=ssh # The leading '.' ensures that 'shp.net' alone doesn't match host=.shp.net user=joe password=precious
At company.com, the server hosting released and integration code is behind a proxy, the two servers use different authentication policies:
[reference code] scheme=https host=dev.company.com path=/dev user=user1 password=pass1 # development branches on dev server [dev] scheme=ssh # bzr+ssh and sftp are available here host=dev.company.com path=/dev/integration user=user2 password=pass2 # proxy [proxy] scheme=http host=proxy.company.com port=3128 user=proxyuser1 password=proxypass1
The following are not yet implemented but planned as parts of a work in progress:
The password_encoding and verify_certificates fields are recognized but ignored in the actual implementation.
When making a commit, metadata about bugs fixed by that change can be recorded by using the --fixes option. For each bug marked as fixed, an entry is included in the 'bugs' revision property stating '<url> <status>'. (The only status value currently supported is fixed.) Support for Launchpad's central bug tracker is built in. For other bug trackers, configuration is required in advance so that the correct URL can be recorded.
In addition to Launchpad, Bazaar directly supports the generation of URLs appropriate for Bugzilla and Trac. If your project uses a different bug tracker, it is easy to add support for it. If you use Bugzilla or Trac, then you only need to set a configuration variable which contains the base URL of the bug tracker. These options can go into bazaar.conf, branch.conf or into a branch-specific configuration section in locations.conf. You can set up these values for each of the projects you work on.
Note: As you provide a short name for each tracker, you can specify one or more bugs in one or more trackers at commit time if you wish.
If present, the location of the Bugzilla bug tracker referred to by <tracker_abbreviation>. This option can then be used together with bzr commit --fixes to mark bugs in that tracker as being fixed by that commit. For example:
bugzilla_squid_url = http://www.squid-cache.org/bugs
would allow bzr commit --fixes squid:1234 to mark Squid's bug 1234 as fixed.
If present, the location of the Trac instance referred to by <tracker_abbreviation>. This option can then be used together with bzr commit --fixes to mark bugs in that tracker as being fixed by that commit. For example:
trac_twisted_url = http://www.twistedmatrix.com/trac
would allow bzr commit --fixes twisted:1234 to mark Twisted's bug 1234 as fixed.
If present, the location of a generic bug tracker instance referred to by <tracker_abbreviation>. The location must contain an {id} placeholder, which will be replaced by a specific bug ID. This option can then be used together with bzr commit --fixes to mark bugs in that tracker as being fixed by that commit. For example:
bugtracker_python_url = http://bugs.python.org/issue{id}
would allow bzr commit --fixes python:1234 to mark bug 1234 in Python's Roundup bug tracker as fixed, or:
bugtracker_cpan_url = http://rt.cpan.org/Public/Bug/Display.html?id={id}
for CPAN's RT bug tracker.
While most configuration is handled by configuration files, some options which may be semi-permanent can also be controlled through the environment.
Override the email id used by Bazaar. Typical format:
"John Doe <jdoe@example.com>"
See also the email configuration value.
Override the progress display. Possible values are "none", "dots", "tty"
Control whether SIGQUIT behaves normally or invokes a breakin debugger.
Override the home directory used by Bazaar.
Select a different SSH implementation.
Path to the Bazaar executable to use when using the bzr+ssh protocol.
See also the bzr_remote_path configuration value.
Path to the editor Bazaar should use for commit messages, etc.
The path to the plugins directory that Bazaar should use.
The path where Bazaar should look for shell plugin external commands.
Configuration files are located in $HOME/.bazaar on Linux/Unix and C:\Documents and Settings\<username>\Application Data\Bazaar\2.0 on Windows. (You can check the location for your system by using bzr version.)
There are three primary configuration files in this location:
Each branch can also contain a configuration file that sets values specific to that branch. This file is found at .bzr/branch/branch.conf within the branch. This file is visible to all users of a branch, if you wish to override one of the values for a branch with a setting that is specific to you then you can do so in locations.conf.
An ini file has three types of contructs: section headers, section variables and comments.
A comment is any line that starts with a "#" (sometimes called a "hash mark", "pound sign" or "number sign"). Comment lines are ignored by Bazaar when parsing ini files.
A section header is a word enclosed in brackets that starts at the begining of a line. A typical section header looks like this:
[DEFAULT]
The only valid section header for bazaar.conf is [DEFAULT], which is case sensitive. The default section provides for setting variables which can be overridden with the branch config file.
For locations.conf, the variables from the section with the longest matching section header are used to the exclusion of other potentially valid section headers. A section header uses the path for the branch as the section header. Some examples include:
[http://mybranches.isp.com/~jdoe/branchdir] [/home/jdoe/branches/]
A section variable resides within a section. A section variable contains a variable name, an equals sign and a value. For example:
email = John Doe <jdoe@isp.com> check_signatures = require
Variables defined in a section affect the named directory or URL plus any locations they contain. Policies can be used to change how a variable value is interpreted for contained locations. Currently there are three policies available:
- none:
- the value is interpreted the same for contained locations. This is the default behaviour.
- norecurse:
- the value is only used for the exact location specified by the section name.
- appendpath:
- for contained locations, any additional path components are appended to the value.
Policies are specified by keys with names of the form "$var:policy". For example, to define the push location for a tree of branches, the following could be used:
[/top/location] push_location = sftp://example.com/location push_location:policy = appendpath
With this configuration, the push location for /top/location/branch1 would be sftp://example.com/location/branch1.
bazaar.conf only allows one section called [DEFAULT]. This default section contains the default configuration options for all branches. The default section can be overriden by providing a branch-specific section in locations.conf.
A typical bazaar.conf section often looks like the following:
[DEFAULT] email = John Doe <jdoe@isp.com> editor = /usr/bin/vim check_signatures = check-available create_signatures = when-required
locations.conf allows one to specify overriding settings for a specific branch. The format is almost identical to the default section in bazaar.conf with one significant change: The section header, instead of saying default, will be the path to a branch that you wish to override a value for. The '?' and '*' wildcards are supported:
[/home/jdoe/branches/nethack] email = Nethack Admin <nethack@nethack.com> [http://hypothetical.site.com/branches/devel-branch] create_signatures = always check_signatures = always [http://bazaar-vcs.org/bzr/*] check_signatures = require
authentication.conf allows one to specify credentials for remote servers. This can be used for all the supported transports and any part of bzr that requires authentication (smtp for example).
The syntax of the file obeys the same rules as the others except for the variable policies which don't apply.
For more information on the possible uses of the authentication configuration file see Authentication Settings.
The email address to use when committing a branch. Typically takes the form of:
email = Full Name <account@hostname.tld>
The path of the editor that you wish to use if bzr commit is run without a commit message. This setting is trumped by the environment variable BZR_EDITOR, and overrides the VISUAL and EDITOR environment variables.
Defines the behavior for signatures.
Defines the behaviour of signing revisions.
Only useful in locations.conf. Defines whether or not the configuration for this section applies to subdirectories:
(Default: "gpg"). Which program should be used to sign and check revisions. For example:
gpg_signing_command = /usr/bin/gnpg
(Default: "bzr"). The path to the command that should be used to run the smart server for bzr. This value may only be specified in locations.conf, because:
It is overridden by the BZR_REMOTE_PATH environment variable.
(Default: "localhost"). SMTP server to use when Bazaar needs to send email, eg. with merge-directive --mail-to, or the bzr-email plugin.
User and password to authenticate to the SMTP server. If smtp_username is set, and smtp_password is not, Bazaar will prompt for a password. These settings are only needed if the SMTP server requires authentication to send mail.
A mail client to use for sending merge requests. By default, bzr will try to use mapi on Windows. On other platforms, it will try xdg-email. If either of these fails, it will fall back to editor.
Supported values for specific clients:
evolution: | Use Evolution. |
---|---|
kmail: | Use KMail. |
mutt: | Use Mutt. |
thunderbird: | Use Mozilla Thunderbird or Icedove. For Thunderbird/Icedove 1.5, this works around some bugs that xdg-email doesn't handle. |
Supported generic values are:
default: | See above. |
---|---|
editor: | Use your editor to compose the merge request. This also uses your commit id, (see bzr whoami), smtp_server and (optionally) smtp_username and smtp_password. |
mapi: | Use your preferred e-mail client on Windows. |
xdg-email: | Use xdg-email to run your preferred mail program |
The branch you intend to submit your current work to. This is automatically set by bzr send, and is also used by the submit: revision spec. This should usually be set on a per-branch or per-location basis.
A publically-accessible version of this branch (implying that this version is not publically-accessible). Used (and set) by bzr send.
These options apply only to branches that use the dirstate-tags or later format. They are usually set in .bzr/branch/branch.conf automatically, but may be manually set in locations.conf or bazaar.conf.
If set to "True" then revisions can only be appended to the log, not removed. A branch with this setting enabled can only pull from another branch if the other branch's log is a longer version of its own. This is normally set by bzr init --append-revisions-only.
If present, the location of the default branch for pull or merge. This option is normally set by pull --remember or merge --remember.
If present, the location of the default branch for push. This option is normally set by push --remember.
The location that commits should go to when acting as a checkout. This option is normally set by bind.
If set to "True", the branch should act as a checkout, and push each commit to the bound_location. This option is normally set by bind/unbind.
Some operations, like merge, revert and pull, modify the contents of your working tree. These modifications are programmatically generated, and so they may conflict with the current state of your working tree. Many kinds of changes can be combined programmatically, but sometimes only a human can determine the right thing to do. When this happens Bazaar will inform you that there is a conflict and then ask you to resolve it. The command to tell Bazaar a conflict is resolved is resolve, but you must perform some action before you can do this.
Each type of conflict is explained below, and the action which must be done to resolve the conflict is outlined.
Typical message:
Text conflict in FILE
These are produced when a text merge cannot completely reconcile two sets of text changes. Bazaar will emit files for each version with the extensions THIS, OTHER, and BASE. THIS is the version of the file from the target tree, i.e. the tree that you are merging changes into. OTHER is the version that you are merging into the target. BASE is an older version that is used as a basis for comparison.
In the main copy of the file, Bazaar will include all the changes that it could reconcile, and any un-reconciled conflicts are surrounded by "herringbone" markers like <<<<<<<.
Say the initial text is "The project leader released it.", and THIS modifies it to "Martin Pool released it.", while OTHER modifies it to "The project leader released Bazaar." A conflict would look like this:
<<<<<<< TREE Martin Pool released it. ======= The project leader released Bazaar. >>>>>>> MERGE-SOURCE
The correct resolution would be "Martin Pool released Bazaar."
You can handle text conflicts either by editing the main copy of the file, or by invoking external tools on the THIS, OTHER and BASE versions. It's worth mentioning that resolving text conflicts rarely involves picking one set of changes over the other. More often, the two sets of changes must be intelligently combined.
If you edit the main copy, be sure to remove the herringbone markers. When you are done editing, the file should look like it never had a conflict, and be ready to commit.
When you have resolved text conflicts, just run "bzr resolve", and Bazaar will auto-detect which conflicts you have resolved.
Typical message:
Contents conflict in FILE
This conflict happens when there are conflicting changes in the target tree and the merge source, but the conflicted items are not text files. They may be binary files, or symlinks, or directories. It can even happen with files that are deleted on one side, and modified on the other.
Like text conflicts, Bazaar will emit THIS, OTHER and BASE files. (They may be regular files, symlinks or directories). But it will not include a "main copy" of the file with herringbone conflict markers. It will appear that the "main copy" has been renamed to THIS or OTHER.
To resolve this, use "bzr mv" to rename the file back to its normal name, and combine the changes manually. When you are satisfied, run "bzr resolve FILE". Bazaar cannot auto-detect when conflicts of this kind have been resolved.
Typical message:
Conflict adding file FILE. Moved existing file to FILE.moved.
Sometimes Bazaar will attempt to create a file using a pathname that has already been used. The existing file will be renamed to "FILE.moved". If you wish, you can rename either one of these files, or combine their contents. When you are satisfied, you can run "bzr resolve FILE" to mark the conflict as resolved.
Typical message:
Conflict because FILE is not versioned, but has versioned children.
Sometimes Bazaar will attempt to create a file whose parent directory is not versioned. This happens when the directory has been deleted in the target, but has a new child in the source, or vice versa. In this situation, Bazaar will version the parent directory as well. Resolving this issue depends very much on the particular scenario. You may wish to rename or delete either the file or the directory. When you are satisfied, you can run "bzr resolve FILE" to mark the conflict as resolved.
Typical message:
Conflict adding files to FILE. Created directory.
This happens when a file has been deleted in the target, but has new children in the source. This is similar to the "unversioned parent" conflict, except that the parent directory does not exist, instead of just being unversioned. In this situation, Bazaar will create the missing parent. Resolving this issue depends very much on the particular scenario. You may wish to rename or delete either the file or the directory. When you are satisfied, you can run "bzr resolve FILE" to mark the conflict as resolved.
Typical message:
Conflict: can't delete FILE because it is not empty. Not deleting.
This is the opposite of "missing parent". A directory is deleted in the source, but has new children in the target. Bazaar will retain the directory. Resolving this issue depends very much on the particular scenario. You may wish to rename or delete either the file or the directory. When you are satisfied, you can run "bzr resolve FILE" to mark the conflict as resolved.
Typical message:
Path conflict: PATH1 / PATH2
This happens when the source and target have each modified the name or parent directory of a file. Bazaar will use the path elements from the source. You can rename the file, and once you have, run "bzr resolve FILE" to mark the conflict as resolved.
Typical message:
Conflict moving FILE into DIRECTORY. Cancelled move.
This happens when the source and the target have each moved directories, so that, if the change could be applied, a directory would be contained by itself. For example:
$ bzr init $ bzr mkdir a $ bzr mkdir b $ bzr commit -m "BASE" $ bzr branch . ../other $ bzr mv a b $ bzr commit -m "THIS" $ bzr mv ../other/b ../other/a $ bzr commit ../other -m "OTHER" $ bzr merge ../other
In this situation, Bazaar will cancel the move, and leave "a" in "b". You can rename the directories if you like, and once you have, run "bzr resolve FILE" to mark the conflict as resolved.
Typical message:
Conflict: FILE.new is not a directory, but has files in it. Created directory.
This happens when one side has added files to a directory, and the othe side has changed the directory into a file or symlink. For example:
$ bzr init $ bzr mkdir a $ bzr commit -m "BASE" $ bzr branch . ../other $ rmdir a $ touch a $ bzr commit -m "THIS" $ bzr mkdir ../other/a/b $ bzr commit ../other -m "OTHER" $ bzr merge ../other
It is possible (though very rare) for Bazaar to raise a MalformedTransform exception. This means that Bazaar encountered a filesystem conflict that it was unable to resolve. This usually indicates a bug. Please let us know if you encounter this. Our bug tracker is at https://launchpad.net/bzr/+bugs
BZRPATH | Path where bzr is to look for shell plugin external commands. |
BZR_EMAIL | E-Mail address of the user. Overrides EMAIL. |
E-Mail address of the user. | |
BZR_EDITOR | Editor for editing commit messages. Overrides EDITOR. |
EDITOR | Editor for editing commit messages. |
BZR_PLUGIN_PATH | Paths where bzr should look for plugins. |
BZR_HOME | Directory holding .bazaar config dir. Overrides HOME. |
BZR_HOME (Win32) | Directory holding bazaar config dir. Overrides APPDATA and HOME. |
BZR_REMOTE_PATH | Full name of remote 'bzr' command (for bzr+ssh:// URLs). |
BZR_SSH | SSH client: paramiko (default), openssh, ssh, plink. |
BZR_LOG | Location of .bzr.log (use '/dev/null' to suppress log). |
BZR_LOG (Win32) | Location of .bzr.log (use 'NUL' to suppress log). |
On Linux: | ~/.bazaar/bazaar.conf |
---|---|
On Windows: | C:\Documents and Settings\username\Application Data\bazaar\2.0\bazaar.conf |
Contains the user's default configuration. The section [DEFAULT] is used to define general configuration that will be applied everywhere. The section [ALIASES] can be used to create command aliases for commonly used options.
A typical config file might look something like:
[DEFAULT] email=John Doe <jdoe@isp.com> [ALIASES] commit = commit --strict log10 = log --short -r -10..-1
These formats can be used for creating branches, working trees, and repositories.
pack-0.92: | (native) (default) New in 0.92: Pack-based format with data compatible with dirstate-tags format repositories. Interoperates with bzr repositories before 0.92 but cannot be read by bzr < 0.92. Previously called knitpack-experimental. For more information, see http://doc.bazaar- vcs.org/latest/developers/packrepo.html. |
---|---|
dirstate: | (native) New in 0.15: Fast local operations. Compatible with bzr 0.8 and above when accessed over the network. |
dirstate-tags: | (native) New in 0.15: Fast local operations and improved scaling for network operations. Additionally adds support for tags. Incompatible with bzr < 0.15. |
knit: | (native) Format using knits. Recommended for interoperation with bzr <= 0.14. |
rich-root: | (native) New in 1.0. Better handling of tree roots. Incompatible with bzr < 1.0 |
rich-root-pack: | (native) New in 1.0: Pack-based format with data compatible with rich-root format repositories. Incompatible with bzr < 1.0 |
Experimental formats are shown below.
development: | (native) Current development format. Can convert data to and from pack-0.92 (and anything compatible with pack-0.92) format repositories. Repositories in this format can only be read by bzr.dev. Please read http://doc.bazaar-vcs.org/latest/developers /development-repo.html before use. |
---|---|
development-subtree: | |
(native) Current development format, subtree variant. Can convert data to and from pack-0.92 (and anything compatible with pack-0.92) format repositories. Repositories in this format can only be read by bzr.dev. Please read http://doc.bazaar- vcs.org/latest/developers/development-repo.html before use. |
Deprecated formats are shown below.
metaweave: | (native) Transitional format in 0.8. Slower than knit. |
---|---|
weave: | (native) Pre-0.8 format. Slower than knit and does not support checkouts or shared repositories. |
These options may be used with any command, and may appear in front of any command. (e.g. "bzr --profile help").
--version | Print the version number. Must be supplied before the command. |
--no-aliases | Do not process command aliases when running this command. |
--builtin | Use the built-in version of a command, not the plugin version. This does not suppress other plugin effects. |
--no-plugins | Do not process any plugins. |
--profile | Profile execution using the hotshot profiler. |
--lsprof | Profile execution using the lsprof profiler. |
--lsprof-file | Profile execution using the lsprof profiler, and write the results to a specified file. If the filename ends with ".txt", text format will be used. If the filename either starts with "callgrind.out" or end with ".callgrind", the output will be formatted for use with KCacheGrind. Otherwise, the output will be a pickle. |
--coverage | Generate line coverage report in the specified directory. |
See doc/developers/profiling.txt for more information on profiling. A number of debug flags are also available to assist troubleshooting and development.
-Dauth | Trace authentication sections used. |
-Derror | Instead of normal error handling, always print a traceback on error. |
-Devil | Capture call sites that do expensive or badly-scaling operations. |
-Dfetch | Trace history copying between repositories. |
-Dhashcache | Log every time a working file is read to determine its hash. |
-Dhooks | Trace hook execution. |
-Dhpss | Trace smart protocol requests and responses. |
-Dhttp | Trace http connections, requests and responses |
-Dindex | Trace major index operations. |
-Dknit | Trace knit operations. |
-Dlock | Trace when lockdir locks are taken or released. |
-Dmerge | Emit information for debugging merges. |
-Dpack | Emit information about pack operations. |
-Dselftest_debug | |
Do not disable all debug flags when running selftest. |
Run after push has completed.
The hook signature is (push_result), containing the members
- source_branch
- Where the data is being pushed from (read locked). This should be the lowest latency branch.
- target_branch
- The direct location where data is being sent (write locked).
- master_branch
- Either target_branch, or if the target is a bound branch, it will be the master location (write locked).
- local_branch
- If the target is a bound branch, this will be the target branch, else it will be None.
- old_revno
- The revision number (eg 10) of the branch before the push.
- old_revid
- The revision id (eg joe@foo.com-1234234-aoeua34) before the push.
- new_revno
- The revision number (eg 12) of the branch after the push.
- new_revid
- The revision id (eg joe@foo.com-5676566-boa234a) after the push.
Run after pull has completed.
The hook signature is (push_result) containing the members (source, local, master, old_revno, old_revid, new_revno, new_revid) where local is the local target branch or None, master is the target master branch, and the rest should be self explanatory. The source is read-locked and the target branches are write-locked. Source will be the local low-latency branch.
Run prefore commit has completed.
The hook signature is (local, master, old_revno, old_revid, future_revno, future_revid, tree_delta, future_tree) where old_revno is NULL_REVISION for the first commit to a branch, tree_delta is a TreeDelta object describing changes from the basis revision, and future_tree is an in-memory tree obtained from CommitBuilder.revision_tree(). Hooks MUST NOT modify tree_delta and future_tree.
Run after commit has completed.
The hook signature is (local, master, old_revno, old_revid, new_revno, new_revid) old_revid is NULL_REVISION for the first commit to a branch.
Run after uncommit has completed.
The api signature is (local, master, old_revno, old_revid, new_revno, new_revid) where local is the local branch or None, master is the target branch, and an empty branch receives new_revno of 0, new_revid of None.
Run after a branch tip has been changed but while the branch is still write-locked. Note that push, pull, commit and uncommit all invoke this hook.
The hook signature is (params), where params is an object containing the members
- branch
- The branch whose tip has been changed.
- old_revno
- The revision number (eg 10) of the branch before the change.
- old_revid
- The revision id (eg joe@foo.com-1234234-aoeua34) before the change.
- new_revno
- The revision number (eg 12) of the branch after the change.
- new_revid
- The revision id (eg joe@foo.com-5676566-boa234a) after the change.
The old_revno and new_revno members are integers, as the head revision is never has a dotted revision number.
Note: This hook is now deprecated and will be removed in the near future. Please use the post_change_branch_tip hook instead.
See also Using hooks in the User Guide.
A revision, or a range bound, can be one of the following.
revno: | Selects a revision using a number. |
---|---|
revid: | Selects a revision using the revision id. |
last: | Selects the nth revision from the end. |
before: | Selects the parent of the revision specified. |
tag: | Selects a revision identified by a tag name. |
date: | Selects a revision on the basis of a datestamp. |
ancestor: | Selects a common ancestor with a second branch. |
branch: | Selects the last revision of a specified branch. |
submit: | Selects a common ancestor with the submit branch. |
Further details are given below.
revno: | Use an integer to specify a revision in the history of the branch. Optionally a branch can be specified. The 'revno:' prefix is optional. A negative number will count from the end of the branch (-1 is the last revision, -2 the previous one). If the negative number is larger than the branch's history, the first revision is returned. Examples: revno:1 -> return the first revision revno:3:/path/to/branch -> return the 3rd revision of the branch '/path/to/branch' revno:-1 -> The last revision in a branch. -2:http://other/branch -> The second to last revision in the remote branch. -1000000 -> Most likely the first revision, unless your history is very long. |
---|---|
revid: | Supply a specific revision id, that can be used to specify any revision id in the ancestry of the branch. Including merges, and pending merges. Examples: revid:aaaa@bbbb-123456789 -> Select revision 'aaaa@bbbb-123456789' |
last: | Supply a positive number to get the nth revision from the end. This is the same as supplying negative numbers to the 'revno:' spec. Examples: last:1 -> return the last revision last:3 -> return the revision 2 before the end. |
before: | Supply any revision spec to return the parent of that revision. It is an error to request the parent of the null revision (before:0). This is mostly useful when inspecting revisions that are not in the revision history of a branch. Examples: before:1913 -> Return the parent of revno 1913 (revno 1912) before:revid:aaaa@bbbb-1234567890 -> return the parent of revision aaaa@bbbb-1234567890 bzr diff -r before:revid:aaaa..revid:aaaa -> Find the changes between revision 'aaaa' and its parent. (what changes did 'aaaa' introduce) |
tag: | Tags are stored in the branch and created by the 'tag' command. |
date: | Supply a datestamp to select the first revision that matches the date. Date can be 'yesterday', 'today', 'tomorrow' or a YYYY-MM-DD string. Matches the first entry after a given date (either at midnight or at a specified time). One way to display all the changes since yesterday would be: bzr log -r date:yesterday..-1 Examples: date:yesterday -> select the first revision since yesterday date:2006-08-14,17:10:14 -> select the first revision after August 14th, 2006 at 5:10pm. |
ancestor: | Supply the path to a branch to select the common ancestor. The common ancestor is the last revision that existed in both branches. Usually this is the branch point, but it could also be a revision that was merged. This is frequently used with 'diff' to return all of the changes that your branch introduces, while excluding the changes that you have not merged from the remote branch. Examples: ancestor:/path/to/branch $ bzr diff -r ancestor:../../mainline/branch |
branch: | Supply the path to a branch to select its last revision. Examples: branch:/path/to/branch |
submit: | Diffing against this shows all the changes that were made in this branch, and is a good predictor of what merge will do. The submit branch is used by the bundle and merge directive comands. If no submit branch is specified, the parent branch is used instead. The common ancestor is the last revision that existed in both branches. Usually this is the branch point, but it could also be a revision that was merged. Examples: $ bzr diff -r submit: |
Standard options are legal for all commands.
--help, -h | Show help message. |
--verbose, -v | Display more information. |
--quiet, -q | Only display errors and warnings. |
Unlike global options, standard options can be used in aliases.
Status flags are used to summarise changes to the working tree in a concise manner. They are in the form:
xxx <filename>
where the columns' meanings are as follows.
Column 1 - versioning/renames:
+ File versioned - File unversioned R File renamed ? File unknown C File has conflicts P Entry for a pending merge (not a file)
Column 2 - contents:
N File created D File deleted K File kind changed M File modified
Column 3 - execute:
* The execute bit was changed
Supported URL prefixes:
aftp:// Access using active FTP. bzr:// Fast access using the Bazaar smart server. bzr+ssh:// Fast access using the Bazaar smart server over SSH. file:// Access using the standard filesystem (default) ftp:// Access using passive FTP. http:// Read-only access of branches exported on the web. https:// Read-only access of branches exported on the web using SSL. sftp:// Access using SFTP (most SSH servers provide SFTP).
Purpose: | Add specified files or directories. |
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr add [FILE...] |
||||||||||||||
Options: |
|
||||||||||||||
Description: | In non-recursive mode, all the named items are added, regardless of whether they were previously ignored. A warning is given if any of the named files are already versioned. In recursive mode (the default), files are treated the same way but the behaviour for directories is different. Directories that are already versioned do not give a warning. All directories, whether already versioned or not, are searched for files or subdirectories that are neither versioned or ignored, and these are added. This search proceeds recursively into versioned directories. If no names are given '.' is assumed. Therefore simply saying 'bzr add' will version all files that are currently unknown. Adding a file whose parent directory is not versioned will implicitly add the parent, and so on up to the root. This means you should never need to explicitly add a directory, they'll just get added when you add a file in the directory. --dry-run will show which files would be added, but not actually add them. --file-ids-from will try to use the file ids from the supplied path. It looks up ids trying to find a matching parent directory with the same filename, and then by pure path. This option is rarely needed but can be useful when adding the same logical file into two branches that will be merged later (without showing the two different adds as a conflict). It is also useful when merging another project into a subdirectory of this one. |
||||||||||||||
See also: |
Purpose: | Show the origin of each line in a file. |
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr annotate FILENAME |
||||||||||||||||
Options: |
|
||||||||||||||||
Description: | This prints out the given file with an annotation on the left side indicating which revision, author and date introduced the change. If the origin is the same for a run of consecutive lines, it is shown only at the top, unless the --all option is given. |
||||||||||||||||
Aliases: | ann, blame, praise |
Purpose: | Convert the current branch into a checkout of the supplied branch. |
||||||
---|---|---|---|---|---|---|---|
Usage: | bzr bind [LOCATION] |
||||||
Options: |
|
||||||
Description: | Once converted into a checkout, commits must succeed on the master branch before they will be applied to the local branch. |
||||||
See also: |
Purpose: | Create a new copy of a branch. |
||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr branch FROM_LOCATION [TO_LOCATION] |
||||||||||||
Options: |
|
||||||||||||
Description: | If the TO_LOCATION is omitted, the last component of the FROM_LOCATION will be used. In other words, "branch ../foo/bar" will attempt to create ./bar. If the FROM_LOCATION has no / or path separator embedded, the TO_LOCATION is derived from the FROM_LOCATION by stripping a leading scheme or drive identifier, if any. For example, "branch lp:foo-bar" will attempt to create ./foo-bar. To retrieve the branch as of a particular revision, supply the --revision parameter, as in "branch foo/bar -r 5". |
||||||||||||
Aliases: | get, clone |
||||||||||||
See also: |
Purpose: | Break a dead lock on a repository, branch or working directory. |
||||||
---|---|---|---|---|---|---|---|
Usage: | bzr break-lock [LOCATION] |
||||||
Options: |
|
||||||
Description: | CAUTION: Locks should only be broken when you are sure that the process holding the lock has been stopped. You can get information on what locks are open via the 'bzr info' command. |
||||||
Examples: | bzr break-lock |
Purpose: | Write the contents of a file as of a given revision to standard output. |
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr cat FILENAME |
||||||||||||||
Options: |
|
||||||||||||||
Description: | If no revision is nominated, the last revision is used. Note: Take care to redirect standard output when using this command on a binary file. |
||||||||||||||
See also: |
Purpose: | Validate consistency of branch history. |
||||||
---|---|---|---|---|---|---|---|
Usage: | bzr check [BRANCH] |
||||||
Options: |
|
||||||
Description: | This command checks various invariants about the branch storage to detect data corruption or bzr bugs. Output fields:
|
||||||
See also: |
Purpose: | Create a new checkout of an existing branch. |
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr checkout [BRANCH_LOCATION] [TO_LOCATION] |
||||||||||||||||||
Options: |
|
||||||||||||||||||
Description: | If BRANCH_LOCATION is omitted, checkout will reconstitute a working tree for the branch found in '.'. This is useful if you have removed the working tree or if it was never created - i.e. if you pushed the branch to its current location using SFTP. If the TO_LOCATION is omitted, the last component of the BRANCH_LOCATION will be used. In other words, "checkout ../foo/bar" will attempt to create ./bar. If the BRANCH_LOCATION has no / or path separator embedded, the TO_LOCATION is derived from the BRANCH_LOCATION by stripping a leading scheme or drive identifier, if any. For example, "checkout lp:foo-bar" will attempt to create ./foo-bar. To retrieve the branch as of a particular revision, supply the --revision parameter, as in "checkout foo/bar -r 5". Note that this will be immediately out of date [so you cannot commit] but it may be useful (i.e. to examine old code.) |
||||||||||||||||||
Aliases: | co |
||||||||||||||||||
See also: |
Purpose: | Commit changes into a new revision. |
||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr commit [SELECTED...] |
||||||||||||||||||||||||||
Options: |
|
||||||||||||||||||||||||||
Description: | If no arguments are given, the entire tree is committed. If selected files are specified, only changes to those files are committed. If a directory is specified then the directory and everything within it is committed. If author of the change is not the same person as the committer, you can specify the author's name using the --author option. The name should be in the same format as a committer-id, e.g. "John Doe <jdoe@example.com>". A selected-file commit may fail in some cases where the committed tree would be invalid. Consider: bzr init foo mkdir foo/bar bzr add foo/bar bzr commit foo -m "committing foo" bzr mv foo/bar foo/baz mkdir foo/bar bzr add foo/bar bzr commit foo/bar -m "committing bar but not baz" In the example above, the last commit will fail by design. This gives the user the opportunity to decide whether they want to commit the rename at the same time, separately first, or not at all. (As a general rule, when in doubt, Bazaar has a policy of Doing the Safe Thing.) Note: A selected-file commit after a merge is not yet supported. |
||||||||||||||||||||||||||
Aliases: | ci, checkin |
||||||||||||||||||||||||||
See also: |
Purpose: | List files with conflicts. |
||||||||
---|---|---|---|---|---|---|---|---|---|
Usage: | bzr conflicts |
||||||||
Options: |
|
||||||||
Description: | Merge will do its best to combine the changes in two branches, but there are some kinds of problems only a human can fix. When it encounters those, it will mark a conflict. A conflict means that you need to fix something, before you should commit. Conflicts normally are listed as short, human-readable messages. If --text is supplied, the pathnames of files with text conflicts are listed, instead. (This is useful for editing all files with text conflicts.) Use bzr resolve when you have fixed a problem. See also bzr resolve. |
Purpose: | List files deleted in the working tree. |
||||||||
---|---|---|---|---|---|---|---|---|---|
Usage: | bzr deleted |
||||||||
Options: |
|
||||||||
See also: |
Purpose: | Show differences in the working tree, between revisions or branches. |
||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr diff [FILE...] |
||||||||||||||||||||||||||||
Options: |
|
||||||||||||||||||||||||||||
Description: | If no arguments are given, all changes for the current tree are listed. If files are given, only the changes in those files are listed. Remote and multiple branches can be compared by using the --old and --new options. If not provided, the default for both is derived from the first argument, if any, or the current tree if no arguments are given. "bzr diff -p1" is equivalent to "bzr diff --prefix old/:new/", and produces patches suitable for "patch -p1". |
||||||||||||||||||||||||||||
Examples: | Shows the difference in the working tree versus the last commit: bzr diff Difference between the working tree and revision 1: bzr diff -r1 Difference between revision 2 and revision 1: bzr diff -r1..2 Difference between revision 2 and revision 1 for branch xxx: bzr diff -r1..2 xxx Show just the differences for file NEWS: bzr diff NEWS Show the differences in working tree xxx for file NEWS: bzr diff xxx/NEWS Show the differences from branch xxx to this working tree:
Show the differences between two branches for file NEWS: bzr diff --old xxx --new yyy NEWS Same as 'bzr diff' but prefix paths with old/ and new/: bzr diff --prefix old/:new/ |
||||||||||||||||||||||||||||
Exit values: | 1 - changed 2 - unrepresentable changes 3 - error 0 - no change |
||||||||||||||||||||||||||||
Aliases: | di, dif |
||||||||||||||||||||||||||||
See also: |
Purpose: | Export current or past revision to a destination directory or archive. |
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr export DEST [BRANCH] |
||||||||||||||
Options: |
|
||||||||||||||
Description: | If no revision is specified this exports the last committed revision. Format may be an "exporter" name, such as tar, tgz, tbz2. If none is given, try to find the format with the extension. If no extension is found exports to a directory (equivalent to --format=dir). If root is supplied, it will be used as the root directory inside container formats (tar, zip, etc). If it is not supplied it will default to the exported filename. The root option has no effect for 'dir' format. If branch is omitted then the branch containing the current working directory will be used. Note: Export of tree with non-ASCII filenames to zip is not supported.
|
Purpose: | Show help on a command or other topic. |
||||||||
---|---|---|---|---|---|---|---|---|---|
Usage: | bzr help [TOPIC] |
||||||||
Options: |
|
||||||||
Aliases: | ?, --help, -?, -h |
||||||||
See also: | topics |
Purpose: | Ignore specified files or patterns. |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr ignore [NAME_PATTERN...] |
||||||||||
Options: |
|
||||||||||
Description: | To remove patterns from the ignore list, edit the .bzrignore file. Trailing slashes on patterns are ignored. If the pattern contains a slash or is a regular expression, it is compared to the whole path from the branch root. Otherwise, it is compared to only the last component of the path. To match a file only in the root directory, prepend './'. Ignore patterns specifying absolute paths are not allowed. Ignore patterns may include globbing wildcards such as: ? - Matches any single character except '/' * - Matches 0 or more characters except '/' /**/ - Matches 0 or more directories in a path [a-z] - Matches a single character from within a group of characters Ignore patterns may also be Python regular expressions. Regular expression ignore patterns are identified by a 'RE:' prefix followed by the regular expression. Regular expression ignore patterns may not include named or numbered groups. Note: ignore patterns containing shell wildcards must be quoted from the shell on Unix. |
||||||||||
Examples: | Ignore the top level Makefile: bzr ignore ./Makefile Ignore class files in all directories: bzr ignore "*.class" Ignore .o files under the lib directory: bzr ignore "lib/**/*.o" Ignore .o files under the lib directory: bzr ignore "RE:lib/.*\.o" Ignore everything but the "debian" toplevel directory: bzr ignore "RE:(?!debian/).*" |
||||||||||
See also: |
Purpose: | List ignored files and the patterns that matched them. |
||||||
---|---|---|---|---|---|---|---|
Usage: | bzr ignored |
||||||
Options: |
|
||||||
See also: |
Purpose: | Show information about a working tree, branch or repository. |
||||||
---|---|---|---|---|---|---|---|
Usage: | bzr info [LOCATION] |
||||||
Options: |
|
||||||
Description: | This command will show all known locations and formats associated to the tree, branch or repository. Statistical information is included with each report. Branches and working trees will also report any missing revisions. |
||||||
See also: |
Purpose: | Make a directory into a versioned branch. |
||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr init [LOCATION] |
||||||||||||||||||||||||||||||||||||||||||||
Options: |
|
||||||||||||||||||||||||||||||||||||||||||||
Description: | Use this to create an empty branch, or before importing an existing project. If there is a repository in a parent directory of the location, then the history of the branch will be stored in the repository. Otherwise init creates a standalone branch which carries its own history in the .bzr directory. If there is already a branch at the location but it has no working tree, the tree can be populated with 'bzr checkout'. Recipe for importing a tree of files: cd ~/project bzr init bzr add . bzr status bzr commit -m "imported project" |
||||||||||||||||||||||||||||||||||||||||||||
See also: |
Purpose: | Create a shared repository to hold branches. |
||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr init-repository LOCATION |
||||||||||||||||||||||||||||||||||||||
Options: |
|
||||||||||||||||||||||||||||||||||||||
Description: | New branches created under the repository directory will store their revisions in the repository, not in the branch directory. If the --no-trees option is used then the branches in the repository will not have working trees by default. |
||||||||||||||||||||||||||||||||||||||
Examples: | Create a shared repositories holding just branches: bzr init-repo --no-trees repo bzr init repo/trunk Make a lightweight checkout elsewhere: bzr checkout --lightweight repo/trunk trunk-checkout cd trunk-checkout (add files here) |
||||||||||||||||||||||||||||||||||||||
Aliases: | init-repo |
||||||||||||||||||||||||||||||||||||||
See also: |
Purpose: | Show log of a branch, file, or directory. |
||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr log [LOCATION] |
||||||||||||||||||||||||||||||||||
Options: |
|
||||||||||||||||||||||||||||||||||
Description: | By default show the log of the branch containing the working directory. To request a range of logs, you can use the command -r begin..end -r revision requests a specific revision, -r ..end or -r begin.. are also valid. |
||||||||||||||||||||||||||||||||||
Examples: | Log the current branch: bzr log Log a file: bzr log foo.c Log the last 10 revisions of a branch: bzr log -r -10.. http://server/branch |
Purpose: | List files in a tree. |
||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr ls [PATH] |
||||||||||||||||||||||||||||
Options: |
|
||||||||||||||||||||||||||||
See also: |
Purpose: | Perform a three-way merge. |
||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr merge [LOCATION] |
||||||||||||||||||||||||||||||||||||||||||||
Options: |
|
||||||||||||||||||||||||||||||||||||||||||||
Description: | The source of the merge can be specified either in the form of a branch, or in the form of a path to a file containing a merge directive generated with bzr send. If neither is specified, the default is the upstream branch or the branch most recently merged using --remember. When merging a branch, by default the tip will be merged. To pick a different revision, pass --revision. If you specify two values, the first will be used as BASE and the second one as OTHER. Merging individual revisions, or a subset of available revisions, like this is commonly referred to as "cherrypicking". Revision numbers are always relative to the branch being merged. By default, bzr will try to merge in all new work from the other branch, automatically determining an appropriate base. If this fails, you may need to give an explicit base. Merge will do its best to combine the changes in two branches, but there are some kinds of problems only a human can fix. When it encounters those, it will mark a conflict. A conflict means that you need to fix something, before you should commit. Use bzr resolve when you have fixed a problem. See also bzr conflicts. If there is no default branch set, the first merge will set it. After that, you can omit the branch to use the default. To change the default, use --remember. The value will only be saved if the remote location can be accessed. The results of the merge are placed into the destination working directory, where they can be reviewed (with bzr diff), tested, and then committed to record the result of the merge. merge refuses to run if there are any uncommitted changes, unless --force is given. |
||||||||||||||||||||||||||||||||||||||||||||
Examples: | To merge the latest revision from bzr.dev: bzr merge ../bzr.dev To merge changes up to and including revision 82 from bzr.dev: bzr merge -r 82 ../bzr.dev To merge the changes introduced by 82, without previous changes: bzr merge -r 81..82 ../bzr.dev To apply a merge directive contained in in /tmp/merge:
|
||||||||||||||||||||||||||||||||||||||||||||
See also: |
Purpose: | Show unmerged/unpulled revisions between two branches. |
||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr missing [OTHER_BRANCH] |
||||||||||||||||||||||||||||
Options: |
|
||||||||||||||||||||||||||||
Description: | OTHER_BRANCH may be local or remote. |
||||||||||||||||||||||||||||
See also: |
Purpose: | Create a new versioned directory. |
||||||
---|---|---|---|---|---|---|---|
Usage: | bzr mkdir DIR... |
||||||
Options: |
|
||||||
Description: | This is equivalent to creating the directory and then adding it. |
Purpose: | Move or rename a file. |
||||||||
---|---|---|---|---|---|---|---|---|---|
Usage: | bzr mv OLDNAME NEWNAME bzr mv SOURCE... DESTINATION |
||||||||
Options: |
|
||||||||
Description: | If the last argument is a versioned directory, all the other names are moved into it. Otherwise, there must be exactly two arguments and the file is changed to a new name. If OLDNAME does not exist on the filesystem but is versioned and NEWNAME does exist on the filesystem but is not versioned, mv assumes that the file has been manually moved and only updates its internal inventory to reflect that change. The same is valid when moving many SOURCE files to a DESTINATION. Files cannot be moved between branches. |
||||||||
Aliases: | move, rename |
Purpose: | Print or set the branch nickname. |
||||||
---|---|---|---|---|---|---|---|
Usage: | bzr nick [NICKNAME] |
||||||
Options: |
|
||||||
Description: | If unset, the tree root directory name is used as the nickname To print the current nickname, execute with no argument. |
||||||
See also: |
Purpose: | Compress the data within a repository. |
||||||
---|---|---|---|---|---|---|---|
Usage: | bzr pack [BRANCH_OR_REPO] |
||||||
Options: |
|
||||||
See also: |
Purpose: | List the installed plugins. |
||||||
---|---|---|---|---|---|---|---|
Usage: | bzr plugins |
||||||
Options: |
|
||||||
Description: | This command displays the list of installed plugins including version of plugin and a short description of each. --verbose shows the path where each plugin is located. A plugin is an external component for Bazaar that extends the revision control system, by adding or replacing code in Bazaar. Plugins can do a variety of things, including overriding commands, adding new commands, providing additional network transports and customizing log output. See the Bazaar web site, http://bazaar-vcs.org, for further information on plugins including where to find them and how to install them. Instructions are also provided there on how to write new plugins using the Python programming language. |
Purpose: | Turn this branch into a mirror of another branch. |
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr pull [LOCATION] |
||||||||||||||||||
Options: |
|
||||||||||||||||||
Description: | This command only works on branches that have not diverged. Branches are considered diverged if the destination branch's most recent commit is one that has not been merged (directly or indirectly) into the parent. If branches have diverged, you can use 'bzr merge' to integrate the changes from one into the other. Once one branch has merged, the other should be able to pull it again. If you want to forget your local changes and just update your branch to match the remote one, use pull --overwrite. If there is no default location set, the first pull will set it. After that, you can omit the location to use the default. To change the default, use --remember. The value will only be saved if the remote location can be accessed. Note: The location can be specified either in the form of a branch, or in the form of a path to a file containing a merge directive generated with bzr send. |
||||||||||||||||||
See also: |
Purpose: | Update a mirror of this branch. |
||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr push [LOCATION] |
||||||||||||||||||||||||||
Options: |
|
||||||||||||||||||||||||||
Description: | The target branch will not have its working tree populated because this is both expensive, and is not supported on remote file systems. Some smart servers or protocols may put the working tree in place in the future. This command only works on branches that have not diverged. Branches are considered diverged if the destination branch's most recent commit is one that has not been merged (directly or indirectly) by the source branch. If branches have diverged, you can use 'bzr push --overwrite' to replace the other branch completely, discarding its unmerged changes. If you want to ensure you have the different changes in the other branch, do a merge (see bzr help merge) from the other branch, and commit that. After that you will be able to do a push without '--overwrite'. If there is no default push location set, the first push will set it. After that, you can omit the location to use the default. To change the default, use --remember. The value will only be saved if the remote location can be accessed. |
||||||||||||||||||||||||||
See also: |
Purpose: | Reconcile bzr metadata in a branch. |
||||||
---|---|---|---|---|---|---|---|
Usage: | bzr reconcile [BRANCH] |
||||||
Options: |
|
||||||
Description: | This can correct data mismatches that may have been caused by previous ghost operations or bzr upgrades. You should only need to run this command if 'bzr check' or a bzr developer advises you to run it. If a second branch is provided, cross-branch reconciliation is also attempted, which will check that data like the tree root id which was not present in very early bzr versions is represented correctly in both branches. At the same time it is run it may recompress data resulting in a potential saving in disk space or performance gain. The branch MUST be on a listable system such as local disk or sftp. |
||||||
See also: |
Purpose: | Reconfigure the type of a bzr directory. |
||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr reconfigure [LOCATION] |
||||||||||||||||||||
Options: |
|
||||||||||||||||||||
Description: | A target configuration must be specified. For checkouts, the bind-to location will be auto-detected if not specified. The order of preference is 1. For a lightweight checkout, the current bound location. 2. For branches that used to be checkouts, the previously-bound location. 3. The push location. 4. The parent location. If none of these is available, --bind-to must be specified. |
Purpose: | Redo a merge. |
||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr remerge [FILE...] |
||||||||||||||||||||||
Options: |
|
||||||||||||||||||||||
Description: | Use this if you want to try a different merge technique while resolving conflicts. Some merge techniques are better than others, and remerge lets you try different ones on different files. The options for remerge have the same meaning and defaults as the ones for merge. The difference is that remerge can (only) be run when there is a pending merge, and it lets you specify particular files. |
||||||||||||||||||||||
Examples: | Re-do the merge of all conflicted files, and show the base text in conflict regions, in addition to the usual THIS and OTHER texts: bzr remerge --show-base Re-do the merge of "foobar", using the weave merge algorithm, with additional processing to reduce the size of conflict regions: bzr remerge --merge-type weave --reprocess foobar |
Purpose: | Remove files or directories. |
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr remove [FILE...] |
||||||||||||||
Options: |
|
||||||||||||||
Description: | This makes bzr stop tracking changes to the specified files and delete them if they can easily be recovered using revert. You can specify one or more files, and/or --new. If you specify --new, only 'added' files will be removed. If you specify both, then new files in the specified directories will be removed. If the directories are also new, they will also be removed. |
||||||||||||||
Aliases: | rm |
Purpose: | Remove the working tree from a given branch/checkout. |
||||||
---|---|---|---|---|---|---|---|
Usage: | bzr remove-tree [LOCATION] |
||||||
Options: |
|
||||||
Description: | Since a lightweight checkout is little more than a working tree this will refuse to run against one. To re-create the working tree, use "bzr checkout". |
||||||
See also: |
Purpose: | Show list of renamed files. |
||||||
---|---|---|---|---|---|---|---|
Usage: | bzr renames [DIR] |
||||||
Options: |
|
||||||
See also: |
Purpose: | Mark a conflict as resolved. |
||||||||
---|---|---|---|---|---|---|---|---|---|
Usage: | bzr resolve [FILE...] |
||||||||
Options: |
|
||||||||
Description: | Merge will do its best to combine the changes in two branches, but there are some kinds of problems only a human can fix. When it encounters those, it will mark a conflict. A conflict means that you need to fix something, before you should commit. Once you have fixed a problem, use "bzr resolve" to automatically mark text conflicts as fixed, resolve FILE to mark a specific conflict as resolved, or "bzr resolve --all" to mark all conflicts as resolved. See also bzr conflicts. |
||||||||
Aliases: | resolved |
Purpose: | Revert files to a previous revision. |
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr revert [FILE...] |
||||||||||||||||
Options: |
|
||||||||||||||||
Description: | Giving a list of files will revert only those files. Otherwise, all files will be reverted. If the revision is not specified with '--revision', the last committed revision is used. To remove only some changes, without reverting to a prior version, use merge instead. For example, "merge . --revision -2..-3" will remove the changes introduced by -2, without affecting the changes introduced by -1. Or to remove certain changes on a hunk-by-hunk basis, see the Shelf plugin. By default, any files that have been manually changed will be backed up first. (Files changed only by merge are not backed up.) Backup files have '.~#~' appended to their name, where # is a number. When you provide files, you can use their current pathname or the pathname from the target revision. So you can use revert to "undelete" a file by name. If you name a directory, all the contents of that directory will be reverted. Any files that have been newly added since that revision will be deleted, with a backup kept if appropriate. Directories containing unknown files will not be deleted. The working tree contains a list of pending merged revisions, which will be included as parents in the next commit. Normally, revert clears that list as well as reverting the files. If any files are specified, revert leaves the pending merge list alone and reverts only the files. Use "bzr revert ." in the tree root to revert all files but keep the merge record, and "bzr revert --forget-merges" to clear the pending merge list without reverting any files. |
||||||||||||||||
See also: |
Purpose: | Show current revision number. |
||||||
---|---|---|---|---|---|---|---|
Usage: | bzr revno [LOCATION] |
||||||
Options: |
|
||||||
Description: | This is equal to the number of revisions on this branch. |
||||||
See also: |
Purpose: | Show the tree root directory. |
||||||
---|---|---|---|---|---|---|---|
Usage: | bzr root [FILENAME] |
||||||
Options: |
|
||||||
Description: | The root is the nearest enclosing directory with a .bzr control directory. |
Purpose: | Mail or create a merge-directive for submiting changes. |
||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr send [SUBMIT_BRANCH] [PUBLIC_BRANCH] |
||||||||||||||||||||||||||||||||
Options: |
|
||||||||||||||||||||||||||||||||
Description: | A merge directive provides many things needed for requesting merges:
If --no-bundle is specified, then public_branch is needed (and must be up-to-date), so that the receiver can perform the merge using the public_branch. The public_branch is always included if known, so that people can check it later. The submit branch defaults to the parent, but can be overridden. Both submit branch and public branch will be remembered if supplied. If a public_branch is known for the submit_branch, that public submit branch is used in the merge instructions. This means that a local mirror can be used as your actual submit branch, once you have set public_branch for that mirror. Mail is sent using your preferred mail program. This should be transparent on Windows (it uses MAPI). On Linux, it requires the xdg-email utility. If the preferred client can't be found (or used), your editor will be used. To use a specific mail program, set the mail_client configuration option. (For Thunderbird 1.5, this works around some bugs.) Supported values for specific clients are "evolution", "kmail", "mutt", and "thunderbird"; generic options are "default", "editor", "mapi", and "xdg-email". If mail is being sent, a to address is required. This can be supplied either on the commandline, by setting the submit_to configuration option in the branch itself or the child_submit_to configuration option in the submit branch. Two formats are currently supported: "4" uses revision bundle format 4 and merge directive format 2. It is significantly faster and smaller than older formats. It is compatible with Bazaar 0.19 and later. It is the default. "0.9" uses revision bundle format 0.9 and merge directive format 1. It is compatible with Bazaar 0.12 - 0.18. Merge directives are applied using the merge command or the pull command. |
||||||||||||||||||||||||||||||||
See also: |
Purpose: | Run the bzr server. |
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr serve |
||||||||||||||||
Options: |
|
||||||||||||||||
Aliases: | server |
Purpose: | Sign all commits by a given committer. |
||||||||
---|---|---|---|---|---|---|---|---|---|
Usage: | bzr sign-my-commits [LOCATION] [COMMITTER] |
||||||||
Options: |
|
||||||||
Description: | If location is not specified the local tree is used. If committer is not specified the default committer is used. This does not sign commits that already have signatures. |
Purpose: | Split a subdirectory of a tree into a separate tree. |
||||||
---|---|---|---|---|---|---|---|
Usage: | bzr split TREE |
||||||
Options: |
|
||||||
Description: | This command will produce a target tree in a format that supports rich roots, like 'rich-root' or 'rich-root-pack'. These formats cannot be converted into earlier formats like 'dirstate-tags'. The TREE argument should be a subdirectory of a working tree. That subdirectory will be converted into an independent tree, with its own branch. Commits in the top-level tree will not apply to the new subtree. |
Purpose: | Display status summary. |
||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr status [FILE...] |
||||||||||||||||||||||||
Options: |
|
||||||||||||||||||||||||
Description: | This reports on versioned and unknown files, reporting them grouped by state. Possible states are:
To see ignored files use 'bzr ignored'. For details on the changes to file texts, use 'bzr diff'. Note that --short or -S gives status flags for each item, similar to Subversion's status command. To get output similar to svn -q, use bzr -SV. If no arguments are specified, the status of the entire working directory is shown. Otherwise, only the status of the specified files or directories is reported. If a directory is given, status is reported for everything inside that directory. If a revision argument is given, the status is calculated against that revision, or between two revisions if two are provided. |
||||||||||||||||||||||||
Aliases: | st, stat |
||||||||||||||||||||||||
See also: |
Purpose: | Set the branch of a checkout and update. |
||||||||
---|---|---|---|---|---|---|---|---|---|
Usage: | bzr switch TO_LOCATION |
||||||||
Options: |
|
||||||||
Description: | For lightweight checkouts, this changes the branch being referenced. For heavyweight checkouts, this checks that there are no local commits versus the current bound branch, then it makes the local branch a mirror of the new location and binds to it. In both cases, the working tree is updated and uncommitted changes are merged. The user can commit or revert these as they desire. Pending merges need to be committed or reverted before using switch. The path to the branch to switch to can be specified relative to the parent directory of the current branch. For example, if you are currently in a checkout of /path/to/branch, specifying 'newbranch' will find a branch at /path/to/newbranch. |
Purpose: | Create, remove or modify a tag naming a revision. |
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr tag TAG_NAME |
||||||||||||||||||
Options: |
|
||||||||||||||||||
Description: | Tags give human-meaningful names to revisions. Commands that take a -r (--revision) option can be given -rtag:X, where X is any previously created tag. Tags are stored in the branch. Tags are copied from one branch to another along when you branch, push, pull or merge. It is an error to give a tag name that already exists unless you pass --force, in which case the tag is moved to point to the new revision. |
||||||||||||||||||
See also: |
Purpose: | List tags. |
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr tags |
||||||||||||||
Options: |
|
||||||||||||||
Description: | This command shows a table of tag names and the revisions they reference. |
||||||||||||||
See also: |
Purpose: | Show testament (signing-form) of a revision. |
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr testament [BRANCH] |
||||||||||||||
Options: |
|
Purpose: | Convert the current checkout into a regular branch. |
||||||
---|---|---|---|---|---|---|---|
Usage: | bzr unbind |
||||||
Options: |
|
||||||
Description: | After unbinding, the local branch is considered independent and subsequent commits will be local only. |
||||||
See also: |
Purpose: | Remove the last committed revision. |
||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr uncommit [LOCATION] |
||||||||||||||||
Options: |
|
||||||||||||||||
Description: | --verbose will print out what is being removed. --dry-run will go through all the motions, but not actually remove anything. If --revision is specified, uncommit revisions to leave the branch at the specified revision. For example, "bzr uncommit -r 15" will leave the branch at revision 15. In the future, uncommit will create a revision bundle, which can then be re-applied. |
||||||||||||||||
See also: |
Purpose: | Update a tree to have the latest code committed to its branch. |
||||||
---|---|---|---|---|---|---|---|
Usage: | bzr update [DIR] |
||||||
Options: |
|
||||||
Description: | This will perform a merge into the working tree, and may generate conflicts. If you have any local changes, you will still need to commit them after the update for the update to be complete. If you want to discard your local changes, you can just do a 'bzr revert' instead of 'bzr commit' after the update. |
||||||
Aliases: | up |
||||||
See also: |
Purpose: | Upgrade branch storage to current format. |
||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr upgrade [URL] |
||||||||||||||||||||||||||||||||||||
Options: |
|
||||||||||||||||||||||||||||||||||||
Description: | The check command or bzr developers may sometimes advise you to run this command. When the default format has changed you may also be warned during other operations to upgrade. |
||||||||||||||||||||||||||||||||||||
See also: |
Purpose: | Show version of bzr. |
||||||||
---|---|---|---|---|---|---|---|---|---|
Usage: | bzr version |
||||||||
Options: |
|
Purpose: | Show version information about this tree. |
||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr version-info [LOCATION] |
||||||||||||||||||||||||||||
Options: |
|
||||||||||||||||||||||||||||
Description: | You can use this command to add information about version into source code of an application. The output can be in one of the supported formats or in a custom format based on a template. For example: bzr version-info --custom \ --template="#define VERSION_INFO \"Project 1.2.3 (r{revno})\"\n" will produce a C header file with formatted string containing the current revision number. Other supported variables in templates are:
|
Purpose: | Show or set bzr user id. |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Usage: | bzr whoami [NAME] |
||||||||||
Options: |
|
||||||||||
Examples: | Show the email of the current user: bzr whoami --email Set the current user: bzr whoami "Frank Chu <fchu@example.com>" |