4
Setting up a central repository
5
-------------------------------
7
While the centralized workflow can be used by socially nominating
8
any branch on any computer as the central one, in practice most
9
teams have a dedicated server for hosting central branches.
11
Just as it's best practice to use a shared repository locally,
12
it's advisable to put central branches in a shared repository.
13
Note that central shared branches typically only want to
14
store history, not working copies of files, so their enclosing
15
repository is usually creating using the ``no-trees`` option, e.g.::
17
bzr init-repo --no-trees sftp://centralhost/srv/bzr/PROJECT
19
You can think of this step as similar to setting up a new cvsroot or
20
Subversion repository. However, Bazaar gives you more flexibility
21
in how branches may be organised in your repository. See
22
`Advanced shared repository layouts`_ in the appendices for
23
guidelines and examples.
26
Starting a central branch
27
-------------------------
29
There are two ways of populating a central branch with some initial
32
1. Making a local branch and pushing it to a central location
33
2. Making an empty central branch then committing content to it.
35
Here is an example of the first way::
37
bzr init-repo PROJECT (prepare local repository)
38
bzr init PROJECT/trunk
40
(copy development files)
41
cp -ar ~/PROJECT . (copy files in using OS-specific tools)
42
bzr add (populate repository; start version control)
43
bzr commit -m "Initial import"
44
(publish to central repository)
45
bzr push sftp://centralhost/srv/bzr/PROJECT/trunk
47
Here is an example of the second way::
49
bzr init-repo PROJECT (prepare local repository)
51
bzr init sftp://centralhost/srv/bzr/PROJECT/trunk
52
bzr checkout sftp://centralhost/srv/bzr/PROJECT/trunk
54
cp -ar ~/PROJECT . (copy files in using OS-specific tools)
55
bzr add (populate repository; start version control)
56
bzr commit -m "Initial import"
57
(publish to central repository)
58
bzr push sftp://centralhost/srv/bzr/project/trunk
60
Note that committing inside a working tree created using
61
the ``checkout`` command implicitly commits the content to
62
the central location as well as locally. Had we used the
63
``branch`` command instead of ``checkout`` above, the
64
content would have only been committed locally.
66
Working trees that are tightly bound to a central location
67
like this are called *checkouts*. The rest of this chapter
68
explains their numerous features in more detail.