Difference between revisions of "Bzr Intro"
(vouch for bzr-svn a little) |
(shared branches) |
||
Line 51: | Line 51: | ||
bzr ci -m 'merged amazing new feature: NEW_FEATURE' | bzr ci -m 'merged amazing new feature: NEW_FEATURE' | ||
bzr push sftp://some.server/home/USERNAME/public_html/bzr/PROJECT/my-branch | bzr push sftp://some.server/home/USERNAME/public_html/bzr/PROJECT/my-branch | ||
+ | |||
+ | ===shared branches=== | ||
+ | |||
+ | multiple users can commit to the same branch, making sure everyone has read and | ||
+ | write permission to the branch directory. | ||
+ | |||
+ | it is recommended to use the --append-revisions-only flag when creating the | ||
+ | branch: | ||
+ | |||
+ | bzr init --append-revisions-only /path/to/shared/repository | ||
+ | |||
+ | otherwise, [http://bugs.debian.org/401262 pushes and pulls can change the revision history], which makes it | ||
+ | harder to keep track of who changed what when. | ||
===converting an existing project from subversion=== | ===converting an existing project from subversion=== |
Revision as of 11:22, 4 October 2007
The Bzr Intro class should give a basic understanding of how to use the bzr revision control system and some of the useful helper utilities available for bzr.
background
prerequisites
- basic familiarity with commandline and Command Line 2
- familiarity with a text editor
suggested background
- basic understanding of cvs, subversion or other revision control systems
topics covered
who am i
the first time you start working with bzr on a given machine, let it know who you are, so commit messages will have useful identifiers:
bzr whoami 'FOO BAR <FOO@example.com>'
starting a new project
bzr init PROJECT cd PROJECT bzr add FOO BAR BAZ bzr ci -m 'added initial files' bzr push --remember sftp://some.server/home/USERNAME/public_html/bzr/PROJECT/my-branch
working on an existing project
bzr get URL ORIGIN bzr get ORIGIN NEW_FEATURE cd NEW_FEATURE while feature_is_incomplete: hack, tweak, etc. bzr ci bzr push --remember sftp://some.server/home/USERNAME/public_html/bzr/PROJECT/NEW_FEATURE
announce that your branch has this cool new feature to the project mailing list or irc channel:
hey, just implemented a fix for bug #10: bzr get http://some.server/~USERNAME/bzr/PROJECT/NEW_FEATURE
staying in sync
after making lots of changes, and upstream made lots of changes, it's time to get back in sync with upstream:
bzr merge ../NEW_FEATURE bzr ci -m 'merged amazing new feature: NEW_FEATURE' bzr push sftp://some.server/home/USERNAME/public_html/bzr/PROJECT/my-branch
multiple users can commit to the same branch, making sure everyone has read and write permission to the branch directory.
it is recommended to use the --append-revisions-only flag when creating the branch:
bzr init --append-revisions-only /path/to/shared/repository
otherwise, pushes and pulls can change the revision history, which makes it harder to keep track of who changed what when.
converting an existing project from subversion
with bzr-svn, it's rather simple:
bzr get SUBVERSION_URL PROJECT
it's also possible with tailor.
both claim to be able to continue to make commits on the subversion backend, but i have not actually tested how well tailor works in practice. bzr-svn seems to at least handle simple cases.
optimization
to use a common storage space for all your revisions:
bzr init-repo PROJECT
any branches checked out under PROJECT will share revision information when possible.
bzr get URL1 PROJECT/FOO bzr get URL2 PROJECT/BAR
when you get the second branch, most of BAR is identical to FOO, so you only need to download the differences. highly recommended for publicly accessible branches.
shelves
these features are only available if you have bzrtools installed:
bzr shelve bzr unshelve bzr shelf ls bzr shelf show bzr shelf del
it allows you to set aside parts of revisions, even within individual files, to make it easier to commit only related changes.
http://doc.bazaar-vcs.org/latest/en/mini-tutorial/index.html