[CUWiN-Dev] [wiz@NetBSD.org: Comparison between different
distributed vc systems]
David Young
dyoung at pobox.com
Sun Aug 13 19:04:44 CDT 2006
Interesting article at the URL below. I like Subversion well enough
for small repositories, but it still won't hold our NetBSD sources.
Anybody used darcs?
Dave
----- Forwarded message from Thomas Klausner <wiz at NetBSD.org> -----
Date: Mon, 14 Aug 2006 01:13:51 +0200
From: Thomas Klausner <wiz at NetBSD.org>
To: tech-repository at NetBSD.org
Subject: Comparison between different distributed vc systems
http://changelog.complete.org/posts/528-Whose-Distributed-VCS-Is-The-Most-Distributed.html
First few paragraphs:
Lately I have been trying out a number of distributed version
control systems (VCS or SCM).
One of my tests was a real problem: I wanted to track the
Linux 2.6.16.x kernel tree, apply the Xen patches to it, and
pull only specific patches (for the qla2xxx driver) from
2.6.17.x into this local branch. I wanted also to be able to
upgrade to 2.6.17.x later (once Xen supports it) and have the
version control system properly track which patches I already
have.
But before going on, let's establish what it means to be an
ideal distributed VCS:
* 1. The fundamental method of collaboration must be a
branch. A checkout should mean creating a local branch on
which a person can commit and work without having to
involve the server. An update from some central server
should take the form of a merge from that branch to the
local branch.
* 2. Branching should be cheap. It should be easy to create
a local branch, the operation to do so should be fast, an
it shouldn't take an inordinate amount of space. It shoul
also be as easy as possible to branch from a remote
repository.
* 3. Merging between branches is intelligent. It should be
easy to merge another branch with your own. The VCS shoul
know which changesets from the other branch are already o
yours, and should not attempt to merge changesets that yo
have already merged previously.
* 4. Inividial changesets should be mergeable without
bringing across the whole history. You should be able to
bring across the minimum number of changesets necessary t
effect a specific change. This corresponds to my test cas
above. Future merges from the whole branch should, of
course, recognize that these changesets are present
already.
* 5. Branching preserves full history. A branch should be a
first-class copy of a repository, even if the repository
is remote. It should contain the full history of the
branch it was made from, including diffs for each
individual changeset and full commit logs, unless
otherwise requested by the user.
* 6. Merging preserves full history. A merge from one branc
to another should also preserve full history. Changesets
merged to the local branch should retain the individual,
distinct diffs and commit logs for each changeset.
There are also some things that we would generally want:
* 7. It is possible to commit, branch, merge, and work with
history offline.
* 8. The program is fast enough for general-purpose use.
Evaluation
Let's look at some common VCSs against these criteria. I'll
talk about Arch (tla, baz, etc), bzr (bazaar-ng), Darcs, Git,
Mercurial (hg), and Subversion (svn) for reference.
...
----- End forwarded message -----
--
David Young OJC Technologies
dyoung at ojctech.com Urbana, IL * (217) 278-3933
More information about the CU-Wireless-Dev
mailing list