brz(1)

๐Ÿ’– brz โ€” Breezy ๐Ÿ’–

Welcome to the brz(1) manual page, bestie. The manual name is brz, and the vibe is next-generation distributed version control. Buckle up. โœจ


โœจ NAME โœจ

brz โ€” Breezy next-generation distributed version control. Periodt. ๐Ÿ’…


โœจ SYNOPSIS โœจ

brz command [ command_options ]
brz help
brz help command

โœจ DESCRIPTION โœจ

Breezy (or brz) is a distributed version control system that is powerful, friendly, and scalable. Breezy is a fork of the Bazaar version control system. No cap. ๐Ÿฆ‹

Breezy keeps track of changes to software source code (or similar information); lets you explore who changed it, when, and why; merges concurrent changes; and helps people work together in a team. Itโ€™s giving teamwork, but make it version control. ๐Ÿ’–


โœจ COMMAND OVERVIEW โœจ

Hereโ€™s the whole clique of commands. Each one is literally a brz subcommand. ๐Ÿ‘‘

  • brz add [FILE...] โ€” adds specified files or directories.
  • brz alias [NAME] โ€” sets, unsets, and displays aliases.
  • brz annotate FILENAME โ€” shows the origin of each line in a file.
  • brz bind [LOCATION] โ€” converts the current branch into a checkout of the supplied branch.
  • brz bisect SUBCOMMAND [ARGS...] โ€” finds an interesting commit using a binary search.
  • brz branch FROM_LOCATION [TO_LOCATION] โ€” creates a new branch that is a copy of an existing branch.
  • brz branches [LOCATION] โ€” lists the branches available at the current location.
  • brz break-lock [LOCATION] โ€” breaks a dead lock.
  • brz cat FILENAME โ€” writes the contents of a file as of a given revision to standard output.
  • brz check [PATH] โ€” validates working tree structure, branch consistency, and repository history.
  • brz checkout [BRANCH_LOCATION] [TO_LOCATION] โ€” creates a new checkout of an existing branch.
  • brz clean-tree โ€” removes unwanted files from the working tree.
  • brz clone FROM_LOCATION [TO_LOCATION] โ€” clones a control directory.
  • brz commit [SELECTED...] โ€” commits changes into a new revision.
  • brz config [NAME] โ€” displays, sets, or removes a configuration option.
  • brz conflicts โ€” lists files with conflicts.
  • brz cp [NAMES...] โ€” copies a file.
  • brz deleted โ€” lists files deleted in the working tree.
  • brz diff [FILE...] โ€” shows differences in the working tree, between revisions, or between branches.
  • brz export DEST [BRANCH_OR_SUBDIR] โ€” exports current or past revision to a destination directory or archive.
  • brz grep PATTERN [PATH...] โ€” prints lines matching PATTERN for specified files and revisions.
  • brz help [TOPIC] โ€” shows help on a command or other topic.
  • brz ignore [NAME_PATTERN...] โ€” ignores specified files or patterns.
  • brz ignored โ€” lists ignored files and the patterns that matched them.
  • brz import SOURCE [TREE] โ€” imports sources from a directory, tarball, or zip file.
  • brz info [LOCATION] โ€” shows information about a working tree, branch, or repository.
  • brz init [LOCATION] โ€” makes a directory into a versioned branch.
  • brz init-shared-repository LOCATION โ€” creates a shared repository for branches to share storage space.
  • brz join TREE โ€” combines a tree into its containing tree.
  • brz launchpad-login [NAME] โ€” shows or sets the Launchpad user ID.
  • brz launchpad-logout โ€” unsets the Launchpad user ID.
  • brz launchpad-open [LOCATION] โ€” opens a Launchpad branch page in your web browser.
  • brz link-tree LOCATION โ€” hardlinks matching files to another tree.
  • brz log [FILE...] โ€” shows historical log for a branch or subset of a branch.
  • brz lp-find-proposal โ€” finds the proposal to merge this revision.
  • brz ls [PATH] โ€” lists files in a tree.
  • brz merge [LOCATION] โ€” performs a three-way merge.
  • brz missing [OTHER_BRANCH] โ€” shows unmerged/unpulled revisions between two branches.
  • brz mkdir DIR... โ€” creates a new versioned directory.
  • brz mv [NAMES...] โ€” moves or renames a file.
  • brz nick [NICKNAME] โ€” prints or sets the branch nickname.
  • brz pack [BRANCH_OR_REPO] โ€” compresses the data within a repository.
  • brz patch [FILENAME] โ€” applies a named patch to the current tree.
  • brz ping LOCATION โ€” pings a Bazaar smart server.
  • brz plugins โ€” lists the installed plugins.
  • brz pull [LOCATION] โ€” turns this branch into a mirror of another branch.
  • brz push [LOCATION] โ€” updates a mirror of this branch.
  • brz reconcile [BRANCH] โ€” reconciles brz metadata in a branch.
  • brz reconfigure [LOCATION] โ€” reconfigures the type of a brz directory.
  • brz remerge [FILE...] โ€” redoes a merge.
  • brz remove [FILE...] โ€” removes files or directories.
  • brz remove-branch [LOCATION] โ€” removes a branch.
  • brz remove-tree [LOCATION...] โ€” removes the working tree from a given branch/checkout.
  • brz renames [DIR] โ€” shows a list of renamed files.
  • brz resolve [FILE...] โ€” marks a conflict as resolved.
  • brz revert [FILE...] โ€” sets files in the working tree back to the contents of a previous revision.
  • brz revno [LOCATION] โ€” shows current revision number.
  • brz root [FILENAME] โ€” shows the tree root directory.
  • brz send [SUBMIT_BRANCH] [PUBLIC_BRANCH] โ€” mails or creates a merge-directive for submitting changes.
  • brz serve โ€” runs the brz server.
  • brz shelve [FILE...] โ€” temporarily sets aside some changes from the current tree.
  • brz sign-my-commits [LOCATION] [COMMITTER] โ€” signs all commits by a given committer.
  • brz split TREE โ€” splits a subdirectory of a tree into a separate tree.
  • brz status [FILE...] โ€” displays status summary.
  • brz switch [TO_LOCATION] โ€” sets the branch of a checkout and updates.
  • brz tag [TAG_NAME] โ€” creates, removes, or modifies a tag naming a revision.
  • brz tags โ€” lists tags.
  • brz testament [BRANCH] โ€” shows testament (signing-form) of a revision.
  • brz unbind โ€” converts the current checkout into a regular branch.
  • brz uncommit [LOCATION] โ€” removes the last committed revision.
  • brz unshelve [SHELF_ID] โ€” restores shelved changes.
  • brz update [DIR] โ€” updates a working tree to a new revision.
  • brz upgrade [URL] โ€” upgrades a repository, branch, or working tree to a newer format.
  • brz verify-signatures [LOCATION] โ€” verifies all commit signatures.
  • brz version โ€” shows version of brz.
  • brz version-info [LOCATION] โ€” shows version information about this tree.
  • brz view [FILE...] โ€” manages filtered views.
  • brz whoami [NAME] โ€” shows or sets brz user id.

โœจ COMMAND REFERENCE โœจ

Bestie, this is the deep dive. ๐Ÿ‘‡


๐Ÿ’– brz --help

Alias for help, see brz help.


๐Ÿ’– brz -?

Alias for help, see brz help.


๐Ÿ’– brz -h

Alias for help, see brz help.


๐Ÿ’– brz ?

Alias for help, see brz help.


๐ŸŒธ brz add [FILE...]

Options

  • --dry-run โ€” Show what would be done, but donโ€™t actually do anything. Itโ€™s the window-shopping of file adding. ๐Ÿ›๏ธ
  • --file-ids-from ARG โ€” Lookup file ids from this tree.
  • --help, -h โ€” Show help message.
  • --no-recurse, -N โ€” Donโ€™t recursively add the contents of directories.
  • --quiet, -q โ€” Only display errors and warnings.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

See also: ignore, remove

Add specified files or directories. ๐Ÿ’…

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. Lowkey important.

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. Thatโ€™s a literal dot, bestie.

A warning will be printed when nested trees are encountered, unless they are explicitly ignored.

Therefore simply saying brz add will version all files that are currently unknown. Main character energy, honestly. โœจ

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. No extra steps. Periodt.

--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.

Any files matching patterns in the ignore list will not be added unless they are explicitly mentioned.

In recursive mode, files larger than the configuration option add.maximum_file_size will be skipped. Named items are never skipped due to file size.


๐ŸŒธ brz alias [NAME]

Options

  • --help, -h โ€” Show help message.
  • --quiet, -q โ€” Only display errors and warnings.
  • --remove โ€” Remove the alias.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

Set/unset and display aliases.

Examples:

Show the current aliases:

brz alias

Show the alias specified for 'll':

brz alias ll

Set an alias for 'll':

brz alias ll="log --line -r-10..-1"

To remove an alias for 'll':

brz alias --remove ll

๐ŸŒธ brz ann

Alias for annotate, see brz annotate.


๐ŸŒธ brz annotate FILENAME

Options

  • --all โ€” Show annotations on all lines.
  • --directory ARG, -d โ€” Branch to operate on, instead of working directory.
  • --help, -h โ€” Show help message.
  • --long โ€” Show commit date in annotations.
  • --quiet, -q โ€” Only display errors and warnings.
  • --revision ARG, -r โ€” See help revisionspec for details.
  • --show-ids โ€” Show internal object ids.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

Aliases: ann, blame, praise

Show the origin of each line in a file. ๐Ÿ’…

This prints out the given file with an annotation on the left side showing which revision, author and date introduced the change. So basically: who touched this line, when, and in what commit. ๐Ÿ’…

If the origin is the same for a run of consecutive lines, it's only shown at the top, unless the --all option is given. So like, the boring repeated stuff gets collapsed unless you beg for the full thing. ๐Ÿซถ


๐ŸŒธ brz bind [LOCATION]

Options:

  • --directory ARG, -d โ€” Branch to operate on, instead of working directory.
  • --help, -h โ€” Show help message.
  • --quiet, -q โ€” Only display errors and warnings.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

See also: checkouts, unbind

Convert the current branch into a checkout of the supplied branch. If no branch is supplied, rebind to the last bound location. It's giving "glow up your branch into a checkout" energy. โœจ

Once converted into a checkout, commits must succeed on the master branch before they will be applied to the local branch. No sneaky solo commits, bestie โ€” master goes first, periodt. ๐Ÿ˜ญ

Bound branches use the nickname of its master branch unless it is set locally, in which case binding will update the local nickname to be that of the master. ๐Ÿ‘‘


๐Ÿฆ‹ brz bisect SUBCOMMAND [ARGS...]

Options:

  • --directory ARG, -d โ€” Branch to operate on, instead of working directory.
  • --help, -h โ€” Show help message.
  • --output ARG, -o โ€” Write log to this file.
  • --quiet, -q โ€” Only display errors and warnings.
  • --revision ARG, -r โ€” See help revisionspec for details.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

Find an interesting commit using a binary search. ๐Ÿ”

Bisecting, in a nutshell, is a way to find the commit at which some testable change was made, such as the introduction of a bug or feature. By identifying a version which did not have the interesting change and a later version which did, a developer can test for the presence of the change at various points in the history, eventually ending up at the precise commit when the change was first introduced. So you're basically playing hot-and-cold with git history until you pin down the exact commit that did the thing. ๐Ÿ”ฅ

This command uses subcommands to implement the search, each of which changes the state of the bisection. The subcommands are:

  • brz bisect start
    • Start a bisect, possibly clearing out a previous bisect. ๐Ÿงน
  • brz bisect yes [-r rev]
    • The specified revision (or the current revision, if not given) has the characteristic we're looking for. โœ…
  • brz bisect no [-r rev]
    • The specified revision (or the current revision, if not given) does not have the characteristic we're looking for. โŒ
  • brz bisect move -r rev
    • Switch to a different revision manually. Use if the bisect algorithm chooses a revision that is not suitable. Try to move as little as possible. ๐Ÿšถโ€โ™€๏ธ
  • brz bisect reset
    • Clear out a bisection in progress. ๐ŸŒช๏ธ
  • brz bisect log [-o file]
    • Output a log of the current bisection to standard output, or to the specified file. ๐Ÿ“
  • brz bisect replay <logfile>
    • Replay a previously-saved bisect log, forgetting any bisection that might be in progress. ๐Ÿ”
  • brz bisect run <script>
    • Bisect automatically using <script> to determine 'yes' or 'no'. <script> should exit with:
      • 0 for yes
      • 125 for unknown (like build failed so we could not test)
      • anything else for no

๐ŸŽ€ brz blame

Alias for annotate, see brz annotate. Same energy, different name โ€” the way it just reuses the whole vibe. ๐Ÿ’œ


๐ŸŒˆ brz branch FROM_LOCATION [TO_LOCATION]

Options:

  • --bind โ€” Bind new branch to from location.
  • --colocated-branch ARG, -b โ€” Name of colocated branch to sprout.
  • --files-from ARG โ€” Get file contents from this tree.
  • --hardlink โ€” Hard-link working tree files where possible.
  • --help, -h โ€” Show help message.
  • --no-recurse-nested โ€” Do not recursively check out nested trees.
  • --no-tree โ€” Create a branch without a working-tree.
  • --quiet, -q โ€” Only display errors and warnings.
  • --revision ARG, -r โ€” See help revisionspec for details.
  • --stacked โ€” Create a stacked branch referring to the source branch. The new branch will depend on the availability of the source branch for all operations.
  • --standalone โ€” Do not use a shared repository, even if available.
  • --switch โ€” Switch the checkout in the current directory to the new branch.
  • --usage โ€” Show usage message and options.
  • --use-existing-dir โ€” By default branch will fail if the target directory exists, but does not already have a control directory. This flag will allow branch to proceed.
  • --verbose, -v โ€” Display more information.

See also: checkout

Create a new branch that is a copy of an existing branch. ๐Ÿ“

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. It just vibes off the name, fr fr. โœจ

To retrieve the branch as of a particular revision, supply the --revision parameter, as in branch foo/bar -r 5.


๐Ÿ’– brz branches [LOCATION]

Options:

  • --help, -h โ€” Show help message.
  • --quiet, -q โ€” Only display errors and warnings.
  • --recursive, -R โ€” Recursively scan for branches rather than just looking in the specified location.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

List the branches available at the current location. ๐Ÿ‘€

This command will print the names of all the branches at the current location. Simple, clean, iconic. ๐Ÿ’…


๐Ÿ”ฅ brz break-lock [LOCATION]

Options:

  • --config โ€” LOCATION is the directory where the config lock is.
  • --force โ€” Do not ask for confirmation before breaking the lock.
  • --help, -h โ€” Show help message.
  • --quiet, -q โ€” Only display errors and warnings.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

Break a dead lock. ๐Ÿ”“

This command breaks a lock on a repository, branch, working directory or config file.

CAUTION: Locks should only be broken when you are sure that the process holding the lock has been stopped. Like, be SO sure. If that process is still alive you're about to cause problems. ๐Ÿ’€

You can get information on what locks are open via the brz info [location] command. ๐Ÿ•ต๏ธโ€โ™€๏ธ

Examples:

brz break-lock
brz break-lock brz+ssh://example.com/brz/foo
brz break-lock --conf ~/.config/breezy

๐Ÿงš brz cat FILENAME

Options:

  • --directory ARG, -d โ€” Branch to operate on, instead of working directory.
  • --filters โ€” Apply content filters to display the convenience form.
  • --help, -h โ€” Show help message.
  • --name-from-revision โ€” The path name in the old tree.
  • --quiet, -q โ€” Only display errors and warnings.
  • --revision ARG, -r โ€” See help revisionspec for details.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

See also: ls

Write the contents of a file as of a given revision to standard output. ๐Ÿ“ค

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. Do NOT just dump binary into your terminal, bestie, your scrollback will never recover. ๐Ÿ˜ญ

โญ brz check [PATH]

Options:

  • --branch โ€” Check the branch related to the current directory.
  • --help, -h โ€” Show help message.
  • --quiet, -q โ€” Only display errors and warnings.
  • --repo โ€” Check the repository related to the current directory.
  • --tree โ€” Check the working tree related to the current directory.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

See also: reconcile

Validate working tree structure, branch consistency and repository history. Vibe check for your data. โœจ

This command checks various invariants about branch and repository storage to detect data corruption or brz bugs.

The working tree and branch checks will only give output if a problem is detected. The output fields of the repository check are:

  • revisions โ€” This is just the number of revisions checked. It doesn't indicate a problem.
  • versionedfiles โ€” This is just the number of versionedfiles checked. It doesn't indicate a problem.
  • unreferenced ancestors โ€” Texts that are ancestors of other texts, but are not properly referenced by the revision ancestry. This is a subtle problem that Breezy can work around.
  • unique file texts โ€” This is the total number of unique file contents seen in the checked revisions. It does not indicate a problem.
  • repeated file texts โ€” This is the total number of repeated texts seen in the checked revisions. Texts can be repeated when their file entries are modified, but the file contents are not. It does not indicate a problem.

If no restrictions are specified, all data that is found at the given location will be checked.

Examples:

Check the tree and branch at foo:

brz check --tree --branch foo

Check only the repository at bar:

brz check --repo bar

Check everything at baz:

brz check baz

๐Ÿ‘‘ brz checkin

Alias for commit, see brz commit. ๐Ÿ’œ

brz checkout [BRANCH_LOCATION] [TO_LOCATION] ๐ŸŽ€

Options:

  • --files-from ARG โ€” grab the file contents from this tree instead, bestie.
  • --hardlink โ€” hard-link the working tree files wherever it's possible to do that. โœจ
  • --help, -h โ€” show the help message. classic.
  • --lightweight โ€” do a lightweight checkout. Lightweight checkouts stay dependent on having access to the branch for every single operation ๐Ÿ˜ญ. Normal checkouts can do normal stuff like diff and status without that access, and they also support local commits. so like, pick wisely.
  • --quiet, -q โ€” only display errors and warnings. silent mode. ๐Ÿคซ
  • --revision ARG, -r โ€” check help revisionspec for the deets.
  • --usage โ€” show the usage message and the options.
  • --verbose, -v โ€” display more information. give me everything.

Alias: co

See also: branch, checkouts, remove-tree, working-trees


Create a new checkout of an existing branch. ๐Ÿ’…

If you leave out BRANCH_LOCATION, checkout will reconstitute a working tree for the branch it finds in .. So this is your moment if you deleted the working tree, or if it literally never got created in the first place โ€” ie. if you pushed the branch to where it lives now using SFTP. ๐ŸŒธ

If you leave out TO_LOCATION, the last component of BRANCH_LOCATION gets used instead. Translation: checkout ../foo/bar will attempt to create ./bar. And if BRANCH_LOCATION has no / or path separator embedded in it, then TO_LOCATION is derived from BRANCH_LOCATION by stripping off a leading scheme or drive identifier, if there is one. Example: checkout lp:foo-bar will attempt to create ./foo-bar. ๐Ÿฆ‹

Wanna retrieve the branch as of a particular revision? Pass the --revision parameter, like this: checkout foo/bar -r 5. Heads up though, that's gonna be immediately out of date โ€” [so you cannot commit] โ€” but it may still be useful (ie. to examine old code. ๐Ÿ‘€)


brz ci ๐ŸŒˆ

Alias for commit, see brz commit.


brz clean-tree ๐Ÿงน

Options:

  • --detritus โ€” delete conflict files, merge and revert backups, and failed selftest dirs.
  • --directory ARG, -d โ€” branch to operate on, instead of the working directory.
  • --dry-run โ€” show the files it would delete instead of actually deleting them. peek first, bestie ๐Ÿ’–
  • --force โ€” do not prompt before deleting. no take-backs.
  • --help, -h โ€” show help message.
  • --ignored โ€” delete all ignored files.
  • --quiet, -q โ€” only display errors and warnings.
  • --unknown โ€” delete files unknown to brz (this is the default).
  • --usage โ€” show usage message and options.
  • --verbose, -v โ€” display more information.

Remove unwanted files from working tree. ๐Ÿ—‘๏ธ

By default, only unknown files get deleted โ€” not ignored ones. And versioned files? Never deleted. Periodt.

There's another class called 'detritus', which includes files emitted by brz during normal operations and selftests. (The value of these files decreases with time. it's giving expiry date ๐Ÿ“)

If no options are specified, unknown files are deleted. Otherwise, the option flags are respected, and they may be combined.

To check what clean-tree is about to do, use --dry-run. ๐Ÿ‘‘


brz clone FROM_LOCATION [TO_LOCATION] ๐Ÿ‘ฏ

Options:

  • --help, -h โ€” show help message.
  • --no-recurse-nested โ€” do not recursively check out nested trees.
  • --quiet, -q โ€” only display errors and warnings.
  • --revision ARG, -r โ€” see help revisionspec for details.
  • --usage โ€” show usage message and options.
  • --verbose, -v โ€” display more information.

Clone a control directory.


brz co ๐Ÿ’ซ

Alias for checkout, see brz checkout.


brz commit [SELECTED...] ๐Ÿ”ฅ

Options:

  • --author ARG โ€” set the author's name, if it's different from the committer.
  • --bugs ARG โ€” link to a related bug. (see brz help bugs).
  • --commit-time ARG โ€” manually set a commit time using commit date format, eg. '2009-10-10 08:00:00 +0100'.
  • --exclude ARG, -x โ€” do not consider changes made to a given path.
  • --file MSGFILE, -F โ€” take commit message from this file.
  • --fixes ARG โ€” mark a bug as being fixed by this revision (see brz help bugs).
  • --help, -h โ€” show help message.
  • --local โ€” perform a local commit in a bound branch. Local commits are not pushed to the master branch until a normal commit is performed.
  • --lossy โ€” when committing to a foreign version control system, do not push data that can not be natively represented.
  • --message ARG, -m โ€” description of the new revision.
  • --quiet, -q โ€” only display errors and warnings.
  • --show-diff, -p โ€” when no message is supplied, show the diff along with the status summary in the message editor.
  • --strict โ€” refuse to commit if there are unknown files in the working tree.
  • --unchanged โ€” commit even if nothing has changed.
  • --usage โ€” show usage message and options.
  • --verbose, -v โ€” display more information.

Aliases: ci, checkin

See also: add, bugs, hooks, uncommit


Commit changes into a new revision. ๐ŸŒŸ

Every commit needs an explanatory message, okay? Usually you do that with the --message option (message straight from the command line) or with the --file option (message from a file). If you give neither of those, an editor pops open and you type the message yourself. And if you wanna see the changed files in the boilerplate text that loads into the editor, use the --show-diff option. ๐ŸŽ€

By default, the whole entire tree gets committed, and whoever's doing the committing is assumed to be the author. But you can override those defaults, and here's exactly how:

Selective commits:

If you specify selected files, only changes to those files get committed. And if you specify a directory, then that directory and literally everything inside it gets committed.

When excludes are given, they take precedence over selected files. Say you wanna commit only the changes within foo, but not the changes within foo/bar:

brz commit foo -x foo/bar

A selective commit after a merge is not yet supported. ๐Ÿ™ˆ

Custom authors:

If the 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, eg. "John Doe <jdoe@example.com>". And if there's more than one author of the change, you can specify the option multiple times โ€” once for each author. ๐Ÿ‘‘

Checks:

A super common mistake is forgetting to add a new file or directory before running the commit command. The --strict option checks for unknown files and aborts the commit if any turn up. More advanced pre-commit checks can be implemented by defining hooks. See brz help hooks for details.

Things to note:

If you accidentally commit the wrong changes, or you make a spelling mistake in the commit message, say โ€” you can use the uncommit command to undo it. See brz help uncommit for details. ๐Ÿ’–

Hooks can also be configured to run after a commit. That lets you trigger updates to external systems like bug trackers. And the --fixes option can be used to record the association between a revision and one or more bugs. See brz help bugs for details. โœจ


brz config [NAME] โš™๏ธ

Options:

  • --all โ€” display all the defined values for the matching options.
  • --directory ARG, -d โ€” branch to operate on, instead of the working directory.
  • --help, -h โ€” show help message.
  • --quiet, -q โ€” only display errors and warnings.
  • --remove โ€” remove the option from the configuration file.
  • --scope ARG โ€” reduce the scope to the specified configuration file.
  • --usage โ€” show usage message and options.
  • --verbose, -v โ€” display more information.

See also: configuration

Display, set or remove a configuration option. ๐ŸŒธ

Displays the active value for the option NAME.

If --all is specified, NAME is interpreted as a regular expression and all matching options are displayed mentioning their scope and without resolving option references in the value). The active value that bzr will take into account is the first one displayed for each option. ๐Ÿ‘€

If NAME isn't given, --all .* is implied (all options are displayed for the current scope).

Setting a value is achieved by using NAME=value without spaces. The value is set in the most relevant scope and can be checked by displaying the option again. ๐Ÿฆ‹

Removing a value is achieved by using --remove NAME.


brz conflicts ๐Ÿ’ฅ

Options:

  • --directory ARG, -d โ€” branch to operate on, instead of the working directory.
  • --help, -h โ€” show help message.
  • --quiet, -q โ€” only display errors and warnings.
  • --text โ€” list paths of files with text conflicts.
  • --usage โ€” show usage message and options.
  • --verbose, -v โ€” display more information.

See also: conflict-types, resolve

List files with conflicts. ๐Ÿ˜ญ

Merge will do its absolute best to combine the changes in two branches, but there are some kinds of problems that only a human can fix. When it runs into those, it will mark a conflict. And a conflict means you need to fix something before you can commit. no pressure bestie.

Conflicts normally get listed as short, human-readable messages. But if --text is supplied, the pathnames of files with text conflicts are listed instead. (This is useful for editing all files with text conflicts. handy!)

Use brz resolve when you have fixed a problem. ๐Ÿซถ


brz copy ๐Ÿ“‹

Alias for cp, see brz cp.

brz cp</p> [NAMES...] ๐Ÿซถ

โœจ Options

  • --help, -h โ€” show the help message, bestie.
  • --quiet, -q โ€” only show errors and warnings. shhh ๐Ÿคซ
  • --usage โ€” show the usage message and the options.
  • --verbose, -v โ€” show more info, spill the tea โ˜•

โœจ Alias

copy ๐Ÿ’–

โœจ What it does

copy a file, that's it, that's the whole vibe.

โœจ Usage

brz cp OLDNAME NEWNAME

brz cp SOURCE... DESTINATION

Soooo if the last argument is a versioned directory, all the other names get copied into it, periodt. Otherwise there's gotta be exactly two arguments and the file gets copied to a new name. no exceptions fr.

๐Ÿšฉ Files cannot be copied between branches. and only files can be copied right now, that's just where we're at. lowkey iconic limitation.

brz del</p> ๐Ÿ’€

it's just an alias for "remove", go see brz remove. bye ๐Ÿซถ


brz deleted</p> ๐Ÿ‘ป

โœจ Options

  • --directory ARG, -d โ€” branch to operate on, instead of the working directory.
  • --help, -h โ€” show the help message.
  • --quiet, -q โ€” only display errors and warnings.
  • --show-ids โ€” show internal object ids (the little secret identifiers, iykyk).
  • --usage โ€” show usage message and options.
  • --verbose, -v โ€” display more information.

โœจ See also

ls, status

โœจ What it does

list the files that got deleted in the working tree ๐Ÿชฆ


brz di</p> ๐Ÿ’…

alias for "diff", see brz diff.


brz dif</p> ๐Ÿ’…

alias for "diff", see brz diff. (yes there are two aliases, we love options ๐Ÿ’–)


brz diff</p> [FILE...] ๐ŸŒˆ

โœจ Options

  • --change ARG, -c โ€” select the changes introduced by the specified revision. see also help revisionspec.
  • --check-style โ€” warn if trailing whitespace or spurious changes have been added ๐Ÿ‘€
  • --color ARG โ€” color mode to use. always: always colorize output (this is the default). auto: only colorize if the terminal supports it and STDOUT is a TTY. never: never colorize. periodt.
  • --context ARG โ€” how many lines of context to show.
  • --diff-options ARG โ€” pass these options to the external diff program.
  • --format ARG, -F โ€” which diff format to use.
  • --help, -h โ€” show help message.
  • --new ARG โ€” branch/tree to compare to.
  • --old ARG โ€” branch/tree to compare from.
  • --prefix ARG, -p โ€” set the prefixes added to old and new filenames, as two values separated by a colon. (eg "old/:new/").
  • --quiet, -q โ€” only display errors and warnings.
  • --revision ARG, -r โ€” see help revisionspec for details.
  • --usage โ€” show usage message and options.
  • --using ARG โ€” use this command to compare files.
  • --verbose, -v โ€” display more information.

โœจ Aliases

di, dif

โœจ See also

status

โœจ What it does

show differences in the working tree, between revisions or between branches โœจ

If you give it no arguments at all, it lists all the changes for the current tree. If you give it files, it only lists the changes in those files. You can compare remote and multiple branches by using the --old and --new options. If you don't provide them, the default for both comes from the first argument (if there is one), or from the current tree if you gave no arguments at all.

brz diff -p1 is literally equivalent to brz diff --prefix old/:new/, and it produces patches suitable for patch -p1. slay.

โš ๏ธ okay important one bestie โ€” when you use the -r argument with a range of revisions, the differences are computed between the two specified revisions. That means the command does not show the changes introduced by the first revision in the range. This is different from how brz log interprets revision ranges, which does include the first revision in the range. don't get got ๐Ÿ’€

โœจ Exit values

1 - changed
2 - unrepresentable changes
3 - error
0 - no change

โœจ Examples

Shows the difference in the working tree versus the last commit:

brz diff

Difference between the working tree and revision 1:

brz diff -r1

Difference between revision 3 and revision 1:

brz diff -r1..3

Difference between revision 3 and revision 1 for branch xxx:

brz diff -r1..3 xxx

The changes introduced by revision 2 (equivalent to -r1..2):

brz diff -c2

To see the changes introduced by revision X:

brz diff -cX

Note that in the case of a merge, the -c option shows the changes compared to the left hand parent. To see the changes against another parent, use:

brz diff -r<chosen_parent>..X

The changes between the current revision and the previous revision (equivalent to -c-1 and -r-2..-1)

brz diff -r-2..

Show just the differences for file NEWS:

brz diff NEWS

Show the differences in working tree xxx for file NEWS:

brz diff xxx/NEWS

Show the differences from branch xxx to this working tree:

brz diff --old xxx

Show the differences between two branches for file NEWS:

brz diff --old xxx --new yyy NEWS

Same as brz diff but prefix paths with old/ and new/:

brz diff --prefix old/:new/

Show the differences using a custom diff program with options:

brz diff --using /usr/bin/diff --diff-options -wu

brz export</p> DEST [BRANCH_OR_SUBDIR] ๐ŸŽ€

โœจ Options

  • --directory ARG, -d โ€” branch to operate on, instead of the working directory.
  • --filters โ€” apply content filters to export the convenient form.
  • --format ARG โ€” type of file to export to.
  • --help, -h โ€” show help message.
  • --per-file-timestamps โ€” set the modification time of files to that of the last revision in which it was changed.
  • --quiet, -q โ€” only display errors and warnings.
  • --recurse-nested โ€” include contents of nested trees.
  • --revision ARG, -r โ€” see help revisionspec for details.
  • --root ARG โ€” name of the root directory inside the exported file.
  • --uncommitted โ€” export the working tree contents rather than that of the last revision.
  • --usage โ€” show usage message and options.
  • --verbose, -v โ€” display more information.

โœจ What it does

export the current or a past revision to a destination directory or archive ๐Ÿ“ฆ

If you don't specify a revision, it exports the last committed revision. cool cool cool.

The format can be an "exporter" name, like tar, tgz, tbz2. If you don't give one, it tries to figure out the format from the extension. If there's no extension found, it exports to a directory (same as --format=dir).

If root is supplied, it gets used as the root directory inside container formats (tar, zip, etc). If you don't supply it, it defaults to the exported filename. The root option does nothing for the dir format, fyi.

If branch is omitted, then the branch containing the current working directory gets used.

๐Ÿšฉ Note: exporting a tree with non-ASCII filenames to zip is not supported. tragic, but real.
=================       =========================
Supported formats       Autodetected by extension
=================       =========================
   dir                         (none)
   tar                          .tar
   tbz2                    .tar.bz2, .tbz2
   tgz                      .tar.gz, .tgz
   zip                          .zip
=================       =========================

brz grep</p> PATTERN [PATH...] ๐Ÿ”

โœจ Options

  • --color WHEN โ€” show match in color. WHEN is never, always or auto.
  • --diff, -p โ€” grep for pattern in the changeset for each revision.
  • --exclude GLOB, -X โ€” skip files whose base name matches GLOB.
  • --files-with-matches, -l โ€” print only the name of each input file in which PATTERN is found.
  • --files-without-match, -L โ€” print only the name of each input file in which PATTERN is not found.
  • --fixed-string, -F โ€” interpret PATTERN as a single fixed string (not a regex).
  • --from-root โ€” search for pattern starting from the root of the branch. (this implies --recursive)
  • --help, -h โ€” show help message.
  • --ignore-case, -i โ€” ignore case distinctions while matching.
  • --include GLOB, -I โ€” search only files whose base name matches GLOB.
  • --levels N โ€” number of levels to display โ€” 0 for all, 1 for collapsed (1 is the default).
  • --line-number, -n โ€” show 1-based line number.
  • --no-recursive โ€” don't recurse into subdirectories. (the default is --recursive)
  • --null, -Z โ€” write an ASCII NUL (\0) separator between output lines rather than a newline.
  • --quiet, -q โ€” only display errors and warnings.
  • --revision ARG, -r โ€” see help revisionspec for details.
  • --usage โ€” show usage message and options.
  • --verbose, -v โ€” display more information.

โœจ What it does

print lines matching PATTERN for the files and revisions you specify ๐ŸŒŸ

This command searches the specified files and revisions for a given pattern. The pattern is specified as a Python regular expression[1]. yes bestie, regex.

If you don't specify a file name, the revisions starting with the current directory get searched recursively. If you don't specify a revision number, the working copy gets searched. To search the last committed revision, use the -r -1 or -r last:1 option โœจ

Unversioned files are not searched unless you explicitly specify them on the command line. Unversioned directories are not searched either. (typo in the original, we keep it, no we're not telling you which one ๐Ÿ˜Œ)

When searching a pattern, the output shows up in the filepath:string format. If you explicitly search a revision, the output shows as filepath~N:string, where N is the revision number.

--include and --exclude can be used to search only (or exclude from the search) files whose base name matches the specified Unix style GLOB pattern. The GLOB pattern can use *, ?, and [...] as wildcards, and \\ to quote a wildcard or backslash character literally. Note that the glob pattern is not a regular expression, don't mix them up ๐Ÿ’…

[1] http://docs.python.org/library/re.html#regular-expression-syntax

๐Ÿ’– brz help ๐Ÿ’–

brz help [TOPIC]

Options:

  • --help, -h โ€” shows you the help message, bestie
  • --long โ€” spills the tea on every single command, no skips
  • --quiet, -q โ€” only errors and warnings, keep it minimal
  • --usage โ€” shows the usage message and the options
  • --verbose, -v โ€” more info, more vibes

Aliases: ?, --help, -?, -h

See also: topics

Show help on a command or other topic. That's it, that's the whole thing โœจ


๐Ÿšซ brz ignore ๐Ÿšซ

brz ignore [NAME_PATTERN...]

Options:

  • --default-rules โ€” displays the default ignore rules that brz uses
  • --directory ARG, -d โ€” branch to operate on, instead of the working directory
  • --help, -h โ€” show help message
  • --quiet, -q โ€” only display errors and warnings
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” display more information

See also: ignored, patterns, status

Ignore specified files or patterns. Iconic behaviour honestly.

Run brz help patterns for the full deets on the syntax of patterns, iykyk.

If a .bzrignore file does not exist, the ignore command will create one and add the specified files or patterns to the newly created file. The ignore command will also automatically add the .bzrignore file to be versioned. (Creating a .bzrignore file without using the ignore command will require an explicit add command โ€” the audacity, right?)

To remove patterns from the ignore list, edit the .bzrignore file. After adding, editing or deleting that file โ€” either indirectly by using this command or directly by using an editor โ€” be sure to commit it. Fr fr, don't forget ๐Ÿ’…

Breezy also supports a global ignore file ~/.config/breezy/ignore. On Windows the global ignore file can be found in the application data directory as C:\Documents and Settings\<user>\Application Data\Breezy\3.0\ignore. Global ignores are not touched by this command. The global ignore file can be edited directly using an editor.

Patterns prefixed with '!' are exceptions to ignore patterns and take precedence over regular ignores. Such exceptions are used to specify files that should be versioned which would otherwise be ignored.

Patterns prefixed with '!!' act as regular ignore patterns, but have precedence over the '!' exception patterns.

Notes:

  • Ignore patterns containing shell wildcards must be quoted from the shell on Unix.
  • Ignore patterns starting with "#" act as comments in the ignore file. To ignore patterns that begin with that character, use the "RE:" prefix.

Examples:

Ignore the top level Makefile:

brz ignore ./Makefile

Ignore .class files in all directories...:

brz ignore "*.class"

...but do not ignore "special.class":

brz ignore "!special.class"

Ignore files whose name begins with the "#" character:

brz ignore "RE:^#"

Ignore .o files under the lib directory:

brz ignore "lib/**/*.o"

Ignore .o files under the lib directory:

brz ignore "RE:lib/.*\.o"

Ignore everything but the "debian" toplevel directory:

brz ignore "RE:(?!debian/).*"

Ignore everything except the "local" toplevel directory, but always ignore autosave files ending in ~, even under local/:

brz ignore "*"
brz ignore "!./local"
brz ignore "!!*~"

๐Ÿ•ต๏ธ brz ignored ๐Ÿ•ต๏ธ

brz ignored

Options:

  • --directory ARG, -d โ€” branch to operate on, instead of the working directory
  • --help, -h โ€” show help message
  • --quiet, -q โ€” only display errors and warnings
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” display more information

See also: ignore, ls

List ignored files and the patterns that matched them. The receipts, basically ๐Ÿงพ

List all the ignored files and the ignore pattern that caused the file to be ignored.

Alternatively, to list just the files:

brz ls --ignored

๐Ÿ“ฆ brz import ๐Ÿ“ฆ

brz import SOURCE [TREE]

Options:

  • --help, -h โ€” show help message
  • --quiet, -q โ€” only display errors and warnings
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” display more information

Import sources from a directory, tarball or zip file.

This command will import a directory, tarball or zip file into a bzr tree, replacing any versioned files already present. If a directory is specified, it is used as the target. If the directory does not exist, or is not versioned, it is created.

Tarballs may be gzip or bzip2 compressed. This is autodetected โ€” it just knows โœจ

If the tarball or zip has a single root directory, that directory is stripped when extracting the tarball. This is not done for directories.


๐Ÿ” brz info ๐Ÿ”

brz info [LOCATION]

Options:

  • --help, -h โ€” show help message
  • --quiet, -q โ€” only display errors and warnings
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” display more information

See also: repositories, revno, working-trees

Show information about a working tree, branch or repository.

This command will show all known locations and formats associated to the tree, branch or repository.

In verbose mode, statistical information is included with each report. To see extended statistic information, use a verbosity level of 2 or higher by specifying the verbose option multiple times, e.g. -vv. Stack 'em up bestie ๐Ÿซถ

Branches and working trees will also report any missing revisions.

Examples:

Display information on the format and related locations:

brz info

Display the above together with extended format information and basic statistics (like the number of files in the working tree and number of revisions in the branch and repository):

brz info -v

Display the above together with number of committers to the branch:

brz info -vv

๐ŸŒฑ brz init ๐ŸŒฑ

brz init [LOCATION]

Options:

  • --append-revisions-only โ€” never change revnos or the existing log. Append revisions to it only.
  • --create-prefix โ€” create the path leading up to the branch if it does not already exist.
  • --format ARG โ€” specify a format for this branch. See "help formats" for a full list.
  • --2a โ€” format for the bzr 2.0 series.
  • --bzr โ€” format for the bzr 2.0 series.
  • --default โ€” format for the bzr 2.0 series.
  • --git โ€” GIT repository.
  • --git-bare โ€” bare GIT repository (no working tree).
  • --help, -h โ€” show help message
  • --no-tree โ€” create a branch without a working tree.
  • --quiet, -q โ€” only display errors and warnings
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” display more information

See also: branch, checkout, init-shared-repository

Make a directory into a versioned branch. Baby's first branch energy ๐Ÿ’–

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 brz checkout.

Recipe for importing a tree of files:

cd ~/project
brz init
brz add .
brz status
brz commit -m "imported project"

๐Ÿ” brz init-repo ๐Ÿ”

Alias for "init-shared-repository", see "brz init-shared-repository".


๐Ÿ” brz init-shared-repo ๐Ÿ”

Alias for "init-shared-repository", see "brz init-shared-repository".


๐Ÿ›๏ธ brz init-shared-repository ๐Ÿ›๏ธ

brz init-shared-repository LOCATION

Options:

  • --format ARG โ€” specify a format for this repository. See "brz help formats" for details.
  • --2a โ€” format for the bzr 2.0 series.
  • --bzr โ€” format for the bzr 2.0 series.
  • --default โ€” format for the bzr 2.0 series.
  • --git โ€” GIT repository.
  • --git-bare โ€” bare GIT repository (no working tree).
  • --help, -h โ€” show help message
  • --no-trees โ€” branches in the repository will default to not having a working tree.
  • --quiet, -q โ€” only display errors and warnings
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” display more information

Aliases: init-shared-repo, init-repo

See also: branch, checkout, init, repositories

Create a shared repository for branches to share storage space. Sharing is caring, periodt ๐Ÿ‘‘

New branches created under the repository directory will store their revisions in the repository, not in the branch directory. For branches with shared history, this reduces the amount of storage needed and speeds up the creation of new branches. Efficiency slay.

If the --no-trees option is given then the branches in the repository will not have working trees by default. They will still exist as directories on disk, but they will not have separate copies of the files at a certain revision. This can be useful for repositories that store branches which are interacted with through checkouts or remote branches, such as on a server.

Examples:

Create a shared repository holding just branches:

brz init-shared-repo --no-trees repo
brz init repo/trunk

Make a lightweight checkout elsewhere:

brz checkout --lightweight repo/trunk trunk-checkout
cd trunk-checkout
(add files here)

๐Ÿงฉ brz join ๐Ÿงฉ

brz join TREE

Options:

  • --help, -h โ€” show help message
  • --quiet, -q โ€” only display errors and warnings
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” display more information

See also: split

Combine a tree into its containing tree.

This command requires the target tree to be in a rich-root format.

The TREE argument should be an independent tree, inside another tree, but not part of it. (Such trees can be produced by "brz split", but also by running "brz branch" with the target inside a tree.)

The result is a combined tree, with the subtree no longer an independent part. This is marked as a merge of the subtree into the containing tree, and all history is preserved. Nothing gets lost, we love to see it ๐Ÿ’œ

brz launchpad-login [NAME]

Options:

  • --help, -h โ€” show the help message ๐Ÿ’–
  • --no-check โ€” don't check that the user name is actually valid (living dangerously, bestie)
  • --quiet, -q โ€” only display errors and warnings
  • --service-root ARG โ€” which Launchpad service root to connect to
  • --usage โ€” show the usage message and options
  • --verbose, -v โ€” display more information

Alias: lp-login ๐ŸŽ€

Show or set your Launchpad user ID.

So here's the tea: when you're talking to Launchpad, some commands literally need to know your Launchpad user ID. This command is the one that sets it or shows it โ€” whichever you need. It's the user ID Bazaar will use for that communication. โœจ

Examples:

Show the Launchpad ID of the current user:

brz launchpad-login

Set the Launchpad ID of the current user to bob:

brz launchpad-login bob

brz launchpad-logout

Options:

  • --help, -h โ€” show the help message ๐Ÿ’–
  • --quiet, -q โ€” only display errors and warnings
  • --usage โ€” show the usage message and options
  • --verbose, -v โ€” display more information

Alias: lp-logout ๐Ÿฆ‹

Unset the Launchpad user ID.

Same deal as before โ€” some Launchpad commands need your user ID, and this one logs you out. What that means practically: communication with Launchpad happens over HTTPS, and it won't need one of your SSH keys to be available. Say bye ๐Ÿ‘‹


brz launchpad-open [LOCATION]

Options:

  • --dry-run โ€” do not actually open the browser, just say the URL we would use ๐Ÿซถ
  • --help, -h โ€” show the help message ๐Ÿ’–
  • --quiet, -q โ€” only display errors and warnings
  • --usage โ€” show the usage message and options
  • --verbose, -v โ€” display more information

Alias: lp-open ๐ŸŒธ

Open a Launchpad branch page in your web browser. That's it, that's the whole job. โœจ


Options:

  • --help, -h โ€” show the help message ๐Ÿ’–
  • --quiet, -q โ€” only display errors and warnings
  • --usage โ€” show the usage message and options
  • --verbose, -v โ€” display more information

Hardlink matching files to another tree.

Important deets: only files with identical content and the same execute bit will be linked. No mismatches allowed, it's picky like that ๐Ÿ’…


brz log [FILE...]

Options:

  • --authors ARG โ€” what names to list as authors โ€” first, all or committer
  • --change ARG, -c โ€” show just the specified revision. See also help revisionspec ๐Ÿ”
  • --exclude-common-ancestry โ€” display only the revisions that are not part of both ancestries (requires -rX..Y)
  • --forward โ€” show from oldest to newest
  • --help, -h โ€” show the help message ๐Ÿ’–
  • --include-merged โ€” show merged revisions like --levels 0 does
  • --levels N, -n โ€” number of levels to display โ€” 0 for all, 1 for flat
  • --limit N, -l โ€” limit the output to the first N revisions
  • --log-format ARG โ€” use the specified log format
  • --gnu-changelog โ€” the format used by GNU ChangeLog files
  • --line โ€” log format with one line per revision
  • --long โ€” detailed log format
  • --short โ€” moderately short log format
  • --match ARG, -m โ€” show revisions whose properties match this expression
  • --match-author ARG โ€” show revisions whose authors match this expression
  • --match-bugs ARG โ€” show revisions whose bugs match this expression
  • --match-committer ARG โ€” show revisions whose committer matches this expression
  • --match-message ARG โ€” show revisions whose message matches this expression
  • --omit-merges โ€” do not report commits with more than one parent
  • --quiet, -q โ€” only display errors and warnings
  • --revision ARG, -r โ€” see help revisionspec for the details
  • --show-diff, -p โ€” show the changes made in each revision as a patch
  • --show-ids โ€” show internal object ids
  • --signatures โ€” show digital signature validity
  • --timezone ARG โ€” display timezone as local, original, or utc
  • --usage โ€” show the usage message and options
  • --verbose, -v โ€” show the files changed in each revision

See also: log-formats, revisionspec

Show the historical log for a branch or a subset of a branch. ๐Ÿ‘‘

log is brz's default tool for exploring the history of a branch โ€” it's giving main character energy for real. The branch you want comes from the first parameter. And if you pass no parameters at all? It logs the branch containing the working directory. Here are some simple examples:

brz log                       log the current branch
brz log foo.py                log a file in its branch
brz log http://server/branch  log a branch on a server

The filtering, the ordering, and the info shown for each revision โ€” all controllable, all explained below. By default, every revision is shown sorted (topologically) so newer revisions appear before older ones, and descendants always appear before ancestors. If merged revisions are displayed, they're shown indented under the revision in which they were merged. ๐Ÿ’…

Output control:

The log format controls how the info about each revision is displayed. The standard log formats are called long, short and line. The default is long. See brz help log-formats for more details on log formats.

These options control what info gets displayed:

  -l N        display a maximum of N revisions
  -n N        display N levels of revisions (0 for all, 1 for collapsed)
  -v          display a status summary (delta) for each revision
  -p          display a diff (patch) for each revision
  --show-ids  display revision-ids (and file-ids), not just revnos

Heads up: the default number of levels to display is a function of the log format. If you don't use the -n option, the standard log formats show just the top level (mainline).

Status summaries show up using status flags like A, M, etc. Want the changes explained in actual words like added and modified instead? Use the -vv option. ๐Ÿซถ

Ordering control:

To display revisions from oldest to newest, use the --forward option. In most cases, using this option barely dents the total time taken to produce a log โ€” though --forward does not incrementally display revisions like --reverse does when it can. Noted. ๐Ÿ“

Revision filtering:

The -r option specifies what revision or range of revisions to filter against. The various forms:

  -rX      display revision X
  -rX..    display revision X and later
  -r..Y    display up to and including revision Y
  -rX..Y   display from X to Y inclusive

See brz help revisionspec for details on how to specify X and Y. Some common examples:

  -r-1                show just the tip
  -r-10..             show the last 10 mainline revisions
  -rsubmit:..         show what's new on this branch
  -rancestor:path..   show changes since the common ancestor of this
                      branch and the one at location path
  -rdate:yesterday..  show changes since yesterday

When logging a range of revisions using -rX..Y, the log starts at revision Y and searches back in history through the primary ("left-hand") parents until it finds X. When logging just the top level (using -n1), an error is reported if X is not found along the way. If multi-level logging is used (-n0), X may be a nested merge revision and the log will be truncated accordingly. ๐Ÿงš

Path filtering:

If parameters are given and the first one is not a branch, the log gets filtered to show only those revisions that changed the nominated files or directories.

Filenames are interpreted within their historical context. To log a deleted file, specify a revision range so that the file existed at the end or start of the range.

Historical context also matters when you're interpreting pathnames of renamed files/directories. Consider this example:

  • revision 1: add tutorial.txt
  • revision 2: modify tutorial.txt
  • revision 3: rename tutorial.txt to guide.txt; add tutorial.txt

In this case:

  • brz log guide.txt will log the file added in revision 1
  • brz log tutorial.txt will log the new file added in revision 3
  • brz log -r2 -p tutorial.txt will show the changes made to the original file in revision 2.
  • brz log -r2 -p guide.txt will display an error message as there was no file called guide.txt in revision 2.

Renames are always followed by log. By design, there's no need to explicitly ask for this โ€” and no way to stop logging a file back until it was last renamed. That's just how it is ๐Ÿ’€

Other filtering:

The --match option finds revisions that match a regular expression in a commit message, committer, author or bug. Specifying the option several times will match any of the supplied expressions. --match-author, --match-bugs, --match-committer and --match-message can be used to only match a specific field. ๐ŸŽฏ

Tips & tricks:

GUI tools and IDEs are often better at exploring history than command line tools โ€” you may prefer qlog from qbzr, or the Loggerhead web interface. See the Breezy Plugin Guide https://www.breezy-vcs.org/doc/plugins/en/ and http://wiki.breezy-vcs.org/IDEIntegration.

You may find it useful to add the aliases below to breezy.conf:

[ALIASES]
tip = log -r-1
top = log -l10 --line
show = log -v -p

brz tip will then show the latest revision, while brz top will show the last 10 mainline revisions. To see the details of a particular revision X, brz show -rX. โœจ

And if you're interested in looking deeper into a particular merge X, use brz log -n0 -rX. ๐Ÿฆ‹

Not me pulling up to the <bold>brz log -v</bold> situation again, but bestie, real talk: running brz log -v on a branch with lots of history is currently very slow. Like, "buffering in 2009" slow. There's a fix under development, but with or without that fix, the move is: give a revision range whenever you use the -v option. Do that. Your future self will thank you. ๐Ÿ’…

Okay so brz also has a generic full-text matching plugin called brz-search, and it can find revisions matching user names, commit messages, etc. And among other features? This plugin can find all the revisions containing a list of words but not others. Iconic, honestly. โœจ

And when you're exploring non-mainline history on big-big projects with deep history, the performance of log gets massively upgraded if you install the historycache plugin. What does it do? It buffers historical information, trading disk space for faster speed. Storage for speed, the oldest trade in the game. ๐Ÿซถ


๐ŸŒธ brz lp-find-proposal

โœจ OPTIONS โœจ

  • --help, -h โ€” Show help message.
  • --quiet, -q โ€” Only display errors and warnings.
  • --revision ARG, -r โ€” See help revisionspec for details.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

๐Ÿ’– DESCRIPTION ๐Ÿ’–

Find the proposal to merge this revision. That's the whole vibe.

It finds the merge proposal(s) that discussed landing the specified revision. Big caveat though, no cap: this only works if the merged_revno was recorded for the merge proposal. (Yes, the original says "if the if" โ€” we love a typo era. ๐Ÿ™ˆ) The proposal(s) get opened in a web browser, so get ready for tabs, bestie.

Only the revision you specified is searched for. If you wanna find the mainline revision that merged it into mainline, use the mainline revision spec.

So, to find the merge proposal that reviewed line 1 of README:

brz lp-find-proposal -r mainline:annotate:README:1

๐Ÿฆ‹ brz lp-login

Alias for launchpad-login, see brz launchpad-login. That's it, that's the whole thing. Go read that one. ๐Ÿ’œ


๐Ÿฆ‹ brz lp-logout

Alias for launchpad-logout, see brz launchpad-logout. Same energy, still an alias. ๐ŸŒธ


๐Ÿฆ‹ brz lp-open

Alias for launchpad-open, see brz launchpad-open. Three for three on the alias train. ๐ŸŽ€


๐Ÿ‘‘ brz ls [PATH]

โœจ OPTIONS โœจ

  • --directory ARG, -d โ€” Branch to operate on, instead of working directory.
  • --from-root โ€” Print paths relative to the root of the branch.
  • --help, -h โ€” Show help message.
  • --ignored, -i โ€” Print ignored files.
  • --kind ARG, -k โ€” List entries of a particular kind: file, directory, symlink, tree-reference.
  • --null, -0 โ€” Use an ASCII NUL (\0) separator rather than a newline.
  • --quiet, -q โ€” Only display errors and warnings.
  • --recursive, -R โ€” Recurse into subdirectories.
  • --revision ARG, -r โ€” See help revisionspec for details.
  • --show-ids โ€” Show internal object ids.
  • --unknown, -u โ€” Print unknown files.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.
  • --versioned, -V โ€” Print versioned files.

See also: cat, status

๐Ÿ’– DESCRIPTION ๐Ÿ’–

List files in a tree.</puruple> Short, sweet, slays. ๐ŸŒˆ


๐Ÿ”ฅ brz merge [LOCATION]

โœจ OPTIONS โœจ

  • --change ARG, -c โ€” Select changes introduced by the specified revision. See also help revisionspec.
  • --directory ARG, -d โ€” Branch to merge into, rather than the one containing the working directory.
  • --force โ€” Merge even if the destination tree has uncommitted changes.
  • --help, -h โ€” Show help message.
  • --interactive, -i โ€” Select changes interactively.
  • --merge-type ARG โ€” Select a particular merge algorithm.
    • --diff3 โ€” Merge using external diff3.
    • --lca โ€” LCA-newness merge.
    • --merge3 โ€” Native diff3-style merge.
    • --weave โ€” Weave-based merge.
  • --preview โ€” Instead of merging, show a diff of the merge.
  • --pull โ€” If the destination is already completely merged into the source, pull from the source rather than merging. When this happens, you do not need to commit the result.
  • --quiet, -q โ€” Only display errors and warnings.
  • --remember โ€” Remember the specified location as a default.
  • --reprocess โ€” Reprocess to reduce spurious conflicts.
  • --revision ARG, -r โ€” See help revisionspec for details.
  • --show-base โ€” Show base revision text in conflicts.
  • --uncommitted โ€” Apply uncommitted changes from a working copy, instead of branch changes.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

See also: remerge, send, status-flags, update

๐Ÿ’– DESCRIPTION ๐Ÿ’–

Perform a three-way merge. The main character of version control moves, honestly. ๐Ÿ‘‘

So where can the source of the merge come from? Either:

  1. A branch, OR
  2. A path to a file containing a merge directive generated with brz send.

If you specify neither, the default is the upstream branch, or the branch most recently merged using --remember. And plot twist: the source of the merge may also be specified as a path to a file in another branch โ€” in which case only the modifications to that file get merged into the current working tree. Small merge, tiny merge, niche merge. ๐Ÿฆ‹

When merging from a branch, by default brz tries to merge in all new work from the other branch, automatically figuring out an appropriate base revision. If that fails? You may need to give an explicit base. Not the algorithm's fault, it's just ~life~.

To pick a different ending revision, pass --revision OTHER. brz will try to merge in all new work up to and including revision OTHER.

If you specify two values, --revision BASE..OTHER, then only revisions BASE through OTHER, excluding BASE but including OTHER, will be merged. If this causes some revisions to be skipped โ€” like, if the destination branch does not already contain revision BASE โ€” a merge like that is commonly called a "cherrypick". And here's the caveat bestie, listen up: unlike a normal merge, Breezy does not currently track cherrypicks. The changes look like a normal commit, and the history of the changes from the other branch is not stored in the commit. So act accordingly. ๐Ÿ˜ญ

Revision numbers are always relative to the source branch. Always. No exceptions, periodt.

Merge will do its best to combine the changes in two branches, but some kinds of problems can only be fixed by a human. When it hits one of those, it will mark a conflict. A conflict means you need to fix something before you can commit. That's the deal.

Use brz resolve when you've fixed a problem. See also brz conflicts.

If there's no default branch set, the first merge will set it (use --no-remember to avoid setting it). After that, you can omit the branch and it'll use the default. To change the default, use --remember. And heads up: the value will only be saved if the remote location can be accessed. If it can't be reached, nothing gets remembered, sorry. ๐Ÿ’€

The results of the merge get placed into the destination working directory, where you can review them (with brz diff), test them, and then commit to record the result of the merge. Review โ†’ test โ†’ commit. That's the pipeline.

merge refuses to run if there are any uncommitted changes, unless --force is given. If --force is given, then the changes from the source will be merged with the current working tree, including any uncommitted changes in the tree. And --force can also be used to create a merge revision which has more than two parents. Polyamory but for commits. ๐Ÿซถ

If you want to merge changes from the working tree of the other branch without merging any committed revisions, pass the --uncommitted option.

To select only some changes to merge, use merge -i, which will prompt you to apply each diff hunk and file change, similar to shelve. Interactive merge, we love her. โœจ

Examples

To merge all new revisions from brz.dev:

brz merge ../brz.dev

To merge changes up to and including revision 82 from brz.dev:

brz merge -r 82 ../brz.dev

To merge the changes introduced by 82, without previous changes:

brz merge -r 81..82 ../brz.dev

To apply a merge directive contained in /tmp/merge:

brz merge /tmp/merge

To create a merge revision with three parents from two branches feature1a and feature1b:

brz merge ../feature1a
brz merge ../feature1b --force
brz commit -m 'revision with three parents'

๐ŸŒˆ brz missing [OTHER_BRANCH]

โœจ OPTIONS โœจ

  • --directory ARG, -d โ€” Branch to operate on, instead of working directory.
  • --help, -h โ€” Show help message.
  • --include-merged โ€” Show all revisions in addition to the mainline ones.
  • --log-format ARG โ€” Use specified log format.
    • --gnu-changelog โ€” Format used by GNU ChangeLog files.
    • --line โ€” Log format with one line per revision.
    • --long โ€” Detailed log format.
    • --short โ€” Moderately short log format.
  • --mine-only โ€” Display changes in the local branch only.
  • --my-revision ARG โ€” Filter on local branch revisions (inclusive). See help revisionspec for details.
  • --other โ€” Same as --theirs-only.
  • --quiet, -q โ€” Only display errors and warnings.
  • --reverse โ€” Reverse the order of revisions.
  • --revision ARG, -r โ€” Filter on other branch revisions (inclusive). See help revisionspec for details.
  • --show-ids โ€” Show internal object ids.
  • --theirs-only โ€” Display changes in the remote branch only.
  • --this โ€” Same as --mine-only.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

See also: merge, pull

๐Ÿ’– DESCRIPTION ๐Ÿ’–

Show unmerged/unpulled revisions between two branches. The "what am I missing" of it all. ๐Ÿ”

OTHER_BRANCH may be local or remote โ€” both are welcome here.

To filter on a range of revisions, you can use the command -r begin..end. -r revision requests a specific revision, and -r ..end or -r begin.. are also valid. Ranges are flexible like that, bestie. ๐ŸŽ€

Exit values

1 - some missing revisions
0 - no missing revisions

So if it exits 1, yeah, there's stuff missing. If it exits 0, you're fully caught up. Simple. Clean. Iconic.

Examples

Determine the missing revisions between this and the branch at the remembered pull location:

brz missing

Determine the missing revisions between this and another branch:

brz missing http://server/branch

Determine the missing revisions up to a specific revision on the other branch:

brz missing -r ..-10

Determine the missing revisions up to a specific revision on this branch:

brz missing --my-revision ..-10

๐ŸŒธ brz mkdir DIR...

Options:

  • --help, -h โ€” shows you the help message, bestie ๐Ÿ’–
  • --parents, -p โ€” no error if it already exists, and it'll make the parent directories as needed. so forgiving, we love that.
  • --quiet, -q โ€” only shows errors and warnings. silent-ish era.
  • --usage โ€” shows the usage message and options.
  • --verbose, -v โ€” displays more information.

Makes a brand-new versioned directory. โœจ

It's literally the same thing as creating the directory and then adding it โ€” two steps, one command, iconic behaviour. ๐Ÿ’…


๐Ÿฆ‹ brz move

Alias for mv, so go look at brz mv. Same vibe, shorter name. ๐Ÿซถ


brz mv [NAMES...]

Options:

  • --after โ€” move only the brz identifier of the file, for when the file has already been moved. like, the deed is done, we're just updating the receipts. ๐Ÿ™ˆ
  • --auto โ€” automatically guess renames.
  • --dry-run โ€” avoids making changes while it's guessing renames. a little sneak peek, no commitment.
  • --help, -h โ€” shows the help message.
  • --quiet, -q โ€” only shows errors and warnings.
  • --usage โ€” shows the usage message and options.
  • --verbose, -v โ€” displays more information.

Aliases: move, rename

Moves or renames a file. โœจ

Usage:

brz mv OLDNAME NEWNAME

brz mv SOURCE... DESTINATION

If that last argument is a versioned directory, then all the other names get moved into it. Otherwise you need exactly two arguments, and the file gets changed to a new name. no extra, no fewer. periodt. ๐Ÿ’…

Now the plot twist: if OLDNAME does not exist on the filesystem but is versioned, and NEWNAME does exist on the filesystem but is not versioned, mv assumes you manually moved the file yourself and only updates its internal inventory to reflect that change. Same deal when you're moving many SOURCE files to a DESTINATION. ๐Ÿ˜Œ

๐Ÿšซ Files cannot be moved between branches. not a vibe, not allowed, don't try it.

๐ŸŽ€ brz nick [NICKNAME]

Options:

  • --directory ARG, -d โ€” branch to operate on, instead of the working directory.
  • --help, -h โ€” shows the help message.
  • --quiet, -q โ€” only shows errors and warnings.
  • --usage โ€” shows the usage message and options.
  • --verbose, -v โ€” displays more information.

See also: info

Prints or sets the branch nickname. ๐Ÿท๏ธ

If it's unset, the colocated branch name gets used for colocated branches, and the branch directory name gets used for other branches. To just print the current nickname, run it with no argument at all. ๐Ÿ’–

Bound branches use the nickname of their master branch โ€” unless it's been set locally. ๐Ÿ‘‘


๐Ÿงš brz pack [BRANCH_OR_REPO]

Options:

  • --clean-obsolete-packs โ€” deletes obsolete packs to save disk space.
  • --help, -h โ€” shows the help message.
  • --quiet, -q โ€” only shows errors and warnings.
  • --usage โ€” shows the usage message and options.
  • --verbose, -v โ€” displays more information.

See also: repositories

Compresses the data within a repository. ๐Ÿ—œ๏ธโœจ

This operation compresses the data inside a bazaar repository. And because bazaar supports automatic packing of repositories, you normally don't need to do this manually. it just... happens. main character energy, honestly.

During the pack operation, bazaar takes a backup of the existing repository data (i.e. the pack files). That backup eventually gets removed by bazaar automatically once it's safe to do so. If you wanna save disk space by removing those backed-up pack files yourself, you can use the --clean-obsolete-packs option. ๐Ÿงน

โš ๏ธ Warning: if you use --clean-obsolete-packs and your machine crashes during or immediately after repacking, you may be left in a state where the deletion has been written to disk but the new packs have not been. In that case, the repository may be unusable. ๐Ÿ˜ญ please be careful.

brz patch [FILENAME]

Options:

  • --help, -h โ€” shows the help message.
  • --quiet, -q โ€” only shows errors and warnings.
  • --silent โ€” suppresses chatter. ๐Ÿคซ
  • --strip ARG, -p โ€” strips the smallest prefix containing num leading slashes from filenames.
  • --usage โ€” shows the usage message and options.
  • --verbose, -v โ€” displays more information.

Applies a named patch to the current tree. ๐Ÿฉน๐Ÿ’–


โญ brz ping LOCATION

Options:

  • --help, -h โ€” shows the help message.
  • --quiet, -q โ€” only shows errors and warnings.
  • --usage โ€” shows the usage message and options.
  • --verbose, -v โ€” displays more information.

Pings a Bazaar smart server. ๐Ÿ“ก

Basically it sends a 'hello' request to the location you give it, using the brz smart protocol, and then reports back the response. like a lil "u up?" to the server. ๐Ÿ‘‹


๐ŸŒˆ brz plugins

Options:

  • --help, -h โ€” shows the help message.
  • --quiet, -q โ€” only shows errors and warnings.
  • --usage โ€” shows the usage message and options.
  • --verbose, -v โ€” displays more information.

Lists the installed plugins. ๐Ÿงฉโœจ

This command displays the list of installed plugins, including the version of each plugin and a short description of each one. โœจ

--verbose shows you the path where each plugin is located. ๐Ÿ“‚

A plugin is an external component for Breezy that extends the revision control system, by adding or replacing code in Breezy. Plugins can do a whole variety of things โ€” including overriding commands, adding new commands, providing additional network transports, and customizing log output. the range?? unmatched. ๐Ÿ‘‘

See the Breezy Plugin Guide at https://www.breezy-vcs.org/doc/plugins/en/ for further information on plugins, including where to find them and how to install them. There are also instructions there on how to write new plugins using the Python programming language. ๐Ÿ๐Ÿ’…


๐Ÿ’œ brz praise

Alias for annotate, so go see brz annotate. ๐Ÿซก


๐Ÿ”ฅ brz pull [LOCATION]

Options:

  • --directory ARG, -d โ€” branch to pull into, rather than the one containing the working directory.
  • --help, -h โ€” shows the help message.
  • --local โ€” performs a local pull in a bound branch. Local pulls are not applied to the master branch.
  • --overwrite โ€” ignores differences between branches and overwrites unconditionally. brutal. love it.
  • --overwrite-tags โ€” overwrites tags only.
  • --quiet, -q โ€” only shows errors and warnings.
  • --remember โ€” remembers the specified location as a default.
  • --revision ARG, -r โ€” see "help revisionspec" for details.
  • --show-base โ€” show base revision text in conflicts.
  • --usage โ€” shows the usage message and options.
  • --verbose, -v โ€” shows logs of pulled revisions.

See also: push, send, status-flags, update

Turns this branch into a mirror of another branch. ๐Ÿชžโœจ

By default, 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 hasn't been merged (directly or indirectly) into the parent. ๐Ÿ˜ฌ

If the branches have diverged, you can use 'brz merge' to integrate the changes from one into the other. Once one branch has merged, the other should be able to pull it again. teamwork, bestie. ๐Ÿซถ

If you wanna replace your local changes and just want your branch to match the remote one, use pull --overwrite. This will work even if the two branches have diverged. ๐Ÿ’ฅ

If there's no default location set, the first pull will set it (use --no-remember to avoid setting it). After that, you can omit the location and it'll use the default. To change the default, use --remember. The value will only be saved if the remote location can be accessed. ๐Ÿ‘€

The --verbose option displays the revisions pulled using the log_format configuration option. You can use a different format by overriding it with -Olog_format=<other_format>. ๐Ÿ’…

๐Ÿ“ 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 brz send.

๐Ÿ‘‘ brz push [LOCATION]

Options:

  • --create-prefix โ€” creates the path leading up to the branch if it doesn't already exist.
  • --directory ARG, -d โ€” branch to push from, rather than the one containing the working directory.
  • --help, -h โ€” shows the help message.
  • --lossy โ€” allows a lossy push, i.e. dropping metadata that can't be represented in the target. yikes, but okay.
  • --no-tree โ€” don't populate the working tree, even for protocols that support it.
  • --overwrite โ€” ignores differences between branches and overwrites unconditionally.
  • --overwrite-tags โ€” overwrites tags only.
  • --quiet, -q โ€” only shows errors and warnings.
  • --remember โ€” remembers the specified location as a default.
  • --revision ARG, -r โ€” see "help revisionspec" for details.
  • --stacked โ€” creates a stacked branch that references the public location of the parent branch.
  • --stacked-on ARG โ€” creates a stacked branch that refers to another branch for the commit history. Only the work not present in the referenced branch is included in the branch created.
  • --strict โ€” refuses to push if there are uncommitted changes in the working tree. --no-strict disables the check.
  • --usage โ€” shows the usage message and options.
  • --use-existing-dir โ€” by default, push will fail if the target directory exists but doesn't already have a control directory. This flag lets push proceed anyway.
  • --verbose, -v โ€” displays more information.

See also: pull, update, working-trees

Updates a mirror of this branch. ๐Ÿชž๐Ÿ’จ

The target branch will not have its working tree populated, because that's both expensive and not supported on remote file systems. we're not doing all that. ๐Ÿ™…

Some smart servers or protocols may put the working tree in place in the future. maybe. someday. who knows. ๐Ÿ”ฎ

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 hasn't been merged (directly or indirectly) by the source branch. ๐Ÿ˜ตโ€๐Ÿ’ซ

If the branches have diverged, you can use 'brz push --overwrite' to replace the other branch completely, discarding its unmerged changes. ๐Ÿ’€ gone, deleted, no takebacks.

If you want to make sure you've got the different changes that live in the other branch, do a merge (peep brz help merge) from that other branch, and then commit it. After that you'll be able to push with no --overwrite at all. ๐Ÿ’…

No default push location set yet? Then the first push sets it for you (use --no-remember if you're like "no thank u"). After that you can just leave the location out entirely and it'll use the default. Wanna swap the default? Use --remember. Tiny catch tho: the value only gets saved if the remote location can actually be accessed. ๐Ÿซถ

--verbose will show you the revisions that got pushed, formatted using the log_format configuration option. Want a different look? Override it with -Olog_format=<other_format> and go off. โœจ


๐Ÿ’– brz reconcile [BRANCH]

Options:

  • --help, -h โ€” Show help message.
  • --quiet, -q โ€” Only display errors and warnings.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

See also: check

Reconcile brz metadata in a branch.

This fixes up data mismatches that might've been caused by previous ghost operations or by brz upgrades. Real talk: you should only need to run this if brz check told you to, or if an actual brz developer told you to. Don't just vibe-run it for fun. ๐Ÿ™ˆ

If you hand it a second branch, it'll also attempt cross-branch reconciliation, which checks that data like the tree root id โ€” stuff that wasn't present in very early brz versions โ€” is represented correctly in both branches. ๐Ÿ‘‘

While it's running it may also recompress data, which can lowkey save you disk space or give you a performance glow-up. ๐ŸŒˆ

The branch MUST be on a listable system such as local disk or sftp. Not negotiable.

๐ŸŽ€ brz reconfigure [LOCATION]

Options:

  • --bind-to ARG โ€” Branch to bind checkout to.
  • --force โ€” Perform reconfiguration even if local changes will be lost.
  • --help, -h โ€” Show help message.
  • --quiet, -q โ€” Only display errors and warnings.
  • --repository_trees ARG โ€” Whether new branches in the repository have trees.
  • --with-no-trees โ€” Reconfigure repository to not create working trees on branches by default.
  • --with-trees โ€” Reconfigure repository to create working trees on branches by default.
  • --repository_type ARG โ€” Location for the repository.
  • --standalone โ€” Reconfigure to be a standalone branch (i.e. stop using shared repository).
  • --use-shared โ€” Reconfigure to use a shared repository.
  • --stacked-on ARG โ€” Reconfigure a branch to be stacked on another branch.
  • --tree_type ARG โ€” The relation between branch and tree.
  • --branch โ€” Reconfigure to be an unbound branch with no working tree.
  • --checkout โ€” Reconfigure to be a bound branch with a working tree.
  • --lightweight-checkout โ€” Reconfigure to be a lightweight checkout (with no local history).
  • --tree โ€” Reconfigure to be an unbound branch with a working tree.
  • --unstacked โ€” Reconfigure a branch to be unstacked. This may require copying substantial data into it.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

See also: branches, checkouts, standalone-trees, working-trees

Reconfigure the type of a brz directory.

Okay so, a target configuration must be specified โ€” you can't just say "reconfigure" and hope for the best, bestie. Pick a lane. ๐Ÿ’…

For checkouts, the bind-to location gets auto-detected if you don't specify it. 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.

And if literally none of those are available? Then --bind-to must be specified. No getting around it. ๐Ÿ˜ญ


๐Ÿฆ‹ brz remerge [FILE...]

Options:

  • --help, -h โ€” Show help message.
  • --merge-type ARG โ€” Select a particular merge algorithm.
  • --diff3 โ€” Merge using external diff3.
  • --lca โ€” LCA-newness merge.
  • --merge3 โ€” Native diff3-style merge.
  • --weave โ€” Weave-based merge.
  • --quiet, -q โ€” Only display errors and warnings.
  • --reprocess โ€” Reprocess to reduce spurious conflicts.
  • --show-base โ€” Show base revision text in conflicts.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

Redo a merge.

Use this when you wanna try a different merge technique while you're out here resolving conflicts. Some merge techniques are just better than others, and remerge lets you try different ones on different files. So picky, so powerful. โœจ

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:

brz remerge --show-base

Re-do the merge of "foobar", using the weave merge algorithm, with additional processing to reduce the size of conflict regions:

brz remerge --merge-type weave --reprocess foobar

๐Ÿ“ brz remove [FILE...]

Options:

  • --file-deletion-strategy ARG โ€” The file deletion mode to be used.
  • --keep โ€” Delete from brz but leave the working copy.
  • --no-backup โ€” Don't backup changed files.
  • --safe โ€” Backup changed files (default).
  • --help, -h โ€” Show help message.
  • --new โ€” Only remove files that have never been committed.
  • --quiet, -q โ€” Only display errors and warnings.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

Aliases: rm, del

Remove files or directories.

This makes Breezy stop tracking changes to the files you named. Breezy will delete them if they can easily be recovered using revert, otherwise they'll be backed up (adding an extension of the form .~#~). And if you give it no options and no parameters? Breezy will scan for files that are being tracked by Breezy but missing in your tree, and stop tracking them for you. Look at her being helpful. ๐Ÿ’…


๐ŸŒธ brz remove-branch [LOCATION]

Options:

  • --directory ARG, -d โ€” Branch to operate on, instead of working directory.
  • --force โ€” Remove branch even if it is the active branch.
  • --help, -h โ€” Show help message.
  • --quiet, -q โ€” Only display errors and warnings.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

Alias: rmbranch

Remove a branch.

This removes the branch from the location you specified but will keep any working tree or repository in place. Like, the branch ghosted, the tree stayed. ๐Ÿ‘ป

Examples:

Remove the branch at repo/trunk:

brz remove-branch repo/trunk

๐Ÿ’œ brz remove-tree [LOCATION...]

Options:

  • --force โ€” Remove the working tree even if it has uncommitted or shelved changes.
  • --help, -h โ€” Show help message.
  • --quiet, -q โ€” Only display errors and warnings.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

See also: checkout, working-trees

Remove the working tree from a given branch/checkout.

Since a lightweight checkout is basically little more than a working tree, this will refuse to run against one. Not me asking, it's just not happening. ๐Ÿ™…

To re-create the working tree, use "brz checkout".


โญ brz rename

Alias for "mv", see "brz mv".


๐Ÿงš brz renames [DIR]

Options:

  • --help, -h โ€” Show help message.
  • --quiet, -q โ€” Only display errors and warnings.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

See also: status

Show list of renamed files.


๐Ÿ‘‘ brz resolve [FILE...]

Options:

  • --action ARG โ€” How to resolve the conflict.
  • --auto โ€” Detect whether conflict has been resolved by user.
  • --done โ€” Marks the conflict as resolved.
  • --take-other โ€” Resolve the conflict taking the merged version into account.
  • --take-this โ€” Resolve the conflict preserving the version in the working tree.
  • --all โ€” Resolve all conflicts in this tree.
  • --directory ARG, -d โ€” Branch to operate on, instead of working directory.
  • --help, -h โ€” Show help message.
  • --quiet, -q โ€” Only display errors and warnings.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

Alias: resolved

See also: conflicts

Mark a conflict as resolved.

Merge will do its absolute best to combine the changes in two branches, but there are some kinds of problems that only a human can fix. When it hits one of those, it marks a conflict. A conflict means you need to fix something before you can commit. Sorry bestie, that's the rules. ๐Ÿ˜ญ

Once you've fixed a problem, use "brz resolve" to automatically mark text conflicts as fixed, "brz resolve FILE" to mark a specific conflict as resolved, or "brz resolve --all" to mark all conflicts as resolved. Slay. โœจ


๐ŸŒˆ brz resolved

Alias for "resolve", see "brz resolve".


๐Ÿซถ brz revert [FILE...]

Options:

  • --forget-merges โ€” Remove pending merge marker, without changing any files.
  • --help, -h โ€” Show help message.
  • --no-backup โ€” Do not save backups of reverted files.
  • --quiet, -q โ€” Only display errors and warnings.
  • --revision ARG, -r โ€” See "help revisionspec" for details.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

See also: cat, export, merge, shelve

Set files in the working tree back to the contents of a previous revision.

Giving it a list of files means only those files get reverted. No list? Then every single file gets reverted ๐Ÿ’€. If you don't name a revision with --revision, it uses the working tree basis revision. And listen โ€” a revert op only touches the working tree, not any revision history like the branch, the repo, or the working tree basis revision. It's cosmetic-ish, bestie, it doesn't rewrite the past โœจ

Wanna remove only some changes, without going all the way back to a prior version? That's a merge job instead. Like, merge . -r -2..-3 (do not forget the ., I'm begging ๐Ÿ™) will remove the changes introduced by the second last commit (-2), without affecting the changes introduced by the last commit (-1). And if you want to nuke certain changes on a hunk-by-hunk basis, go peek at the shelve command. Want the branch updated to a specific revision (or the latest) with the working tree following along while your local changes stay safe? That's the update command, bestie ๐Ÿ”ฅ

โš ๏ธ Uncommitted changes to files that are reverted will be discarded. Periodt.

Okay but lowkey there's a safety net: by default, any files that have been manually changed get backed up first. (Files changed only by merge are not backed up, so watch out there ๐Ÿ™ˆ.) Backups get .~#~ appended to their name, where # is a number. Cute little name tag for your grief ๐ŸŽ€

When you hand over files, you can use their current pathname or the pathname from the target revision. Which means revert can straight up "undelete" a file by name โ€” resurrection era ๐Ÿ’…. And if you name a directory, everything inside that directory gets reverted too.

Newly added files since the target revision? They get removed. If the files being removed have been changed, backups happen as described above. Directories containing unknown files will not be deleted though โ€” respect ๐Ÿซถ

The working tree holds a list of revisions that have been merged but not yet committed, and those revisions get included as additional parents of the next commit. Normally, running revert clears that list and reverts the files. But if any files are specified, revert leaves the list of uncommitted merges alone and reverts only the files. So:

  • Use brz revert in the tree root to revert all files but keep the recorded merges.
  • Use brz revert --forget-merges to clear the pending merge list without reverting any files.

With brz revert --forget-merges you can actually apply all of the changes from a branch in a single revision ๐Ÿ˜ณ. How? Do the merge as desired. Then running revert with the --forget-merges option keeps the content of the tree exactly as it was, but clears the list of pending merges. The next commit will then contain all of the changes present in the other branch, with no other parent revisions. Lowkey iconic... but because this technique forgets where those changes came from, it may cause additional conflicts on later merges involving the same source and target branches. You've been warned, bestie ๐Ÿ’€


brz revno [LOCATION]

Options:

  • --help, -h โ€” Show help message.
  • --quiet, -q โ€” Only display errors and warnings.
  • --revision ARG, -r โ€” See help revisionspec for details.
  • --tree โ€” Show revno of working tree.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

See also: info

Show the current revision number โœจ

It's literally equal to the number of revisions on this branch. Math girlies stay winning ๐Ÿ“๐Ÿ’–


brz rm

Alias for remove, see brz remove. ๐Ÿ’…


brz rmbranch

Alias for remove-branch, see brz remove-branch. ๐Ÿ’…


brz root [FILENAME]

Options:

  • --help, -h โ€” Show help message.
  • --quiet, -q โ€” Only display errors and warnings.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

Show the tree root directory ๐ŸŒณ

The root is the nearest enclosing directory that has a control directory in it. That's the one, bestie ๐Ÿ‘‘


brz send [SUBMIT_BRANCH] [PUBLIC_BRANCH]

Options:

  • --body ARG โ€” Body for the email.
  • --format ARG โ€” Use the specified output format.
  • --from ARG, -f โ€” Branch to generate the submission from, rather than the one containing the working directory.
  • --help, -h โ€” Show help message.
  • --mail-to ARG โ€” Mail the request to this address.
  • --message ARG, -m โ€” Message string.
  • --no-bundle โ€” Do not include a bundle in the merge directive.
  • --no-patch โ€” Do not include a preview patch in the merge directive.
  • --output ARG, -o โ€” Write merge directive to this file or directory; use - for stdout.
  • --quiet, -q โ€” Only display errors and warnings.
  • --remember โ€” Remember submit and public branch.
  • --revision ARG, -r โ€” See help revisionspec for details.
  • --strict โ€” Refuse to send if there are uncommitted changes in the working tree; --no-strict disables the check.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.

See also: merge, pull

Mail or create a merge-directive for submitting changes ๐Ÿ“ฌ

A merge directive provides a bunch of things you need for requesting merges:

  • A machine-readable description of the merge to perform.
  • An optional patch that is a preview of the changes requested.
  • An optional bundle of revision data, so the changes can be applied directly from the merge directive, without retrieving data from a branch.

brz send creates a compact data set that, when applied using brz merge, has the exact same effect as merging from the source branch. No cap ๐Ÿงข

By default the merge directive is self-contained and can be applied to any branch containing submit_branch in its ancestory without needing access to the source branch โœจ

If --no-bundle is specified, then Breezy doesn't send the contents of the revisions โ€” it only sends a structured request to merge from the public_location. In that case the public_branch is needed and it must be up-to-date and accessible to the recipient. The public_branch is always included if known, so people can check it later ๐Ÿ‘€

The submit branch defaults to the parent of the source branch, but you can override it. Both the submit branch and the public branch get remembered in branch.conf the first time they're used for a particular branch. The source branch defaults to the one containing the working directory, but you can change it with --from.

Both the submit branch and the public branch follow the usual behavior with respect to --remember: if there's no default location set, the first send sets it (use --no-remember to avoid setting it ๐Ÿ˜Œ). After that, you can just omit the location and get the default. Wanna change the default? Use --remember. The value will only be saved if the location can actually be accessed, bestie ๐Ÿ”’

To calculate those changes, brz has to analyse the submit branch. So it's most efficient for the submit branch to be a local mirror. And if a public location is known for the submit_branch, that location is used in the merge directive.

Default behaviour is to send the merge directive by mail, unless you pass -o, in which case it goes to a file ๐Ÿ“

Mail is sent using your preferred mail program. This should be transparent on Windows (it uses MAPI). On Unix it requires the xdg-email utility. And if the preferred client can't be found (or used), your editor will be used instead. Fallback queen ๐Ÿ‘‘

To use a specific mail program, set the mail_client configuration option. Supported values for specific clients are "claws", "evolution", "kmail", "mail.app" (MacOS X's Mail.app), "mutt", and "thunderbird"; generic options are "default", "editor", "emacsclient", "mapi", and "xdg-email". Plugins may also add supported clients ๐Ÿ’…

If mail is being sent, a to address is required. You can supply it 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 ๐Ÿ“ฎ

The merge directives created by brz send may be applied using brz merge or brz pull by specifying a file containing a merge directive as the location.

brz send makes extensive use of public locations to map local locations into URLs that other people can use. See brz help configuration to set them, and use brz info to display them ๐ŸŒˆ


brz serve

Options:

  • --allow-writes โ€” By default the server is a readonly server. Supplying --allow-writes enables write access to the contents of the served directory and below. Note that brz serve does not perform authentication, so unless some form of external authentication is arranged, supplying this option leads to global uncontrolled write access to your file system.
  • --client-timeout ARG โ€” Override the default idle client timeout (5min).
  • --directory ARG, -d โ€” Serve contents of this directory.
  • --help, -h โ€” Show help message.
  • --inet โ€” Serve on stdin/out for use from inetd or sshd.
  • --listen ARG โ€” Listen for connections on nominated address.
  • --port ARG โ€” Listen for connections on nominated port. Passing 0 as the port number will result in a dynamically allocated port. The default port depends on the protocol.
  • --protocol ARG โ€” Protocol to serve.
  • --bzr โ€” The Bazaar smart server protocol over TCP. (default port: 4155)
  • --git โ€” Git Smart server protocol over TCP. (default port: 9418)
  • --git-receive-pack โ€” Git Smart server receive pack command. (inetd mode only)
  • --git-upload-pack โ€” Git Smart server upload pack command. (inetd mode only)
  • --quiet, -q โ€” Only display errors and warnings.
  • --usage โ€” Show usage message and options.
  • --verbose, -v โ€” Display more information.
๐Ÿ”ฅ DANGER, BESTIE: brz serve does not perform authentication. So unless some form of external authentication is arranged, supplying --allow-writes leads to global uncontrolled write access to your file system ๐Ÿ’€๐Ÿ’€๐Ÿ’€ Do not do this casually.

Alias: server

Run the brz server ๐Ÿ–ฅ๏ธโœจ


brz server

Alias for serve, see brz serve. ๐Ÿ’…

brz shelve [FILE...] ๐Ÿงบ

Options:

  • --all โ€” shelve literally every change you got.
  • --destroy โ€” destroy changes that got removed instead of shelving them.
  • --directory ARG, -d โ€” the branch to operate on, instead of the working directory.
  • --help, -h โ€” show the help message.
  • --list โ€” list the shelved changes.
  • --message ARG, -m โ€” a message string.
  • --quiet, -q โ€” only display errors and warnings.
  • --revision ARG, -r โ€” check help revisionspec for the deets.
  • --usage โ€” show the usage message and options.
  • --verbose, -v โ€” display more information.
  • --writer ARG โ€” which method to use for writing diffs.
  • --plain โ€” plaintext diff output.

See also: configuration, unshelve


Okay bestie, so shelve is the "I'm not dealing with this right now" command ๐Ÿ’… โ€” it temporarily sets some changes aside from the current tree.

It literally lets you take the changes you've made and put them "on the shelf", like out of the way, until a later time when you bring them back with the unshelve command ๐Ÿซถ. Here's the important tea though: those changes are stored alongside your working tree, so they do not get propagated along with your branch, and they will not survive your branch getting deleted ๐Ÿ˜ญ. Fr fr, keep that in mind.

If you run shelve --list, you get a list of all the previously-shelved changes. Iconic.

Shelve is here to help you separate several sets of changes that have been, and I quote, inappropriately mingled ๐Ÿ’€. If you just want to yeet all your changes and you don't need them back, use revert instead. And if you want to shelve all text changes at once? That's shelve --all, easy.

If you name filenames, only the changes to those files get shelved โ€” everything else is left untouched, no cap.

If you name a revision, then the changes since that revision are what get shelved. โœจ

You can stack multiple items on the shelf, and by default unshelve restores the most recently shelved changes. Main character shelf behaviour, honestly.


Now for complicated changes, it's possible to edit the changes in a separate editor program so you can decide what the file remaining in the working copy should look like ๐Ÿ‘‘. To do that, add this configuration option:

change_editor = PROGRAM {new_path} {old_path}

where {new_path} gets replaced with the path of the new version of the file, and {old_path} gets replaced with the path of the old version of the file. PROGRAM should save the new file with the desired contents of the file in the working tree. Slay. ๐ŸŒธ


brz sign-my-commits [LOCATION] [COMMITTER] โœ๏ธ

Options:

  • --dry-run โ€” don't actually sign anything, just print which revisions would get signed.
  • --help, -h โ€” show the help message.
  • --quiet, -q โ€” only display errors and warnings.
  • --usage โ€” show the usage message and options.
  • --verbose, -v โ€” display more information.

Sign all commits by a given committer. That's the whole vibe.

If location isn't specified, the local tree is used. If committer isn't specified, the default committer is used.

Heads up: this does not sign commits that already have signatures. Already-signed is already-signed, bestie. ๐Ÿ™ˆ

brz split TREE ๐Ÿช“

Options:

  • --help, -h โ€” show the help message.
  • --quiet, -q โ€” only display errors and warnings.
  • --usage โ€” show the usage message and options.
  • --verbose, -v โ€” display more information.

See also: join

Split a subdirectory of a tree into a separate tree. It's giving "divide and conquer" ๐Ÿ’….

This command will produce a target tree in a format that supports rich roots, like rich-root or rich-root-pack. The thing is, these formats cannot be converted into earlier formats like dirstate-tags. So know that going in. ๐Ÿ˜ญ

The TREE argument should be a subdirectory of a working tree. That subdirectory gets converted into an independent tree, with its own branch. And heads up: commits in the top-level tree will not apply to the new subtree. Periodt.


brz st ๐ŸŒŸ

Alias for status, see brz status.

brz stat ๐ŸŒŸ

Alias for status, see brz status.


brz status [FILE...] ๐Ÿ‘€

Options:

  • --change ARG, -c โ€” select changes introduced by the specified revision. Also see help revisionspec.
  • --help, -h โ€” show the help message.
  • --no-classify โ€” don't mark object type using an indicator.
  • --no-pending โ€” don't show pending merges.
  • --quiet, -q โ€” only display errors and warnings.
  • --revision ARG, -r โ€” check help revisionspec for the deets.
  • --short, -S โ€” use short status indicators.
  • --show-ids โ€” show internal object ids.
  • --usage โ€” show the usage message and options.
  • --verbose, -v โ€” display more information.
  • --versioned, -V โ€” only show versioned files.

Aliases: st, stat

See also: diff, revert, status-flags


Display a status summary. The vibe check of your working tree, basically โœจ.

This reports on versioned and unknown files, grouping them by state. The possible states are:

  • added โ€” versioned in the working copy but not in the previous revision.
  • removed โ€” versioned in the previous revision but removed or deleted in the working copy.
  • renamed โ€” this file's path changed from the previous revision; the text may also have changed. This includes files whose parent directory got renamed.
  • modified โ€” the text has changed since the previous revision.
  • kind changed โ€” the file kind has changed (e.g. from file to directory). ๐Ÿ’€
  • unknown โ€” not versioned, and not matching an ignore pattern.

Also, for directories, symlinks, and files with a changed executable bit, Breezy indicates their type using a trailing character: /, @, or * respectively. These little decorations can be turned off with the --no-classify option. ๐ŸŽ€

Want to see ignored files? Use brz ignored. Want the deets on the actual changes to file texts? Use brz diff.

Note that --short or -S gives you status flags for each item, similar to Subversion's status command. And to get output similar to svn -q, use brz status -SV.

If no arguments are specified, the status of the entire working directory is shown. Otherwise, only the status of the files or directories you named gets reported. And if you give it a directory, status is reported for everything inside that directory. ๐Ÿ‘‘

Before merges are committed, the pending merge tip revisions are shown. To see all pending merge revisions, use the -v option. To skip displaying pending merge info altogether, use the --no-pending option or just specify a file/directory.

Want to compare the working directory to a specific revision? Pass a single revision to the revision argument.

Want to see which files changed in a specific revision, or between two revisions? Pass a revision range to the revision argument. That gives you the same results as calling brz diff --summarize. ๐Ÿฆ‹


brz switch [TO_LOCATION] ๐Ÿ”„

Options:

  • --create-branch, -b โ€” create the target branch from this one before switching to it.
  • --directory ARG, -d โ€” branch to operate on, instead of the working directory.
  • --force โ€” switch even if local commits will be lost.
  • --help, -h โ€” show the help message.
  • --quiet, -q โ€” only display errors and warnings.
  • --revision ARG, -r โ€” check help revisionspec for the deets.
  • --store โ€” store and restore uncommitted changes in the branch.
  • --usage โ€” show the usage message and options.
  • --verbose, -v โ€” display more information.

Set the branch of a checkout and update. It's the glow-up command. ๐ŸŒˆ

For lightweight checkouts, this changes which branch is being referenced.

For heavyweight checkouts, it first 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 gets updated and uncommitted changes are merged. You can then commit or revert them as you desire, your call bestie.

Pending merges need to be committed or reverted before you can use switch. No skipping that step. ๐Ÿ˜ค

The path to the branch you're switching to can be specified relative to the parent directory of the current branch. For example, if you're currently in a checkout of /path/to/branch, specifying newbranch will find a branch at /path/to/newbranch. Cute, right?

Bound branches use the nickname of their master branch unless it's set locally โ€” and in that case, switching updates the local nickname to be that of the master. ๐Ÿ’…


brz tag [TAG_NAME] ๐Ÿท๏ธ

Options:

  • --delete โ€” delete this tag rather than placing it.
  • --directory ARG, -d โ€” branch in which to place the tag.
  • --force โ€” replace existing tags.
  • --help, -h โ€” show the help message.
  • --quiet, -q โ€” only display errors and warnings.
  • --revision ARG, -r โ€” check help revisionspec for the deets.
  • --usage โ€” show the usage message and options.
  • --verbose, -v โ€” display more information.

See also: commit, tags


Create, remove, or modify a tag that names a revision.

Tags give human-meaningful names to revisions, which is so much better than remembering a hash, fr fr. 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. And they get copied from one branch to another along when you branch, push, pull, or merge. They travel, bestie. ๐Ÿงš

It's 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.

To rename a tag (change the name but keep it on the same revision), run brz tag new-name -r tag:old-name and then brz tag --delete oldname.

If no tag name is specified, it will be determined through the automatic_tag_name hook. This can e.g. be used to automatically tag upstream releases by reading configure.ac. See brz help hooks for details. โญ


brz tags ๐Ÿ“‹

Options:

  • --directory ARG, -d โ€” branch whose tags should be displayed.
  • --help, -h โ€” show the help message.
  • --quiet, -q โ€” only display errors and warnings.
  • --revision ARG, -r โ€” check help revisionspec for the deets.
  • --show-ids โ€” show internal object ids.
  • --sort ARG โ€” sort tags by different criteria.
  • --usage โ€” show the usage message and options.
  • --verbose, -v โ€” display more information.

See also: tag


List tags. This command shows a table of tag names and the revisions they reference. A whole little spreadsheet of your faves, obsessed. ๐ŸŽ€

๐Ÿ’Œ brz testament [BRANCH]

Options:

  • --help, -h โ€” show the help message, bestie
  • --long โ€” produce a long-format testament
  • --quiet, -q โ€” only display errors and warnings
  • --revision ARG, -r โ€” see help revisionspec for the details
  • --strict โ€” produce a strict-format testament
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” display more information

Show the testament (signing-form) of a revision. โœจ


๐Ÿ”“ brz unbind

Options:

  • --directory ARG, -d โ€” branch to operate on, instead of working directory
  • --help, -h โ€” show help message
  • --quiet, -q โ€” only display errors and warnings
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” display more information

See also: bind, checkouts

Turn your current checkout into a regular branch. ๐ŸŽ€

Once you've unbound, the local branch is doing its own thing โ€” independent, main character energy โ€” and every commit after that is local only. no cap.


โช brz uncommit [LOCATION]

Options:

  • --dry-run โ€” don't actually make changes
  • --force โ€” say yes to all questions
  • --help, -h โ€” show help message
  • --keep-tags โ€” keep tags that point to removed revisions
  • --local โ€” only remove the commits from the local branch when in a checkout
  • --quiet, -q โ€” only display errors and warnings
  • --revision ARG, -r โ€” see help revisionspec for the details
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” display more information

See also: commit

Remove the last committed revision. bye boo ๐Ÿ‘‹

--verbose will print out what's getting removed. --dry-run will go through all the motions but not actually remove anything โ€” it's giving rehearsal, not the show. ๐ŸŽญ

If --revision is specified, uncommit revisions to leave the branch at the specified revision. For example, brz uncommit -r 15 will leave the branch at revision 15. periodt.

Uncommit leaves the working tree ready for a new commit. The only change it may make is to restore any pending merges that were present before the commit. ๐Ÿซถ


๐Ÿงบ brz unshelve [SHELF_ID]

Options:

  • --action ARG โ€” the action to perform
  • --apply โ€” apply changes and remove from the shelf
  • --delete-only โ€” delete changes without applying them
  • --dry-run โ€” show changes, but do not apply or remove them
  • --keep โ€” apply changes but don't delete them
  • --preview โ€” instead of unshelving the changes, show the diff that would result from unshelving
  • --directory ARG, -d โ€” branch to operate on, instead of working directory
  • --help, -h โ€” show help message
  • --quiet, -q โ€” only display errors and warnings
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” display more information

See also: shelve

Restore shelved changes. ๐Ÿ’–

By default, the most recently shelved changes are restored. However if you specify a shelf by id, those changes get restored instead. This works best when the changes don't depend on each other โ€” like, they're living their separate lives, respectfully. ๐Ÿฆ‹


โฌ†๏ธ brz up

Alias for update, see brz update. That's it, that's the whole entry. ๐Ÿ’…


๐Ÿ”„ brz update [DIR]

Options:

  • --help, -h โ€” show help message
  • --quiet, -q โ€” only display errors and warnings
  • --revision ARG, -r โ€” see help revisionspec for the details
  • --show-base โ€” show base revision text in conflicts
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” display more information

Alias: up

See also: pull, status-flags, working-trees

Update a working tree to a new revision. ๐ŸŒˆ

This will perform a merge of the destination revision (the tip of the branch, or the specified revision) into the working tree, and then make that revision the basis revision for the working tree.

You can use this to visit an older revision, or to update a working tree that is out of date from its branch. time travel, lowkey. ๐Ÿ•ฐ๏ธ

If there are any uncommitted changes in the tree, they will be carried across and remain as uncommitted changes after the update. To discard these changes, use brz revert. Heads up though โ€” the uncommitted changes may conflict with the changes brought in by the change in basis revision. ๐Ÿ˜ญ

If the tree's branch is bound to a master branch, brz will also update the branch from the master. ๐Ÿ‘‘

You cannot update just a single file or directory, because each Breezy working tree has just a single basis revision. If you want to restore a file that has been removed locally, use brz revert instead of brz update. If you want to restore a file to its state in a previous revision, use brz revert with a -r option, or use brz cat to write out the old content of that file to a new location.

The dir argument, if given, must be the location of the root of a working tree to update. By default, the working tree that contains the current working directory is used.


๐Ÿš€ brz upgrade [URL]

Options:

  • --clean โ€” remove the backup.bzr directory if successful
  • --dry-run โ€” show what would be done, but don't actually do anything
  • --format ARG โ€” upgrade to a specific format. See brz help formats for details
  • --2a โ€” format for the bzr 2.0 series
  • --bzr โ€” format for the bzr 2.0 series
  • --default โ€” format for the bzr 2.0 series
  • --git โ€” GIT repository
  • --git-bare โ€” bare GIT repository (no working tree)
  • --help, -h โ€” show help message
  • --quiet, -q โ€” only display errors and warnings
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” display more information

See also: check, formats, reconcile

Upgrade a repository, branch or working tree to a newer format. glow up time โœจ

When the default format has changed after a major new release of Bazaar/Breezy, you may be informed during certain operations that you should upgrade. Upgrading to a newer format may improve performance or make new features available. It may however limit interoperability with older repositories or with older versions of Bazaar or Breezy. trade-offs, we hate to see it. ๐Ÿ’€

If you wish to upgrade to a particular format rather than the current default, that can be specified using the --format option. As a consequence, you can use the upgrade command this way to "downgrade" to an earlier format, though some conversions are a one way process (e.g. changing from the 1.x default to the 2.x default) so downgrading is not always possible. no take-backsies. ๐Ÿšซ

A backup.bzr.~#~ directory is created at the start of the conversion process (where # is a number). By default, this is left there on completion. If the conversion fails, delete the new .bzr directory and rename this one back in its place. Use the --clean option to ask for the backup.bzr directory to be removed on successful conversion. Alternatively, you can delete it by hand if everything looks good afterwards.

If the location given is a shared repository, dependent branches are also converted provided the repository converts successfully. If the conversion of a branch fails, remaining branches are still tried. resilient fr fr. ๐Ÿ’ช

For more information on upgrades, see the Breezy Upgrade Guide, https://www.breezy-vcs.org/doc/en/upgrade-guide/.

๐Ÿ” brz verify-signatures [LOCATION]

Options:

  • --acceptable-keys ARG, -k โ€” comma separated list of GPG key patterns which are acceptable for verification
  • --help, -h โ€” show help message
  • --quiet, -q โ€” only display errors and warnings
  • --revision ARG, -r โ€” see help revisionspec for the details
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” display more information

Verify all commit signatures. ๐Ÿ”Ž

Verifies that all commits in the branch are signed by known GnuPG keys. if it ain't signed, it ain't it. ๐ŸŽ€


๐Ÿท๏ธ brz version

Options:

  • --help, -h โ€” show help message
  • --quiet, -q โ€” only display errors and warnings
  • --short โ€” print just the version number
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” display more information

Show version of brz. that's the vibe check. ๐Ÿฆ‹


๐Ÿ“‹ brz version-info [LOCATION]

Options:

  • --all โ€” include all possible information
  • --check-clean โ€” check if tree is clean
  • --format ARG โ€” select the output format
  • --custom โ€” version info in Custom template-based format
  • --python โ€” version info in Python format
  • --rio โ€” version info in RIO (simple text) format (default)
  • --yaml โ€” version info in YAML format
  • --help, -h โ€” show help message
  • --include-file-revisions โ€” include the last revision for each file
  • --include-history โ€” include the revision-history
  • --quiet, -q โ€” only display errors and warnings
  • --revision ARG, -r โ€” see help revisionspec for the details
  • --template ARG โ€” template for the output
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” display more information

Show version information about this tree. ๐ŸŒณ

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:

brz 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. iconic, honestly. ๐Ÿ‘‘

Other supported variables in templates are:

  • {date} โ€” date of the last revision
  • {build_date} โ€” current date
  • {revno} โ€” revision number
  • {revision_id} โ€” revision id
  • {branch_nick} โ€” branch nickname
  • {clean} โ€” 0 if the source tree contains uncommitted changes, otherwise 1

brz view [FILE...]

Options:

  • --all โ€” apply the list or delete action to every view, not just one โœจ
  • --delete โ€” yeet the view ๐Ÿ—‘๏ธ
  • --help, -h โ€” show the help message
  • --name ARG โ€” the name of the view you wanna define, list, or delete
  • --quiet, -q โ€” only show errors and warnings, nothing extra
  • --switch ARG โ€” name of the view you're switching to
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” spill more info, bestie

Manage filtered views ๐Ÿ’…

Okay so listen โ€” views are basically a mask over the tree, so you can focus on just a subset of the tree while you're doing your work. Once you create a view, any command that takes a list of files โ€” status, diff, commit, all of them โ€” effectively gets that file list handed to it implicitly every single time. You can still pass an explicit list of files, but bestie, those files have to be inside the current view. That's the rule.

Most of the time a view has a short life-span: you create it to make one specific change, and it gets deleted once that change is committed. But sometimes you wanna make one or more named views and vibe-switch between them ๐Ÿ‘‘

Wanna disable the current view without deleting it? Switch to the pseudo view called off. This is lowkey so useful when you need the whole tree for an operation or two (like a merge) but you wanna bounce back into your view afterwards ๐Ÿฆ‹

Examples โœจ

To define the current view:

brz view file1 dir1 ...

To list the current view:

brz view

To delete the current view:

brz view --delete

To disable the current view without deleting it:

brz view --switch off

To define a named view and switch to it:

brz view --name view-name file1 dir1 ...

To list a named view:

brz view --name view-name

To delete a named view:

brz view --name view-name --delete

To switch to a named view:

brz view --switch view-name

To list all views defined:

brz view --all

To delete all views:

brz view --delete --all

brz whoami [NAME]

Options:

  • --branch โ€” set identity for the current branch instead of globally ๐ŸŒฟ
  • --directory ARG, -d โ€” the branch to operate on, instead of the working directory
  • --email โ€” display the email address only ๐Ÿ“ง
  • --help, -h โ€” show the help message
  • --quiet, -q โ€” only show errors and warnings
  • --usage โ€” show usage message and options
  • --verbose, -v โ€” display more information

Show or set the brz user id ๐Ÿชช

Examples ๐ŸŒธ

Show the email of the current user:

brz whoami --email

Set the current user:

brz whoami "Frank Chu <fchu@example.com>"

๐ŸŒˆ ENVIRONMENT ๐ŸŒˆ

  • BRZPATH โ€” path where brz looks for shell plugin external commands
  • BRZ_EMAIL โ€” e-mail address of the user. Overrides EMAIL ๐Ÿ’Œ
  • EMAIL โ€” e-mail address of the user
  • BRZ_EDITOR โ€” editor for editing commit messages. Overrides EDITOR โœ๏ธ
  • EDITOR โ€” editor for editing commit messages
  • BRZ_PLUGIN_PATH โ€” paths where brz should look for plugins ๐Ÿ”Œ
  • BRZ_DISABLE_PLUGINS โ€” plugins that brz should not load ๐Ÿ™…
  • BRZ_PLUGINS_AT โ€” plugins to load from a directory that's not in BRZ_PLUGIN_PATH
  • BRZ_HOME โ€” directory holding the breezy config dir. Overrides HOME ๐Ÿ 
  • BRZ_HOME (Win32) โ€” directory holding the breezy config dir. Overrides APPDATA and HOME ๐ŸชŸ
  • BZR_REMOTE_PATH โ€” full name of the remote brz command (for brz+ssh:// URLs)
  • BRZ_SSH โ€” path to the SSH client, or one of paramiko, openssh, sshcorp, plink or lsh ๐Ÿ”‘
  • BRZ_LOG โ€” location of brz.log (use '/dev/null' to suppress the log) ๐Ÿ““
  • BRZ_LOG (Win32) โ€” location of brz.log (use 'NUL' to suppress the log)
  • BRZ_COLUMNS โ€” override the implicit terminal width ๐Ÿ“
  • BRZ_CONCURRENCY โ€” number of processes that can be run concurrently (selftest)
  • BRZ_PROGRESS_BAR โ€” override the progress display. Values are 'none' or 'text' ๐Ÿ“Š
  • BRZ_PDB โ€” control whether to launch a debugger on error ๐Ÿ›
  • BRZ_SIGQUIT_PDB โ€” control whether SIGQUIT behaves normally or invokes a breakin debugger
  • BRZ_TEXTUI_INPUT โ€” force console input mode for prompts to line-based (instead of char-based) โŒจ๏ธ

๐ŸŽ€ FILES ๐ŸŽ€

  • ~/.config/breezy/breezy.conf โ€” contains the user's default configuration. The section [DEFAULT] is used to define general configuration that gets 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

๐Ÿ‘€ SEE ALSO ๐Ÿ‘€

Bestieโ€ฆ there's literally nothing under this heading in the original. That's the whole vibe. No links, no cross-refs, nothing. Slay, I guess ๐Ÿ’€


and that's a wrap on brz(1), fr fr ๐Ÿซถ the footer down at the bottom of the page is what's holding the source/version deets and the date it was generated โ€” go give it a lil kiss for me, it did its job ๐Ÿ’–โœจ no cap, you read the whole thing, that's iconic behavior, periodt ๐Ÿ‘‘

๐Ÿ“ฆ where this page comes from