37
37
Clients can access the branches using URLs with the ``bzr+ssh://`` prefix. For
38
38
example, to get a local copy of the ProjectX trunk, a developer could do::
40
$ bzr branch bzr+ssh://server.example.com/srv/bzr/projectx/trunk projectx
40
$ brz branch bzr+ssh://server.example.com/srv/bzr/projectx/trunk projectx
42
42
If the developers have write access to the ``/srv/bzr/projectx`` directory, then
43
43
they can create new branches themselves using::
45
$ bzr branch bzr+ssh://server.example.com/srv/bzr/projectx/trunk \
45
$ brz branch bzr+ssh://server.example.com/srv/bzr/projectx/trunk \
46
46
bzr+ssh://server.example.com/srv/bzr/projectx/feature-gui
48
48
Of course, if this isn't desired, then developers should not have write access
55
55
shared repository to hold all of the branches. To set this up, do::
58
$ bzr init-repo --no-trees projectx
58
$ brz init-shared-repo --no-trees projectx
60
60
The ``--no-trees`` option saves space by not creating a copy of the working
61
61
files on the server's filesystem. Then, any branch created under
64
64
have many revisions in common, such as a project trunk and its feature
67
If Bazaar is not installed on the user's path or not specified in the SSH
68
configuration, then a path can be specified from the client with the
67
If Bazaar or Breezy is not installed on the user's path or not specified in the
68
SSH configuration, then a path can be specified from the client with the
69
69
``BZR_REMOTE_PATH`` environment variable. For example, if the Bazaar executable
70
70
is installed in ``/usr/local/bzr-2.0/bin/bzr``, then a developer could use::
72
$ BZR_REMOTE_PATH=/usr/local/bzr-2.0/bin/bzr bzr info \
72
$ brz_REMOTE_PATH=/usr/local/bzr-2.0/bin/bzr bzr info \
73
73
bzr+ssh://server.example.com/srv/bzr/proectx/trunk
75
75
to get information about the trunk branch. The remote path can also be
76
76
specified in Bazaar's configuration files for a particular location. See
77
``bzr help configuration`` for more details.
77
``brz help configuration`` for more details.
79
79
If developers have home directories on the server, they can use ``/~/`` in
80
80
URLs to refer to their home directory. They can also use ``/~username/`` to
81
81
refer to the home directory of user ``username``. For example, if there are two
82
82
developers ``alice`` and ``bob``, then Bob could use::
84
$ bzr log bzr+ssh://server.example.com/~/fix-1023
84
$ brz log bzr+ssh://server.example.com/~/fix-1023
86
86
to refer to one of his bug fix branches and::
88
$ bzr log bzr+ssh://server.example.com/~alice/fix-2047
88
$ brz log bzr+ssh://server.example.com/~alice/fix-2047
90
90
to refer to one of Alice's branches. [#]_
113
113
The following example shows how a single line is configured::
115
command="bzr serve --inet --allow-writes --directory=/srv/bzr",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAA...= my bzr key
115
command="brz serve --inet --allow-writes --directory=/srv/bzr",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAA...= my bzr key
117
This command allows the user to access only bzr and disables other SSH use. Write
117
This command allows the user to access only brz and disables other SSH use. Write
118
118
access to each repository in the directory ``/srv/bzr`` has been granted with ``--allow-writes``
119
119
and can be removed for individual users that should only require read access. The root of
120
120
the directory structure can be altered for each user to allow them to see only a subet
122
122
for Alice and Bob. This method will not allow you to restrict access to part
123
123
of a repository, you may only restrict access to a single part of the directory structure::
125
command="bzr serve --inet --allow-writes --directory=/srv/bzr/alice/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAA...= Alice's SSH Key
126
command="bzr serve --inet --allow-writes --directory=/srv/bzr/bob/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAA...= Bob's SSH Key
127
command="bzr serve --inet --allow-writes --directory=/srv/bzr/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAA...= Repo Manager SSH Key
125
command="brz serve --inet --allow-writes --directory=/srv/bzr/alice/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAA...= Alice's SSH Key
126
command="brz serve --inet --allow-writes --directory=/srv/bzr/bob/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAA...= Bob's SSH Key
127
command="brz serve --inet --allow-writes --directory=/srv/bzr/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAA...= Repo Manager SSH Key
129
129
Alice and Bob have access to their own repository and Repo Manager
130
130
has access to the each of their repositories. Users are not allowed access to any part of
131
131
the system except the directory specified. The bzr+ssh urls are simplified by
132
serving using ``bzr serve`` and the ``--directory`` option.
132
serving using ``brz serve`` and the ``--directory`` option.
134
134
If Alice logs in she uses the following command for her fix-1023 branch::
136
$ bzr log bzr+ssh://bzruser@server.example.com/fix-1023
136
$ brz log bzr+ssh://bzruser@server.example.com/fix-1023
138
138
If Repo Manager logs in he uses the following command to access Alice's
141
$ bzr log bzr+ssh://bzruser@server.example.com/alice/fix-1023
141
$ brz log bzr+ssh://bzruser@server.example.com/alice/fix-1023