Re: GIT and CVS

Eli Zaretskii
2011-10-14T10:55:46Z

> Date: Fri, 14 Oct 2011 12:22:53 +0200 (CEST)
> From: Mark Kettenis <mark.kettenis@xs4all.nl>
> CC: pmuldoon@redhat.com, gdb@sourceware.org
>
> $ cvs update
> (make some changes)
> ...
> (come back a couple of days later)
> $ cvs update
> (merge conflicts, make some more changes)
> ...
> $ cvs update
> (test changes, write changelog, send diff for review)
> ...
> $ cvs update
> (test changes again, fixup changelog)
> $ cvs commit
> [...]
> How does bzr compare here? Is it close enough to CVS that there is a
> 1:1 mapping of commands with perhaps an additional command to "push"
> changes upstream?

Yes. With bzr, you can "bind" your local branch to the upstream
repository, which then makes the workflow in that branch very similar
to what you have in CVS. E.g., your workflow above will be literally
the same, except that "cvs" should be replaced with "bzr" (bzr has an
"update" command, which in a bound branch behaves exactly like "cvs
up"), and merge conflicts are extremely rare, because bzr is much
smarter about merges (as are git and Mercurial). There isn't even the
need to use "bzr push", because in a bound branch "bzr commit" will
automatically commit locally and push upstream within the same
transaction.

You don't need to commit unfinished work, because "bzr up" in a bound
branch automatically merges the changes from upstream with your local
changes.

So you retain your CVS-like workflow, and in addition get all the
benefits of a dVCS: cheap branching, smart merges, possibility of
local commits (if you are off line), possibility of temporarily
"shelving" changes aside and returning to them later, etc. But you
use all these beneficial features if you want to, you aren't forced to
do it.

Bzr on GNU/Linux is slower than git (any VCS is slower than git on
GNU/Linux), but I find it fast enough to not be an annoyance in
day-to-day work.