Bazaar and Mercurial are both distributed source control systems
written in Python. DSCM is the future of source control because you
have an entire repository clone with each checkout, which lets you
perform offline commits, FAST history searches, and (this is an
implementation detail, but holds for both bzr and hg) much better
merging than svn. Despite being relatively young, bzr and hg also
have many more actively developed extensions than subversion, which
may be related to being built in Python, and both have big-name
projects using them, such as Launchpad on bzr and Mozilla on hg.
As usual, we'll be meeting at 7:00 PM at the U. Directions on
http://utahpython.org. See you there!
-Jonathan
Two different presenters. David didn't use slides.
-Jonathan
As Jonathan said, no slides. But I'm happy to answer any questions you have.
If you don't think your questions fit well with the group, feel free to e-mail
me directly (fug...@gmail.com), but bzr *is* written in Python, so...
> Anyway, we're looking around at alternatives that might save us time in the
> long run. Bazaar looks like an option. I thought I'd see if anybody uses
> it.
I use it and love it. I got started with it because it had a svn plugin that
would have let me work with my svn repos disconnected. The plugin was beta and
didn't do that yet, but I got hooked on straight bzr in the process.
> Do you use their NestedTrees with the ConfigManager plugin?
Nope. But I do have vendor branches that I use in several projects. The build
system I use in those cases (ASDF for Common Lisp) takes care of that with a
little bit of symlink magic.
I'm not at my main development sys right now, but I've got the bzrtools and svn
plugins installed everywhere.
Cheers,
David
> >
>
>
>
>
>>
>> I use it and love it. I got started with it because it had a svn
>> plugin that
>> would have let me work with my svn repos disconnected. The plugin
>> was beta and
>> didn't do that yet, but I got hooked on straight bzr in the process.
>>
>> > Do you use their NestedTrees with the ConfigManager plugin?
>>
>> Nope. But I do have vendor branches that I use in several
>> projects. The build
>> system I use in those cases (ASDF for Common Lisp) takes care of that with a
>> little bit of symlink magic.
>>
>
> I did actually install and play around with it for a while yesterday.
> One thing I didn't really like was that making a branch was basically
> making a copy of the repository into a new directory. I can envision
> an environment with a lot of branches potentially. This didn't seem
> like something that would work very well when you want to set up
> development tools for building and working on the code that depend on
> the location of the files. Did I miss something? Perhaps there is a
> way to work on a branch without checking it out somewhere else.
I've never used ConfigManager/NestedTrees, but I have been a happy
Bazaar user for 2-3 years.
I'm not sure if your question is regarding the amount of space taken
up by the branches/repositories, or if it's about absolute paths in
your build scripts (ick).
If it's about the disk space taken up by multiple branches of the same
project -- you can use a shared repository and the branches will share
the revisions that they have in common:
http://bazaar-vcs.org/SharedRepositoryTutorial
One of the things David pointed out during his demonstration is that
Bzr is very flexible with regard to how the developers are organized
and the workflow they use. Here are some docs on the wiki :
http://bazaar-vcs.org/Workflows
and
http://doc.bazaar-vcs.org/bzr.dev/en/user-guide/index.html#team-collaboration-central-style
For example, if you don't _need_ a copy of the repo -- for example, on
a CI server doing the build -- you could just use a lightweight
checkout : http://bazaar-vcs.org/CheckoutTutorial
-Steve
If it's painful if you lose it, it should be checked in.
-Jonathan
There are a few ways to deal with this, I think. Let's say that you have all of
your lines of development in their own branches, plus one additional local
branch for working with. Checkout style:
bzr co /dev-branches/feature1 working # initial setup
cd working
(do some work, then want to switch)
bzr ci -m "Blah..."
bzr sw /dev-branches/feature2 # every other time
Branch style:
bzr branch /dev-branches/feature1 working # initial setup
cd working
(do some work...)
bzr ci -m "Blah..."
bzr push (or merge, as appropriate)
bvz pull --overwrite /dev-branches/feature2 # every other time
If all your branches are locally accessible already, symlink style:
ln -s /dev-branches/feature1 working
cd working
(work)
bzr ci -m "Blah"
cd ..
rm working
ln -s /dev-branches/feature2 working
But maybe I misunderstood what you're trying to do. Of all of these, I'd
recommend the checkout method, as "pull --overwrite" has the potential to lose
information if you miss a step.
-David