Wolne Systemy Kontroli Wersji (VCS)
To są wszystkie systemy kontroli wersji typu open source z którymi
miałem styczność do połowy 2007 roku. Jedynym z którego korzystam regularnie
jest Subversion. Mam małe lub żadne doświadcznie z większością z nich, poza
Subversion czy CVS; informacje na ich temat są wzięte ze stron prezentowanych
programów. Zobacz również
.
CVS —
CVS istnieje już od długiego czasu i wielu twórców oprogramowania
zdążyło się do niego przyzwyczaić. Za jego czasów był systemem rewolucyjnym:
był pierwszym systemem kontroli o otwartym źródle z sieciowym dostępem dla
programistów (z tego co wiem), a także pierwszym, który oferował anonimowy
dostęp tylko do odczytu do źródeł, co ułatwiło progamistom uczestnictwo
w projektach. Pod kontrolą CVS są tylko pliki, nie katalogi; oferuje
rozgałęzienia, tagowanie i dość dobrą wydajność po stronie klienta, ale nie
obsługuje zbyt dobrze dużych czy binarnych plików. Nie wspiera również
atomowych zatwierdzeń (atomic commits). [Zastrzeżenie: Byłem
aktywny w rozwoju CVS przez pięć lat, nim zacząłem pomagać w zastąpieniu
CVS przez Subversion.]
Subversion —
Subversion po pierwsze i głównie powstało po to, by zastąpić
CVS—dokładnie by osiągnąć kontrolę wersji jaką daje CVS, ale bez
problemów czy braków, które irytowały użytkowników CVS. Jednym z celów
Subversion było to, aby użytkownicy CVSa mogli w miarę płynnie przesiąść
się do nowego systemu. To nie jest miejsce na to, aby zagłębiać się w
detale możliwości Subversion—jego strona główna ma informacje na ten
temat. [Zatrzeżenie: Jestem zaangażowany w rozwój Subversion i
jest to jedyny, którego używam regularnie.]
SVK —
Mimo, że jest zbudowany na podstawie Subversion, SVK przypomina bardziej
rozproszone systemy kontroli wersji niż Subversion. Wspiera rozproszony
rozwój oprogramowania, lokalne zatwierdzenia (local commits) zaawansowane
łączenie zmian i możliwość do odtwarzania drzew z innych systemów kontroli wersji.
Więcej informacji jest dostępnych na jego stronie WWW.
Mercurial —
Mercurial jest rozproszonym systemem kontroli wersji, który oferuje
między innymi: "(XXX: complete cross-indexing of files and changesets,)
efektywną z punktu widzenia przepustowości jak i obciążenia procesora
synchronizację w oparciu o protokoły HTTP i SSH, dowolne łączenie gałęzi
programistów, zintegrowany autonomiczny interfejs webowy, [przenośność do]
Uniksa, MacOS X, i Windows" oraz więcej (powyższa lista została zacytowana
za stroną internetową Mercurial).
GIT —
GIT jest projektem, któremu bieg nadał Linus Torvalds, aby
zarządzać kodem źródłowym jądra. Na początku GIT był zorientowany
głównie na wspomaganie rozwijania jądra systemu operacyjnego, ale
rozwinął się i obecnie jest używany przez inne projekty. Na stronie
domowej można przeczytać, że jest "...zaprojektowany, aby podołać bardzo
dużym projektom z odpowiednią prędkością i efektywnością; jest używany
głównie przez różnorodne projekty open-source, z których największym
jest jądro systemu Linux. Git jest w kategori rozproszonych systemów
zarządzania kodem, podobnym do np. GNU Archa czy Monotone (albo
BitKeepera ze świata oprogramowania własnościowego). Każda kopia robocza
Gita jest pełnym repozytorim, z pełnymi możliwościami śledzenia rewizji,
niezależną od dostępu do siebi, czy też centralnego serwera."
Bazaar —
Bazaar jest nadal w miarę wczesnej fazie rozwoju. Będzie
implementacją protokołu GNU Arch, zostanie kompatybilny wraz z rozwojem
protokołu i będzie kładziony nacisk na współpracę ze społecznością,
która wytworzyła się dookoła GNU Archa w sprawie wszelkich zmian
protokołu, które miałyby wpłynąć na jego przyjazność użytkownikowi.
Bazaar-NG —
Bazaar-NG (lub bzr) jest obecnie rozijany przez Canonical
(). Oferuje wybór pomiędzy
scentralizowanym jak i niescentralizowanym prowadzeniem jednego
projektu. Na przykład, pracując w biurze, może używać wspólnej gałęzie;
nic jednak nie stoi na przeszkodzie, abyś eksperymentował na kodzie, na
własnej gałęzi, którą potem dołączysz do głównego drzewa.
Darcs —
"David's Advanced Revision Control System jest kolejnym
zastępnikiem CVSa. Jest napisany w Haskellu i był użuwany na Linuksie,
MacOS X, FreeBSD, OpenBSD jak i Microsoft Windows. Darcs zawiera skrypt
cgi, który może być użyty do przeglądania zawartości repozytorium."
Arch —
GNU Arch wspiera obydwa modele rozjowu oprogramowania -
scentralizowany jak i rozproszony. Programiści zatwierdzają swoje zmiany
do "archiwum", które może być lokalne, a zmiany mogą być wypychane i
ściągane pomiędzy archiwami, w taki sposób, jak sobie zarządcy archiwów
tego zażyczą. Takie podejście powoduje, że Arch ma o wiele lepsze
wsparcie dla łączenia zmian niż cVS. Arch pozwala również na proste
tworzenie odgałęzień archiwów, do których nie ma się prawa
zatwierdzania. To tylko krótka prezentacja, warto odwiedzić stronę
projektu, by dowiedzieć się więcej.
monotone —
"monotone is a free distributed version control system. it
provides a simple, single-file transactional version store, with fully
disconnected operation and an efficient peer-to-peer synchronization
protocol. it understands history-sensitive merging, lightweight
branches, integrated code review and 3rd party testing. it uses
cryptographic version naming and client-side RSA certificates. it has
good internationalization support, has no external dependencies, runs
on linux, solaris, OSX, and windows, and is licensed under the GNU
GPL."
Codeville —
"Why yet another version control system? All other version
control systems require that you keep careful track of the
relationships between branches so as not have to repeatedly merge the
same conflicts. Codeville is much more anarchic. It allows you to
update from or commit to any repository at any time with no
unnecessary re-merges."
"Codeville works by creating an identifier for each change which
is done, and remembering the list of all changes which have been
applied to each file and the last change which modified each line in
each file. When there's a conflict, it checks to see if one of the
two sides has already been applied to the other one, and if so makes
the other side win automatically. When there's an actual not
automatically mergeable version conflict, Codeville behaves in almost
exactly the same way as CVS."
Vesta —
"Vesta is a portable SCM [Software Configuration Management]
system targeted at supporting development of software systems of
almost any size, from fairly small (under 10,000 source lines) to very
large (10,000,000 source lines)."
"Vesta is a mature system. It is the result of over 10 years of
research and development at the Compaq/Digital Systems Research
Center, and it was in production use by Compaq's Alpha microprocessor
group for over two and a half years. The Alpha group had over 150
active developers at two sites thousands of miles apart, on the east
and west coasts of the United States. The group used Vesta to manage
builds with as much as 130 MB of source data, each producing 1.5 GB of
derived data. The builds done at the eastern site in an average day
produced about 10-15 GB of derived data, all managed by Vesta.
Although Vesta was designed with software development in mind, the
Alpha group demonstrated the system's flexibility by using it for
hardware development, checking their hardware description language
files into Vesta's source code control facility and building
simulators and other derived objects with Vesta's builder. The
members of the former Alpha group, now a part of Intel, are continuing
to use Vesta today in a new microprocessor project."
Aegis —
"Aegis is a transaction-based software configuration management
system. It provides a framework within which a team of developers may
work on many changes to a program independently, and Aegis coordinates
integrating these changes back into the master source of the program,
with as little disruption as possible."
CVSNT —
"CVSNT is an advanced multiplatform version control system.
Compatible with the industry standard CVS protocol it now supports
many more features. ... CVSNT is Open Source, Free software licensed
under the GNU General Public License." Its feature list includes
authentication via all standard CVS protocols, plus Windows specific
SSPI and Active Directory; secure transport support, via sserver or
encrypted SSPI; cross platform (runs in Windows or Unix environments);
NT version is fully integrated with Win32 system; MergePoint
processing means no more tagging to merge; under active
development.
META-CVS —
"Meta-CVS is a version control system built around CVS.
Although it retains most of the features of CVS, including all of the
networking support, it is more capable than CVS, and easier to use."
The features listed on META-CVS's web site include: directory
structure versioning, improved file type handling, simpler and more
user-friendly branching and merging, support for symbolic links,
property lists attached to versioned data, improved third-party data
importing, and easy upgrading from stock CVS.
OpenCM —
"OpenCM is designed as a secure, high-integrity replacement for
CVS. A list of the key features can be found on the features page.
While not as 'feature rich' as CVS, it supports some useful things
that CVS lacks. Briefly, OpenCM provides first-class support for
renames and configuration, cryptographic authentication and access
control, and first-class branches."
Stellation —
"Stellation is an advanced, extensible software configuration
management system, originally developed at IBM Research. While
Stellation provides all of the standard functions available in any SCM
system, it is distinguished by a number of advanced features, such as
task-oriented change management, consistent project versioning and
lightweight branching, intended to ease the development of software
systems by large groups of loosely coordinated developers."
PRCS —
"PRCS, the Project Revision Control System, is the front end to
a set of tools that (like CVS) provide a way to deal with sets of
files and directories as an entity, preserving coherent versions of
the entire set. ... Its purpose is similar to that of SCCS, RCS, and
CVS, but (according to its authors, at least), it is much simpler than
any of those systems."
ArX —
ArX is a distributed version control system offering branching
and merging features, cryptographic data integrity verification, and
the ability to publish archives easily on any HTTP server.
SourceJammer —
"SourceJammer is a source control and versioning system written
in Java. It consists of a server-side component that maintains the
files and version history, and handles check-in, check-out, etc. and
other commands; and a client-side component that makes requests of the
server and manages the files on the client-side file system."
FastCST —
"A 'modern' system that uses changesets over file revisions and
distributed operation rather than centralized control. As long as you
have an e-mail account you can use FastCST. For larger distribution
you only need an FTP server and/or an HTTP server or use the built in
'serve' command to serve your stuff up directly. All changesets are
universally unique and have tons of meta-data so you can reject
anything you don't [want] before you try it. Merging is done by comparing a
merged changeset against the current directory contents, rather than
trying to merge it with another changeset."
Superversion —
"Superversion is a multi-user distributed version control system
based on change sets. It aims to be an industrial-strength, open
source alternative to commercial solutions that is equally easy to use
(or even easier) and similarly powerful. In fact, intuitive and
efficient usability has been one of the top priorities in
Superversion's development from the very beginning."