Difference between revisions of "Bzr Intro"

From FreekiWiki
Jump to navigation Jump to search
(initial content for class)
(added optimization and shelves sections, dropped terms and one of the prereqs)
Line 6: Line 6:
 
===prerequisites===
 
===prerequisites===
 
* basic familiarity with [[Basic_Linux_Command_Line_for_Builders|commandline]] and [[Command Line 2]]
 
* basic familiarity with [[Basic_Linux_Command_Line_for_Builders|commandline]] and [[Command Line 2]]
* basic familiarity with [[Where_Is_Everything|linux]]
 
 
* familiarity with a text editor
 
* familiarity with a text editor
  
 
===suggested background===
 
===suggested background===
 
* basic understanding of cvs, subversion or other revision control systems
 
* basic understanding of cvs, subversion or other revision control systems
 
==terms==
 
  
 
==topics covered==
 
==topics covered==
Line 65: Line 62:
 
both claim to be able to continue to make commits on the subversion backend,
 
both claim to be able to continue to make commits on the subversion backend,
 
but i have not actually tested how well these features work in practice.
 
but i have not actually tested how well these features work in practice.
 +
 +
===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
 +
[http://packages.debian.org/bzrtools 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.
  
 
==additional and related topics==
 
==additional and related topics==

Revision as of 14:52, 1 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

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

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 these features work in practice.

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.

additional and related topics

http://doc.bazaar-vcs.org/latest/en/mini-tutorial/index.html