[bzr] repo for bzr
Andreas Ostermann
andreas.ostermann.11 at googlemail.com
Wed Mar 23 09:24:06 UTC 2011
Hello Jelmer,
2011/3/23 Jelmer Vernooij <jelmer at samba.org>:
> On Wed, 2011-03-23 at 09:32 +0100, Andreas Ostermann wrote:
>> Is there anything like repo for bzr?
> Can you explain what repo is, and in what ways it is different from e.g.
> bzr-externals?
Without going to the details (you can find them here:
http://source.android.com/source/git-repo.html).
With bzr-externals - as far as I understtod - , like svn-externals,
you can "link" your repository to an other repository, saying to
checkout a branch to a folder in your current checkout
simplify:
repository a
class 1
class 2
repository b
class 3
class 4
extern repo a -r 42 a
When you checkout b you will get:
b
class 3
class 4
a
class 1
class 2
So you can work with it.
However, when you now change something to a and commit it, you have to
change the external link by your own.
with repo which uses git you create something:
repository a
class 1
class 2
repository b
class 3
class 4
repository c ("repo" manifest) -> a project
a -r 42
b -r 48
You could now checkout c which will internally checkout and b:
project
a
class 1
class 2
b
class 3
class 4
and with repo you can make update and status calls at the highest
level and the tool will iterate through all "sub"-projects. So when
you change something on class 1, you can either checkin using bzr
inside the a checkout or using repo to checkin.
However, when you use repo to make the checkin or even when you used
bzr directly on project a, and you will be notified that there is a
change and you must make a repo commit to freeze the configuration.
This is only a very rough explanation.
And repo has own disadvantages, which sometimes drive me crazy.
What I / we need is a tool for version projects, where a project is a
collection of repositorys.
e.g. an embedded GNU/Linux system:
you need:
bootloader
kernel
rootfs
own modules
own libs
own applications
However parts of them are not project dependend, if you have a board
which is used in more than one project, bootloader, kernel and rootfs
could be reused
But in different projects I need different libs and then of course the
project specific application
So I need something to create on my local machine a environment
containing all the project specific stuff, and this tool has to take
care, that when I change something (changing files in the subproject,
or changing the revision of a subproject) It let me change and freeze
the configuration of the whole project to a revision.
repo seems to be the only tool which brings this, but it is linked to git.
In other companies I have seen people doing with svn and sv-externals,
which leads to a lot of trouble because people change something and
forget to change the link.
Then I have seen batch files, which are stored in an own repository
and if called will checkout different repositories to combine them to
a system, again if someone forget to change all links in the batchfile
the whole system is not useable.
So there must be a tool to take care about this. And this also means,
when you try to commit the current "manifest" it will check if the
local folders represent the manifest or if there had been changes and
if so, tell me to correct this first.
Hope you get the idea,
AO
More information about the bazaar
mailing list