Merge lp:~nmb/bzr/admin-guide into lp:bzr

Proposed by Neil Martinsen-Burrell
Status: Rejected
Rejected by: Ian Clatworthy
Proposed branch: lp:~nmb/bzr/admin-guide
Merge into: lp:bzr
Diff against target: 1335 lines (+1141/-116)
14 files modified
doc/en/admin-guide/advanced.txt (+160/-0)
doc/en/admin-guide/backup.txt (+144/-0)
doc/en/admin-guide/code-browsing.txt (+126/-0)
doc/en/admin-guide/hooks-plugins.txt (+309/-0)
doc/en/admin-guide/index.txt (+25/-114)
doc/en/admin-guide/integration.txt (+14/-0)
doc/en/admin-guide/introduction.txt (+57/-0)
doc/en/admin-guide/migration.txt (+68/-0)
doc/en/admin-guide/other-setups.txt (+60/-0)
doc/en/admin-guide/security.txt (+9/-0)
doc/en/admin-guide/simple-setups.txt (+92/-0)
doc/en/admin-guide/upgrade.txt (+76/-0)
doc/en/conf.py (+0/-2)
doc/en/index.txt (+1/-0)
To merge this branch: bzr merge lp:~nmb/bzr/admin-guide
Reviewer Review Type Date Requested Status
Neil Martinsen-Burrell (community) Needs Resubmitting
Vincent Ladeuil Needs Fixing
Review via email: mp+15725@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Neil Martinsen-Burrell (nmb) wrote :

This adds content to the System Administrator's Guide, while also structuring that content as separate files for each "chapter". There is great room for improvement in many of these topics, particularly the ones that are completely empty (integration.txt, security.txt), but I think it's worth merging this and then doing further changes to improve it. The only exception would be egregious errors which should be corrected before merging any version of it.

I understand it's a lot of text and hopefully we can get some kind of meaningful reviews in order to get it merged.

Revision history for this message
Neil Martinsen-Burrell (nmb) wrote :

Also this currently isn't accessible anywhere from doc/en/index.txt, but that is also an orthogonal change, although one that should be made soon after merging this. But, that really needs the attention of someone who knows what they want the doc website to look like. Ian?

Revision history for this message
Vincent Ladeuil (vila) wrote :

Impressive work !

But its size makes it quite hard to review :-/

Could you instead make several merge proposals starting with the
one that introduce the new layout and then one for each
significant topic (look at the prerequisite branch when making
these proposals) ?

Ideally each of one would then represent a ~100-300 lines diff
and be easier to review and provide timely and constructive
feedback. If you could end up with say 5 proposals instead of
this big one, I think we'll be in a better position to land
quickly most of them and let discussions happen where needed.

To keep the ball rolling, here are some remarks anyway:
- I agree the admin guide needs an entry at the root level,

- the html files doesn't seem to be generated by 'make docs',
  including that in the first mp would be good

- I don't think the migration chapter should stay here, I think
  it deserves its own guide and also its own entry at the root
  level.

review: Needs Fixing
Revision history for this message
Neil Martinsen-Burrell (nmb) wrote :

Will do. Resubmitting as six separate merge proposals with smaller diffs.

review: Needs Resubmitting
Revision history for this message
Ian Clatworthy (ian-clatworthy) wrote :

I'll make this patch as rejected as it's been superseded by the smaller patches.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added file 'doc/en/admin-guide/advanced.txt'
--- doc/en/admin-guide/advanced.txt 1970-01-01 00:00:00 +0000
+++ doc/en/admin-guide/advanced.txt 2009-12-07 03:05:25 +0000
@@ -0,0 +1,160 @@
1Advanced Topics
2===============
3
4System Monitoring
5-----------------
6
7Capacity Planning Tips
8----------------------
9
10Clustering
11----------
12
13Multi-site Setups
14-----------------
15
16The "distributed" in distributed version control system should indicate that
17Bazaar is well suited for multi-site development situations and indeed, that
18is the case. The advantage comes from the ease and transparency of managing
19merges between branches with divergent history. Note that there are many,
20many different ways to manage widely-flung development setups using Bazaar and
21its branching and merging capabilities. These can be discovered and tested
22before being implemented as policy. We will describe one such possible setup
23here.
24
25Consider ProjectX Corp's international expansion with a new branch office in
26Darwin, Australia, in addition to the company's headquarters in Paris, Texas,
27USA. One of the difficulties of a far-flung multi-site development
28environment such as this is that the network connection between Australia and
29Texas is slow and unreliable. So, each branch office would like the master
30branch to be local to them. (In situations with good network connectivity, a
31local branch bound to the remote master may be all that is needed to support
32multi-site development.)
33
34Of course, with two master branches, there is always the question of which one
35is authoritative. Given Bazaar's facility at managing multiple branches, we
36suggest that it is best not to privilege either the Texas or Australia
37branches, but to merge both of them into a separate master branch (which may
38reside at either site). For definiteness, we will locate the master branch at
39the Texas site. So, we will have three branches stored on two servers:
40trunk-master and trunk-texas at the Texas site and trunk-australia at the
41Darwin site.
42
43Setup
44~~~~~
45
46Using our previous setup at the Texas site, we will simply rename the old
47trunk branch as trunk-master and branch a copy as trunk-texas.
48
49::
50
51 $ cd /srv/bzr/projectx
52 $ mv trunk trunk-master # can simply rename on the filesystem
53 $ bzr branch trunk-master trunk-texas # very fast in a shared repository
54
55In Australia, we need to set up the ``/srv/bzr/projectx`` directory and get a
56copy of the current trunk as trunk-australia::
57
58 $ mkdir -p /srv/bzr
59 $ cd /srv/bzr
60 $ bzr init-repo --no-trees projectx
61 $ cd projectx
62 $ bzr branch bzr+ssh://server.example.com/srv/bzr/trunk-master
63 $ bzr branch trunk-master trunk-australia
64
65Merging to master
66~~~~~~~~~~~~~~~~~
67
68Then, each office works with their local copy of the trunk. At some point,
69sooner or later depending on the pace of development in the two locations, the
70two local trunks need to be merged. (In general, sooner beats later when
71merging, since there is no penalty for multiple merges.) In this example,
72Alice at the Texas office will do the merging on her local machine using
73branches on the server::
74
75 # Get a copy of the Australia branch in Texas. After the initial branch
76 # command, use pull to keep the branch up to date. With a slow network,
77 # this is the only slow part
78 $ bzr branch bzr+ssh://autralia.example.com/srv/bzr/projectx/trunk-australia \
79 bzr+ssh://server.example.com/srv/bzr/projectx/trunk-australia
80
81 # Check out the master branch locally for doing the merge
82 $ cd ~/projectx
83 $ bzr checkout bzr+ssh://server.example.com/srv/bzr/projectx/trunk-master
84 $ cd trunk-master
85 $ bzr merge bzr+ssh://server.example.com/srv/bzr/projectx/trunk-texas
86 # Run the test suite and resolve any conflicts
87 $ bzr commit -m "Merge Texas branch to master"
88
89 # Now, merge from Australia using the local copy of that branch
90 $ bzr merge bzr+ssh://server.example.com/srv/bzr/projectx/trunk-australia
91 # Run the test suite and resolve any conflicts between the two offices
92 $ bzr commit -m "Merge Australia branch to master"
93
94Note that Bazaar does not commit even cleanly applied merges by default. This
95is because although a merge may apply cleanly, the merged state still needs to
96be checked before it is committed. (Just because there are no text conflicts
97does not mean that everything will work after a merge.) If it is desired to
98automatically commit when possible, use ``bzr merge --pull``.
99
100Merging back to local trunks
101~~~~~~~~~~~~~~~~~~~~~~~~~~~~
102
103Now the trunk-master branch is the most up-to-date version of the software and
104both of the local trunks need to reincorporate the changes from the master.
105If no new commits have been made to trunk-texas, then that can happen using
106``bzr pull``::
107
108 $ cd ~/projectx
109 $ bzr checkout bzr+ssh://server.example.com/srv/bzr/projectx/trunk-texas
110 $ cd trunk-texas
111 $ bzr pull ../trunk-master # Use trunk-master from the local disk
112 # No need to commit
113
114If new changes have happened on trunk-texas since the integration with
115trunk-master, then the above pull will produce an error suggesting to use
116merge::
117
118 $ bzr merge ../trunk-master
119 # Run test suite, resolve conflicts
120 $ bzr commit -m "Merging Australian changes"
121
122In Australia, they will need to update their local copy of trunk-master::
123
124 $ cd /srv/bzr/projectx/trunk-master
125 $ bzr pull # parent location is used by default
126
127Then, they need to pull or merge the changes from trunk-master into the local
128trunk. This should be done by a developer with a checkout of trunk-australia
129so that they can run the test suite::
130
131 $ cd ~/projectx
132 $ bzr co bzr+ssh://australia.example.com/srv/bzr/projectx/trunk-australia
133 $ cd trunk-australia
134 $ bzr merge bzr+ssh://australia.example.com/srv/bzr/projectx/trunk-master
135 # Run test suite and integrate Texan changes with only recent local
136 # development
137 $ bzr commit -m "Integrate work from Texas"
138
139
140Other Considerations
141~~~~~~~~~~~~~~~~~~~~
142
143Multi-site deployments can be complicated, due to the many possible variations
144of development velocity, divisions of labor, network connectivity, resources
145for integration, etc. The preceding description is meant to be one possible
146way to do fairly symmetric multi-site development. (Neither Texas or
147Australia is privileged in this structure.) In a situation where there is one
148main site and other smaller sites, one of the local trunk branches can be
149eliminated and trunk-master can be used directly for development at the main
150site.
151
152It is also up to the particular situation how frequently the local trunks are
153integrated into the master trunk. Given resources specifically for
154integration, it is conceivable that a developer may be constantly responsible
155for integrating changes from the two teams. Alternatively, the two sites
156could work on well-separated, well-defined features and merge to the master
157trunk only when their respective features are complete. Given the difficulty
158of resolving conflicts in very large merges and the ease of merge handling in
159Bazaar, we suggest that merges be done more frequently, rather than less.
160more frequently
0161
=== added file 'doc/en/admin-guide/backup.txt'
--- doc/en/admin-guide/backup.txt 1970-01-01 00:00:00 +0000
+++ doc/en/admin-guide/backup.txt 2009-12-07 03:05:25 +0000
@@ -0,0 +1,144 @@
1Back-up and Restore
2===================
3
4Backing up Bazaar branches can be done in two different ways. If an existing
5filesystem-based backup scheme already exists, then it can easily be used
6where the Bazaar branches reside. Alternately, Bazaar itself can be used to
7mirror the desired branches to or from another location for backup purposes.
8
9Filesystem Backups
10------------------
11
12Bazaar transactions are atomic in the sense that the disk format is such that
13it is in a valid state at all times. If a Bazaar file is copied while some
14process is in the midst of writing to that file, then that content is not
15referred to by the other on-disk structures until the data is completely
16written. As such, it should be safe to copy Bazaar branches using filesystem
17tools at any time. The only possible drawback to doing this is that the
18copied files may contain a small amount of additional content that isn't used
19elsewhere in the branch. A later copy made after that change has fully
20completed would contain that whole change. Bazaar's disk formats are not
21specifically tuned to be kind to tape backup methods that prefer to append to
22existing files, but they should be reasonably friendly in that regard. (In
23many cases, they do only append to files that already exist.)
24
25
26Bazaar as its own backup
27------------------------
28
29The features that make Bazaar a good distributed version control system also
30make it a good choice for backing itself up. In particular, complete and
31consistent copies of any branch can easily be obtained with the ``branch`` and
32``pull`` commands. As a result, a backup process can simply run ``bzr pull``
33on a copy of the main branch to fully update that copy. If this backup
34process runs periodically, then the backups will be as current as the last
35time that ``pull`` was run. (This is in addition to the fact
36that revisions are immutable in Bazaar so that a prior revision of a branch is
37always recoverable from that branch when the revision id is known.)
38
39As an example, consider a separate backup server that stores backups in
40``/var/backup``. On that server, we could initially run
41
42::
43
44 $ cd /var/backup
45 $ bzr branch bzr+ssh://server.example.com/srv/bzr/trunk
46 $ bzr branch bzr+ssh://server.example.com/srv/bzr/feature-gui
47
48to create the branches on the backup server. Then, we could regularly (for
49example from ``cron``) do
50
51::
52
53 $ cd /var/backup/trunk
54 $ bzr pull # the location to pull from is remembered
55 $ cd ../var/backup/feature-gui
56 $ bzr pull # again, the parent location is remembered
57
58The action of pulling from the parent for all branches in some directory is
59common enough that there is a plugin to do it. The `bzrtools`_ plugin
60contains a ``multi-pull`` command that does a ``pull`` in all branches under a
61specified directory.
62
63.. _bzrtools: http://launchpad.net/bzrtools
64
65With this plugin installed, the above periodically run commands would be
66
67::
68
69 $ cd /var/backup
70 $ bzr multi-pull
71
72Note that ``multi-pull`` does a pull in *every* branch in the specified
73directory (the current directory by default) and care should be taken that
74this is the desired effect. A simple script could also substitute for the
75multi-pull command while also offering greater flexibility.
76
77Bound Branch Backups
78~~~~~~~~~~~~~~~~~~~~
79
80When ``bzr pull`` is run regularly to keep a backup copy up to date, then it
81is possible that there are new revisions in the original branch that have not
82yet been pulled into the backup branch. To alleviate this problem, we can set
83the branches up so that new revisions are *pushed* to the backup rather than
84periodically pulling. One way to do this is using Bazaar's concept of bound
85branches, where a commit in one branch happens only when the same commit
86succeeds in the branch to which it is `bound`. As a push-type technology, it
87is set up on the server itself rather than on the backup machine. For each
88branch that should be backed up, you just need to use the ``bind`` command to
89set the URL for the backup branch. In our example, we first need to create
90the branches on the backup server (we'll use ``bzr push``, but we could as
91easily have used ``bzr branch`` from the backup server)
92
93::
94 $ cd /srv/bzr/projectx/trunk
95 $ bzr push bzr+ssh://backup.example.com/var/backup//trunk
96 $ cd ../feature-gui
97 $ bzr push bzr+ssh://backup.example.com/var/backup/feature-gui
98
99and then we need to bind the main branches to their backups
100
101::
102
103 $ cd ../trunk
104 $ bzr bind bzr+ssh://backup.example.com/var/backup/trunk
105 $ cd ../feature-gui
106 $ bzr bind bzr+ssh://backup.example.com/var/backup/feature-gui
107
108A branch can only be bound to a single location, so if multiple backups are
109desired, then the branches must be chained. For example on the backup server,
110we could bind the backup branches to a separate, remote backup
111
112::
113
114 $ cd /var/backup/trunk
115 $ bzr push bzr+ssh://offsite.example.org/projectx-corp/backup/trunk
116 $ bzr bind bzr+ssh://offsite.example.org/projectx-corp/backup/trunk
117 $ cd ../feature-gui
118 $ bzr push bzr+ssh://offsite.example.org/projectx-corp/backup/feature-gui
119 $ bzr bind bzr+ssh://offsite.example.org/projectx-corp/backup/feature-gui
120
121Using the `automirror`_ plugin mentioned under `Hooks and Plugins <hooks-plugins.html>`_, one can
122also make a push-type backup system that more naturally handles mutliple
123backups. Simply set the ``post_commit_mirror`` option to multiple URLs
124separated by commas. Replicating the above example would mean doing
125
126::
127
128 $ cd /srv/bzr/trunk
129 $ echo "post_commit_mirror=bzr+ssh://backup.example.com/var/backup/trunk,\
130 bzr+ssh://offsite.example.org/projectx-corp/backup/trunk" >> .bzr/branch/branch.conf
131 $ cd ../feature-gui
132 $ echo "post_commit_mirror=bzr+ssh://backup.example.com/var/backup/feature-gui,\
133 bzr+ssh://offsite.example.org/projectx-corp/backup/feature-gui" >> .bzr/branch/branch.conf
134
135.. _automirror: http://launchpad.net/bzr-automirror
136
137As for any push-type backup strategy that maintains consistency, the downside
138of these methods is that all of the backup commits must succeed before the
139initial commit can succeed. If there is a long chain of bound branches, many
140mirror branches, or if the bound branch has a slow network connection, then
141the delay in the original commit may be unacceptably long. In this case,
142pull-type backups, or a mixed system may be preferable.
143
144
0145
=== added file 'doc/en/admin-guide/code-browsing.txt'
--- doc/en/admin-guide/code-browsing.txt 1970-01-01 00:00:00 +0000
+++ doc/en/admin-guide/code-browsing.txt 2009-12-07 03:05:25 +0000
@@ -0,0 +1,126 @@
1Web-based code browsing
2=======================
3
4Browsing the history of a project online is an important part of version
5control, since it allows people to easily see what happens in a branch
6without having to have a local, up-to-date copy of that branch. There are a
7number of possible choices for browsing Bazaar branches on the web, but we
8will cover one of them in particular detail and briefly mention the other
9choices where they differ.
10
11Loggerhead
12----------
13
14Loggerhead is a code browsing interface for Bazaar branches (originally
15developed for Launchpad). To see an example of Loggerhead in action, browse
16to http://bazaar.launchpad.net/~bzr-pqm/bzr/bzr.dev/files which is the
17loggerhead view of Bazaar's trunk branch. Loggerhead runs as a web
18application on the server which is accessed over HTTP via a RESTful interface.
19It is possible to run this application on its own dedicated port as
20``http://www.example.com:8080`` or to proxy this location behind a separate
21web server, for example at ``http://www.example.com/loggerhead/``. We will
22discuss both of these configurations below.
23
24Requirements
25~~~~~~~~~~~~
26
27Loggerhead depends on a number of other Python packages for the various Web
28technologies that it builds on. Some of these must be installed to use
29loggerhead, although some of them are optional. From the loggerhead `README`
30file, these are
31
321) SimpleTAL for templating.
33 On Ubuntu, `sudo apt-get install python-simpletal`
34 or download from http://www.owlfish.com/software/simpleTAL/download.html
352) simplejson for producing JSON data.
36 On Ubuntu, `sudo apt-get install python-simplejson`
37 or use `easy_install simplejson`.
383) Paste for the server. (You need version 1.2 or newer of Paste.)
39 On Ubuntu, `sudo apt-get install python-paste`
40 or use `easy_install Paste`
414) Paste Deploy (optional, needed when proxying through Apache)
42 On Ubuntu, `sudo apt-get install python-pastedeploy`
43 or use `easy_install PasteDeploy`
445) flup (optional, needed to use FastCGI, SCGI or AJP)
45 On Ubuntu, `sudo apt-get install python-flup`
46 or use `easy_install flup`
47
48Although directions for installing these on Ubuntu Linux are given, most other
49Linux distributions should package these dependencies, making installation
50easy. For Windows and Mac OS X, the should all be ``easy_install``-able or at
51worst installable from the Python sources.
52
53Built-in Web Server
54~~~~~~~~~~~~~~~~~~~
55
56Loggerhead has a built-in web server and when started with the
57``serve-branches`` command, that web server is started on a default port
58listening on the localhost. If port 8080 (the default) is accessible on
59``www.example.com``, then running
60
61::
62
63 $ serve-branches --host=www.example.com --port=8080 /srv/bzr
64
65will list all of the available branches under that directory on
66``http://www.example.com:8080/``, so that the ProjectX trunk could be browsed
67at ``http://www.example.com:8080/projectx/trunk``. Note that loggerhead
68provides HTTP access to the underlying Bazaar branches (similar to that
69described in `Smart server over HTTP(S)
70<other-setups.html#smart-server-over-http-s>`_), so this command should be run
71as a user without write privileges in ``/srv/bzr``. By default, loggerhead
72only listens on the localhost, not any external ports, unless specified as
73above.
74
75Behind a Proxy
76~~~~~~~~~~~~~~
77
78A more common and more safe way to run loggerhead is behind another web server
79which will proxy certain requests to the loggerhead server on the localhost.
80To do this, you need to have PasteDeploy installed (see `Requirements`_).
81Assuming that your server has Apache running, you need to add configuration
82such as this to set up the proxy
83
84::
85
86 <Location "/loggerhead/">
87 ProxyPass http://127.0.0.1:8080/
88 ProxyPassReverse http://127.0.0.1:8080/
89 </Location>
90
91If your proxy runs at some path within the server, then the ``serve-branches``
92command must be started with the ``--prefix`` option. For this example, we
93could start loggerhead with the command
94
95::
96
97 $ serve-branches --prefix=/loggerhead /srv/bzr
98
99This would allow the trunk branch of ProjectX to be browsed at
100``http://www.example.com/loggerhead/projectx/trunk``.
101
102Loggerhead comes with a script allowing it to run as a service on init.d based
103Linux systems. Contributions to do a similar thing on Windows servers would
104be welcomed at http://launchpad.net/loggerhead.
105
106
107Other web interfaces
108--------------------
109
110There are a number of other web interfaces available for Bazaar branches (see
111the list at http://bazaar-vcs.org/WebInterfaces) and we will just mention a
112couple of them here for their advantages in particular situations.
113
114trac+bzr (http://launchpad.net/trac-bzr)
115 Trac is a popular web app that integrates a browser for branches, an issue
116 tracker and a wiki. trac+bzr is a trac extension that allows for the
117 trac to be used with Bazaar.
118
119webbzr (http://thoughts.enseed.com/webbzr)
120 This is a notable solution because it is written in pure PHP for web hosts
121 that don't provide a way to run arbitrary Python applications such as Trac
122 or Loggerhead.
123
124Redmine (http://redmine.org/)
125 Like trac, Redmine is a full project management application using the Ruby
126 on Rails framework. It includes support for Bazaar branches.
0127
=== added file 'doc/en/admin-guide/hooks-plugins.txt'
--- doc/en/admin-guide/hooks-plugins.txt 1970-01-01 00:00:00 +0000
+++ doc/en/admin-guide/hooks-plugins.txt 2009-12-07 03:05:25 +0000
@@ -0,0 +1,309 @@
1Extending Bazaar with Hooks and Plugins
2=======================================
3
4Bazaar offers a powerful extension mechanism for adding capabilities. In
5addition to offering full library API access to all of its structures, which
6can be useful for outside programs that would like to interact with Bazaar
7branches, Bazaar can also load *plugins* that perform specific tasks. These
8specific tasks are specified by *hooks* that run during certain steps of the
9version control process.
10
11For full documentation on the available hooks, see ``bzr help hooks``. Among
12those, some of the most significant hooks from an administration
13standpoint are `pre_commit`, `post_commit` and `post_change_branch_tip`.
14A `pre_commit` hook can inspect a commit before it happens and cancel it if
15some criteria are not met. This can be useful for enforcing policies about
16the code, such as line-endings or whitespace conventions. A
17`post_commit` hook can take actions based on the commit that just happened,
18such as providing various types of notifications. Finally, a
19`post_change_branch_tip` hook is a more general form of a `post_commit`
20hook which is used whenever the tip of a branch changes (which can happen in
21more ways than just committing). This too can be used for notification
22purposes, as well as for backups and mirroring.
23
24Information on the whole range of Bazaar plugins is available at
25http://doc.bazaar-vcs.org/en/plugin-guide. For purposes of installation,
26plugins are simply python packages. They can be installed alongside Bazaar in
27the ``bzrlib.plugins`` package using each plugin's ``setup.py``. They can
28also be installed in the plugin path which is the user's ``~/.bazaar/plugins``
29directory or can be specified with the ``BZR_PLUGIN_PATH`` environment
30variable. See ``bzr help configuration`` for more on specifying the location
31of plugins.
32
33
34Email Notification
35------------------
36
37A common need is for every change made on a branch to send an email message to
38some address, most often a mailing list. These plugins provide that
39capability in a number of different ways. The `email` plugin sends email
40from each individual developer's computer. This can be useful for situations
41that want to track what each individual developer is working on. On the
42downside, it requires that every developer's branches be configured
43individually to use the same plugin. The next two plugins `hookless-email`
44and `email-notifier` are designed to run on a central server whenever changes
45happen on centrally stored branches.
46
47email
48~~~~~
49
50To configure this plugin, simply install the plugin and configure the
51``post_commit_to`` option for each branch. This configuration can be done
52in the ``locations.conf`` file or individually in each branch's
53``branch.conf`` file. The sender's email address can be specified as
54``post_commit_sender`` if it is different than the email address reported by
55``bzr whoami``. The ``post_commit_mailer`` option specifies how the
56mail should be sent. If it isn't set, email is sent via ``/usr/bin/mail``.
57It can also be configured to communicate directly with an SMTP server.
58For more details on configuring this plugin, see
59http://doc.bazaar-vcs.org/plugins/en/email-plugin.html. As examples, consider
60the following two possible configurations. A minimal one (uses
61``/usr/bin/mail``)
62
63::
64
65 [DEFAULT]
66 post_commit_to = projectx-commits@example.com
67
68and a more complicated one (using all of the options)
69
70::
71
72 [DEFAULT]
73 post_commit_url = http://www.example.com/code/projectx/trunk
74 post_commit_to = projectx-commits@example.com
75 post_commit_sender = donotreply@example.com
76 post_commit_mailer = smtplib
77 smtp_server = mail.example.com:587
78 smtp_username = bob
79 # smtp_password = 'not specified, will prompt'
80
81
82hookless-email
83~~~~~~~~~~~~~~
84
85This plugin is basically a server-side version of the `email` plugin. It is
86a program that runs either from the command line or as a daemon that monitors
87the branches specified on the command line for any changes. When a change
88occurs to any of the monitored branches, it will send an email to the
89specified address. Using our simple example, the following command would send
90an email to ``projectx-commits@example.com`` on any of the branches under
91``/srv/bzr`` since the last time the command was run. (This command could be
92set up to run at regular intervals, for example from ``cron``.)
93
94::
95
96 $ bzr_hookless_email.py --email=projectx-commits@example.com \
97 --recurse /srv/bzr
98
99email-notifier
100~~~~~~~~~~~~~~
101
102This is a more elaborate version of the `hookless-email` plugin that can send
103templated HTML emails, render wiki-style markup in commit messages and update
104working copies on the server (similar to `push_and_update`_). It can also
105send emails reporting the creation of new branches or the removal of branches
106under a specified directory (here ``/srv/bzr/projectx``). As it is more
107complicated, its configuration is also more complicated and we won't repeat
108its documentation here, but a simple configuration that will send emails on
109commits and creation/deletion of branches is
110
111::
112
113 [smtp]
114
115 server=smtp.example.com
116 # If user is not provided then no authentication will be performed.
117 user=bob
118 password=pAssW0rd
119
120 [commits]
121
122 # The address to send commit emails to.
123 to=projctx-commits@example.com
124 from=$revision.committer
125
126 # A Cheetah template used to construct the subject of the email message.
127 subject=$relative_path: $revision_number $summary
128
129 [new-branches]
130 to=projectx-commits@example.com
131 from=donotreply@example.com
132 subject=$relative_path: New branch created
133
134 [removed-branches]
135 to=projectx-commits@example.com
136 from=donotreply@example.com
137 subject=$relative_path: Branch removed
138
139If this file is stored as ``/srv/bzr/email-notifier.conf``, then the command
140
141::
142
143 $ bzr-email-notifier.py --config=/srv/bzr/email-notifier.conf /srv/bzr/projectx
144
145will watch all branches under the given directory for commits, branch
146creations and branch deletions.
147
148
149Feed Generation
150---------------
151
152A related concept to sending out emails when branches change is the generation
153of news feeds from changes on each branch. Interested parties can then choose
154to follow those news feeds in order to see what is happening on a branch.
155
156branchfeed
157~~~~~~~~~~
158
159This plugin creates an ATOM feed for every branch on every branch change
160(commit, etc.). It stores these files as ``.bzr/branch/branch.atom`` inside
161each branch. Currently, it includes the 20 most recent changes in each feed.
162To use it, simply install the plugin and set your feed reader to follow the
163``branch.atom`` files.
164
165In addition, there are other tools that are not plugins for creating news
166feeds from Bazaar branches. See http://bazaar-vcs.org/FeedGenerators for more
167on those tools.
168
169Mirroring
170---------
171
172Sometimes it is useful to ensure that one branch exists as an exact copy of
173another. This can be used to provide simple backup facilities or redundancy
174(see `Back-up and restore <backup.html>`_ for more details on backups). One
175way to do this using Bazaar's workflows is to make the branch where changes
176happen into a bound branch of the mirror branch. Then, when commits happen on
177the working branch, they will also happen on the mirror branch. It is possible
178to make a chain of bound branches to create multiple mirrors. Note that
179commits to bound branches do *not* update the mirror branch's working copy, so
180if the mirror branch is more than just a backup of the complete history of the
181branch, for example if it is being served as a web page, then additional
182plugins are necessary.
183
184push_and_update
185~~~~~~~~~~~~~~~
186
187This plugin updates Bazaar's ``push`` command to also update the remote
188working copy. It can only work over connections that imply filesystem or SSH
189access to the remote working copy (``bzr+ssh://``, ``sftp://`` and
190``file://``). Also, it is only useful when the remote branch is updated with
191an explicit ``push`` command.
192
193.. TODO: check that the list of URLs is correct
194
195automirror
196~~~~~~~~~~
197
198This plugin is similar to `push_and_update` in that it updates the working
199copy of a remote branch. The difference is that this plugin is designed to
200update the remote branch on every change to the working branch. To configure
201this, set the ``post_commit_mirror = URL`` option on a branch. This option
202can include multiple branch URLs separated by commas to create multiple
203mirrors. For example, if we want to mirror our ``/srv/bzr/projectx/trunk``
204branch to the URL ``sftp://www.example.com/var/www/projectx`` (for example if
205ProjectX were a web project that we wanted to access at
206``http://www.example.com/projectx``), then we could include
207
208::
209
210 [DEFAULT]
211 post_commit_mirror = sftp://www.example.com/var/www/branches/trunk
212
213in the file ``/srv/bzr/projectx/trunk/.bzr/branch/branch.conf``.
214
215
216Other Useful Plugins
217--------------------
218
219pqm (plugin)
220~~~~~~~~~~~~
221
222Discussed further under `PQM <integration.html#patch-queue-manager-pqm>`_, this
223plugin submits each commit on a branch to the Patch Queue Manager, which can
224run the test suite before committing that revision to another branch.
225
226testrunner
227~~~~~~~~~~
228
229Sometimes referred to as the poor man's PQM, this plugin runs a single command
230on the updated revision (in a temporary directory) and if the command returns
2310, then the revision can be committed to that branch. For example, if the
232testsuite is run with the command ``nosetests`` in the root of the branch
233(which returns 0 if the test suite passes and 1 if it doesn't pass), then one
234can set
235
236::
237
238 [DEFAULT]
239 pre_change_branch_tip_test_command = nosetests
240
241in ``.bzr/branch/branch.conf``.
242
243checkeol
244~~~~~~~~
245
246This plugin is an example of a `pre_commit` hook that checks the revision
247being committed for meeting some policy. In this case, it checks that all of
248the files have the specified line endings. It uses a configuration file
249``.bzreol`` in the root of the working tree (similar to the ``.bzrignore``
250file). This configuration file has sections for line feed endings (LF),
251carriage return/line-feed endings (CRLF) and carriage return endings (CR).
252For an unusual example that specifies different line endings for different
253files, that file might look like
254
255::
256
257 [LF]
258 *.py
259 *.[ch]
260
261 [CRLF]
262 *.txt
263 *.ini
264
265 [CR]
266 foo.mac
267
268or if you simply want to enforce a single line ending convention on the branch
269you can use
270
271::
272
273 [LF]
274 *
275
276This plugin needs to be installed on the server where the branch updates will
277happen, and the ``.bzreol`` file must be in each branch where line ending
278policies will be enforced. (Adding it to the branch with ``bzr add .bzreol``
279is an easy way to ensure this, although it means that branches on the server
280must have working trees.)
281
282text_checker
283~~~~~~~~~~~~
284
285This plugin is a more advanced version of `checkeol` that can check such
286coding style guidelines such as trailing whitespace, long lines and files that
287don't end with a newline. It is configured using Bazaar's built in rules
288specification in ``BZR_HOME/rules`` (see ``bzr help rules`` for more
289information. For different types of undesired changes, you can specify
290different types of actions. For example
291
292::
293
294 [name NEWS README]
295 trailing_whitespace=fail
296 long_lines=warn
297 newline_at_eof=ignore
298
299 [name *.py]
300 tabs=fail
301 long_line_length=78
302 long_lines=fail
303 trailing_whitespace=fail
304
305will prevent changes from adding new trailing whitespace to the specified
306files and keep all python source files free of tabs and lines over 78
307characters. To commit while violating these rules, one can pass the
308``--text-check-warn-only`` option to commit.
309
0310
=== modified file 'doc/en/admin-guide/index.txt'
--- doc/en/admin-guide/index.txt 2008-03-05 16:38:20 +0000
+++ doc/en/admin-guide/index.txt 2009-12-07 03:05:25 +0000
@@ -1,114 +1,25 @@
1==========================1###################################
2Bazaar Administrator Guide2Bazaar System Administrator's Guide
3==========================3###################################
44
5Note: this is a work in progress!5.. Please mark sections in included files as following:
66.. level 1 ========
7.. contents:: Table of contents7.. level 2 --------
8 :depth: 28.. level 3 ~~~~~~~~
99.. level 4 ^^^^^^^^ (it is better not to use nesting deeper than 3 levels)
10Introduction10
11============11
1212.. toctree::
13Introduction to administering a Bazaar server installation.13 :maxdepth: 2
1414
15Scope of this guide15 introduction
16-------------------16 simple-setups
1717 other-setups
18What you need to run a Bazaar server18 migration
19------------------------------------19 hooks-plugins
2020 code-browsing
21Platform requirements etc21 integration
2222 security
2323 backup
24Simple setup24 upgrade
25============25 advanced
26
27Smart server
28------------
29
30Recommended tools
31-----------------
32
33
34Migration
35=========
36
37Migrating from another VCS.
38
39Legacy VCS to bzr sync.
40
41
42Hooks
43=====
44
45
46Web-based code browsing
47=======================
48
49Loggerhead etc.
50
51
52Integration with other tools
53============================
54
55PQM
56---
57
58Bug trackers
59------------
60
61Continuous integration tools
62----------------------------
63
64e.g. Cruise Control
65
66Bundle Buggy
67------------
68
69
70Security
71========
72
73Authentication
74--------------
75
76ACLs
77----
78
79
80Back-up and restore
81===================
82
83
84Upgrades
85========
86
87Software upgrades
88-----------------
89
90Disk format upgrades
91--------------------
92
93Plugin upgrades
94---------------
95
96
97System monitoring
98=================
99
100
101Capacity planning tips
102======================
103
104Disk management etc.
105
106
107Advanced topics
108===============
109
110Clustering
111----------
112
113Multi-site setups
114-----------------
11526
=== added file 'doc/en/admin-guide/integration.txt'
--- doc/en/admin-guide/integration.txt 1970-01-01 00:00:00 +0000
+++ doc/en/admin-guide/integration.txt 2009-12-07 03:05:25 +0000
@@ -0,0 +1,14 @@
1Integration with Other Tools
2============================
3
4Patch Queue Manager (PQM)
5-------------------------
6
7Bug Trackers
8------------
9
10Continuous Integration Tools
11----------------------------
12
13Bundle Buggy
14------------
015
=== added file 'doc/en/admin-guide/introduction.txt'
--- doc/en/admin-guide/introduction.txt 1970-01-01 00:00:00 +0000
+++ doc/en/admin-guide/introduction.txt 2009-12-07 03:05:25 +0000
@@ -0,0 +1,57 @@
1Introduction
2============
3
4Welcome to the Bazaar Version Control System's guide for system
5administrators. Bazaar is a flexible system that provides many possible
6options for serving projects, in ways that will hopefully meet your needs. If
7you have requirements that are not met by the current state of the Bazaar
8ecosystem, please let us know at bazaar@lists.canonical.com on on Launchpad at
9https://launchpad.net/bzr.
10
11Scope of this guide
12-------------------
13
14In this guide, we will discuss various techniques for making Bazaar projects
15available, migrating from other Version Control Systems, browsing code over
16the Web and combining Bazaar with other tools. In many of these categories,
17multiple options exist and we will try to explains the costs and benefits of
18the various options.
19
20The intended audience for this guide is the individuals who administer the
21computers that will do the serving. Much of the configuration that we will
22discuss requires administrator privileges and we will not necessarily indicate
23every point that those privileges are needed. That said, reading this guide
24can also be very helpful for those who are interested in communicating to the
25system administrators about the requirements for making full use of Bazaar.
26
27What you need to run a Bazaar server
28------------------------------------
29
30Where possible, we will discuss both Unix (including Linux) and Windows server
31environments. For the purposes of this document, we will consider Mac OS X as
32a type of Unix.
33
34In general, Bazaar requires only Python_ 2.4 or greater and the cElementTree_
35package (included in Python 2.5 and later) to run. If you would *optionally*
36like to be able to access branches using SFTP, you need `paramiko and
37pycrypto`_.
38
39.. _Python: http://www.python.org/
40.. _cElementTree: http://effbot.org/zone/element-index.htm
41.. _paramiko and pycrypto: http://www.lag.net/paramiko/
42
43For maximum performance, Bazaar can make use of compiled versions of some
44critical components of the code. Pure Python alternatives exist for all of
45these components, but they may be considerably slower. To compile these
46extensions, you need a C compiler and the relevant header files from the
47Python package. On Linux, these may be in a separate package. Other
48operating systems should have the required headers installed by default.
49
50If you are installing a development version of Bazaar, rather than a released
51version, you will need Pyrex_ to create the C extensions. The release
52tarballs already have the Pyrex-created C files.
53
54.. _Pyrex: http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/
55
56
57
058
=== added file 'doc/en/admin-guide/migration.txt'
--- doc/en/admin-guide/migration.txt 1970-01-01 00:00:00 +0000
+++ doc/en/admin-guide/migration.txt 2009-12-07 03:05:25 +0000
@@ -0,0 +1,68 @@
1Migration
2=========
3
4Fast Import
5-----------
6
7In many projects wishing to use Bazaar, there is pre-existing history for the
8codebase that should be taken into consideration. Bazaar leverages an
9interchange format originally developed for Git called `fast-import` to
10provide migration strategies for many other version control systems. To
11work with fast-import files, Bazaar needs the `fastimport`_ plugin. This can
12be installed as with any Bazaar plugin.
13
14.. _fastimport: http://launchpad.net/bzr-fastimport
15
16The way that fast-import can be used for migration is to export the existing
17history into a fast-import file, then use the ``bzr fast-import`` command.
18The `fastimport` plugin includes exporters for Subversion, CVS, Git, Mercurial
19and darcs, accessible as the ``fast-export-from-XXX`` commands. Note that
20``fast-import`` should not be used in a branch with existing history.
21
22Assuming that ProjectX was first developed in Mercurial before switching to
23Bazaar, and that the Mercurial repository is in ``/srv/hg/projectx``, the
24following commands will import that history into a newly created ``trunk``
25branch. (Recall that in `Further Configuration
26<simple-setups.html#further-configuration>`_ we created the
27``/srv/bzr/projectx`` directory as a shared repository.)
28
29::
30
31 $ cd /srv/bzr/projectx
32 $ bzr fast-export-from-hg ../../hg/projectx projectx.fi
33 $ bzr init trunk
34 $ bzr fast-import projectx.fi trunk
35
36Subversion Conversion
37---------------------
38
39As the most common centralized version control system, migration from
40Subversion is particularly important for any *new* version control system.
41Bazaar's `svn`_ plugin provides tools for interaction with Subversion
42projects. In fact, Bazaar can be used transparently with projects stored in
43Subversion, but that is beyond the scope of this document. (See
44http://doc.bazaar-vcs.org/en/migration/foreign/bzr-on-svn-projects.html for
45more on that subject.) What is relevant here is the ``svn-import`` command
46provided by that plugin. This can import an entire subversion repository
47including tags and branches, particularly if they are stored in Subversion's
48recommended directory structure: ``/tags/``, ``/branches/`` and ``/trunk/``.
49
50This command has flexible ways to specify what paths within the Subversion
51repository contain branches and which contain tags. For example, the
52recommended layout for Subversion projects (called ``trunk`` by the svn
53plugin) could be specified in ``~/.bazaar/subversion.conf`` as
54
55::
56
57 [203ae883-c723-44c9-aabd-cb56e4f81c9a]
58 branches = branches/*
59 tags = tags/*
60
61This allows substantially complicated Subversion repositories to be converted
62into a set of separate Bazaar branches. After installing the svn plugin, see
63``bzr help svn-import`` and ``bzr help svn-layout``.
64
65.. _svn: http://launchpad.net/bzr-svn
66
67.. TODO: Legacy VCS to bzr sync. Tailor? Incremental conversions?
68
069
=== added file 'doc/en/admin-guide/other-setups.txt'
--- doc/en/admin-guide/other-setups.txt 1970-01-01 00:00:00 +0000
+++ doc/en/admin-guide/other-setups.txt 2009-12-07 03:05:25 +0000
@@ -0,0 +1,60 @@
1Other Setups
2============
3
4Dumb servers
5------------
6
7Bazaar can also serve branches over protocols that know nothing about Bazaar's
8specific needs. These are called "dumb servers" to distinguish them from
9Bazaar's native protocol. Currently HTTP, FTP, SFTP and HTTP+WebDAV can be
10used to read branches remotely. FTP, SFTP and HTTP+WebDAV can be used for
11writing as well. To use any of these protocols, it is just necessary to
12provide access to the server's filesystem under ``/srv/bzr``.
13
14For example, for Apache to provide read-only access to the branches
15in ``/srv/bzr`` the configuration may look like this::
16
17 Alias /code /srv/bzr
18 <Directory /srv/bzr>
19 Options Indexes
20 # ...
21 </Directory>
22
23and users could use the URL ``http://server.example.com/code/projectx/trunk``
24to refer to the trunk branch.
25
26Note that SFTP access is often available whenever there is SSH access, but it
27may be a good choice when Bazaar cannot be installed on the server to allow
28``bzr+ssh://`` access. Dumb servers are slower by their very nature than the
29native protocol, but they can be a good choice in situations where the
30software and protocols that can be used on the server or the network is
31limited.
32
33Smart server over HTTP(S)
34-------------------------
35
36Bazaar can use its native protocol with HTTP requests. Since HTTP is a
37network protocol that is available on many networks, this can be a good option
38where SSH access is not possible. Another benefit of this setup is that all
39of the authentication and access control methods available to the HTTP server
40(basic, LDAP, ActiveDirectory, etc.) are then available to control access to
41Bazaar branches. More information about setting up this type of access using
42Apache and FastCGI or mod_python or WSGI is in the
43`User's Guide <../user-guide/http_smart_server.html>`_.
44
45Direct Smart Server Access
46--------------------------
47
48The built-in server that is used by ``bzr+ssh://`` access can also be used as
49a persistent server on a dedicated port. Bazaar's official port is 4155,
50although the port used can be configured. Further information on running the
51Bazaar smart server from inetd, or directly from the shell is in the `User's
52Guide <../user-guide/server.html#inetd>`_. The dedicated Bazaar server does not
53currently perform any authentication, so this server by default provides
54read-only access. It can be run with the ``--allow-writes`` option, but if
55the user that the server is running as has write access to the branch
56directories on the filesystem, then this will allow anyone with access to port
574155 on the server to make changes to the branches stored there.
58
59
60
061
=== added file 'doc/en/admin-guide/security.txt'
--- doc/en/admin-guide/security.txt 1970-01-01 00:00:00 +0000
+++ doc/en/admin-guide/security.txt 2009-12-07 03:05:25 +0000
@@ -0,0 +1,9 @@
1Security
2========
3
4Authentication
5--------------
6
7Access Control
8--------------
9
010
=== added file 'doc/en/admin-guide/simple-setups.txt'
--- doc/en/admin-guide/simple-setups.txt 1970-01-01 00:00:00 +0000
+++ doc/en/admin-guide/simple-setups.txt 2009-12-07 03:05:25 +0000
@@ -0,0 +1,92 @@
1Simple Setups
2=============
3
4Consider the following simple scenario where we will be serving Bazaar
5branches that live on a single server. Those branches are in the
6subdirectories of ``/srv/bzr`` (or ``C:\\bzr``) and they will all be related to a
7single project called "ProjectX". ProjectX will have a trunk branch and at
8least one feature branch. As we get further, we will consider other
9scenarios, but this will be a sufficiently motivating example.
10
11Smart server
12------------
13
14The simplest possible setup for providing outside access to the branches on
15the server uses Bazaar's built-in smart server tunneled over SSH_ so
16that people who can access your server using SSH can have read and write
17access to branches on the server. This setup uses the authentication
18mechanisms of SSH including private keys, and the access control mechanisms of
19the server's operating system. In particular, using groups on the server, it
20is possible to provide different access privileges to different groups of
21developers.
22
23.. _SSH: http://www.openssh.org/
24
25Setup
26~~~~~
27
28There is no setup required for this on the server, apart from having Bazaar
29installed and SSH access available to your developers. Using SSH
30configuration options it is possible to restrict developers from using
31anything *but* Bazaar on the server via SSH, and to limit what part of the
32file system they can access.
33
34Client
35~~~~~~
36
37Clients can access the branches using URLs with the ``bzr+ssh://`` prefix. For
38example, to get a local copy of the ProjectX trunk, a developer could do::
39
40 $ bzr branch bzr+ssh://server.example.com/srv/bzr/projectx/trunk projectx
41
42If the developers have write access to the ``/srv/bzr/projectx`` directory, then
43they can create new branches themselves using::
44
45 $ bzr branch bzr+ssh://server.example.com/srv/bzr/projectx/trunk \
46 bzr+ssh://server.example.com/srv/bzr/projectx/feature-gui
47
48Of course, if this isn't desired, then developers should not have write access
49to the ``/srv/bzr/projectx`` directory.
50
51Further Configuration
52~~~~~~~~~~~~~~~~~~~~~
53
54For a project with multiple branches that are all related, it is best to use a
55shared repository to hold all of the branches. To set this up, do::
56
57 $ cd /srv/bzr
58 $ bzr init-repo --no-trees projectx
59
60The ``--no-trees`` option saves space by not creating a copy of the working
61files on the server's filesystem. Then, any branch created under
62``/srv/bzr/projectx`` (see `Migration <migration.html>`_ for some ways to do
63this) will share storage space, which is particularly helpful for branches that
64have many revisions in common, such as a project trunk and its feature
65branches.
66
67If Bazaar is not installed on the user's path or not specified in the SSH
68configuration, then a path can be specified from the client with the
69``BZR_REMOTE_PATH`` environment variable. For example, if the Bazaar executable
70is installed in ``/usr/local/bzr-2.0/bin/bzr``, then a developer could use::
71
72 $ BZR_REMOTE_PATH=/usr/local/bzr-2.0/bin/bzr bzr info \
73 bzr+ssh://server.example.com/srv/bzr/proectx/trunk
74
75to get information about the trunk branch. The remote path can also be
76specified in Bazaar's configuration files for a particular location. See
77``bzr help configuration`` for more details.
78
79If developers have home directories on the server, they can use ``/~/`` in
80URLs to refer to their home directory. They can also use ``/~username/`` to
81refer to the home directory of user ``username``. For example, if there are two
82developers ``alice`` and ``bob``, then Bob could use::
83
84 $ bzr log bzr+ssh://server.example.com/~/fix-1023
85
86to refer to one of his bug fix branches and::
87
88 $ bzr log bzr+ssh://server.example.com/~alice/fix-2047
89
90to refer to one of Alice's branches.
91
92
093
=== added file 'doc/en/admin-guide/upgrade.txt'
--- doc/en/admin-guide/upgrade.txt 1970-01-01 00:00:00 +0000
+++ doc/en/admin-guide/upgrade.txt 2009-12-07 03:05:25 +0000
@@ -0,0 +1,76 @@
1Upgrades
2========
3
4Bazaar has a strong commitment to inter-version compatibility both on disk and
5over the network. Newer clients should be able to interact with older
6versions on the server (although perhaps not at optimal speed) and older
7clients should also be able to communicate with newer versions of Bazaar on
8the server. Divergences from this rule are considered bugs and are fixed in
9later versions.
10
11That said, Bazaar is constantly improving and the most recent versions are the
12most featureful and have better performance. In particular, the Bazaar
13versions after 2.0 have significant advantages over earlier versions,
14including a more compact disk format, faster network operations and overall
15performance improvements. With the 2.0 release, Bazaar has moved to a
16stable/development release model where the 2.x series is maintained with
17bugfixes releases for six months, while simultaneously the 2.(x+1) series is
18being developed with monthly beta releases that are suitable for everyday use.
19Bazaar development has a stable trunk with an extensive test suite, so there
20is no reason to fear using the development series for everyday use, it simply
21changes more often than the stable series.
22
23
24Software upgrades
25-----------------
26
27Upgrading the Bazaar software is as simple re-installing the Python package
28using either the latest binary package for Windows or Mac OS X, the binary
29package provided by your Linux distribution, or installing from the source
30release. See http://bazaar-vcs.org/Downloads for the latest releases for all
31supported platforms.
32
33Bazaar's later versions support all of the earlier disk formats (back to the
34very first one), so there is no need to upgrade the branches on the disk when
35upgrading the software. To make use of particular new features that might
36need updated versions on both the server and developer's machines, it does not
37matter if the clients or the servers are upgraded first.
38
39
40Disk format upgrades
41--------------------
42
43In its evolution, Bazaar has used a sequence of disk formats for improved
44storage efficiency and speed. With the new disk format released in version
452.0, there is a commitment to keep that disk format until version 3.0 is
46released, which has not even been planned yet. (Bazaar 2.0 was released
47almost two years after Bazaar 1.0.) As a result, disk format upgrades should
48be extremely infrequent.
49
50If there are existing branches in an older format that you would like to
51upgrade to the latest format, you can see the `2.0 Upgrade Guide
52<../upgrade-guide/index.html>`_ for more information. From the system
53administration perspective, it is important to coordinate the timing of
54various upgrades in the process. First, the central branches on the server
55should be upgraded. Next, any local mirrors that developers have should be
56upgraded. Finally, developers' local branches should be upgraded. These
57upgrades will require an appropriate version of the software whenever they are
58performed. (It is possible to upgrade branches remotely over the network, but
59it may be much slower.)
60
61
62Plugin upgrades
63---------------
64
65When Bazaar does update its version, plugins that use the Bazaar API may need
66to be upgraded to reflect changes in that API. Some plugins have strict
67version dependencies on the version of the Bazaar API that they will accept.
68If this is the case, then you should ensure that the plugins you depend on
69have been updated *before* you upgrade your Bazaar version to avoid a
70situation where your plugins won't work with the installed version of Bazaar.
71If this does happen, then the solution is simply to reinstall the previous
72version of Bazaar that *did* work with the plugins. For installations that
73depend on a large number of plugins, this sort of version upgrade should be
74tested in a safe sandbox to ensure that the entire collection of Bazaar and
75its plugins can all work together.
76
077
=== modified file 'doc/en/conf.py'
--- doc/en/conf.py 2009-09-09 13:34:08 +0000
+++ doc/en/conf.py 2009-12-07 03:05:25 +0000
@@ -73,8 +73,6 @@
7373
74# List of documents that shouldn't be included in the build.74# List of documents that shouldn't be included in the build.
75unused_docs = [75unused_docs = [
76 # Placeholder for later
77 'admin-guide/index',
78 # Subtopics that get included76 # Subtopics that get included
79 'upgrade-guide/overview',77 'upgrade-guide/overview',
80 'upgrade-guide/data_migration',78 'upgrade-guide/data_migration',
8179
=== modified file 'doc/en/index.txt'
--- doc/en/index.txt 2009-09-09 11:43:10 +0000
+++ doc/en/index.txt 2009-12-07 03:05:25 +0000
@@ -16,3 +16,4 @@
16 release-notes/index16 release-notes/index
17 upgrade-guide/index17 upgrade-guide/index
18 user-reference/index18 user-reference/index
19 admin-guide/index