|
|
Subscribe / Log in / New account

Development

Version Control with GNU Arch

March 2, 2005

This article was contributed by Frank Pohlmann

There was a time when there were only a few open source version control systems: CVS and RCS were the most prominent examples and there was little else. Since the late 1990s a huge number of Source Code Management (SCM) systems have come into existence. GNU Arch, Subversion and Monotone are some of the more prominent projects, but there seems to be no consensus as to what constitutes a good approach to Source Code Management. As a result, open source SCMs fill a huge number of niches, although - as Larry McVoy has pointed out a while ago - except for systems that scale well for hundreds of users, there is little money to be made from consultancy or support. Famously, Linus Torvalds uses Larry's commercial package BitKeeper.

Architecture and Features

GNU Arch is a distributed version control management system, i.e. it allows the "cloning" of a tree containing the source or binary files stored at a local or remote repository. The word "directory" is used advisedly here, since Arch creates new repositories and archives by creating new directories inside ftp, sftp or WebDav servers. There is no underlying database or special file format underlying GNU Arch; as the documentation points out, "remote archives do not require an Arch specific server." GNU Arch setup is therefore remarkably simple. Tom Lord designed and wrote GNU Arch. In keeping with the fractious history of open source SCM tools, GNU Arch spawned its own secessionist project named ArX, which was written in C++ and is being led by Walter Landry.

Tom Lord started the GNU Arch project as a shell script collection to avoid having to use CVS; CVS uses a client-server model and does not support certain types of merge operations, among other things. Since each branch has its own version of the source tree, and all commands work across local and remote version of the source tree, it is perfectly possible for someone with read access to a remote source branch to merge the changes committed by a different user at the remote branch with her own source tree: no centralized server is necessary.

Commits are always accomplished atomically on source trees; the changesets in Arch handle a huge variety of data, for instance symbolic link additions, directory changes, and very importantly, renames. Revisions are always uniquely and globally identifiable. It is perfectly possible to remove and add the same changes to permit experimentation with the code. The merging process will forgive such cruelty, recording the change history and even making the subsets of changes viewable by other developers.

Atomic commits make it possible for changes to propagate to all repositories. If the commiter is working from an http repository, the remote user can only accept changes. The commiter cannot write the changes to the remote repository. If all users of GNU Arch use ftp, sftp or WebDav, the commiter can work from whatever repository he chooses, since he is likely to have cloned the master repository. Once he is finished working, he can propagate the changes to the master repository, or he can just make them available to all members of the project.

It helps that GNU Arch is built on standard Unix utilities, since the files Arch is working with essentially consist of a number of tar files saved in a Unix directory tree with a few control files thrown in for good measure. All commits and imports just send compressed tar files to the remote repository. This, as Tom Lord elaborates on in some depth, could lead to performance problems. GNU Arch is trying to transfer the performance load mostly onto client side machines and it is also taking advantage of the fact that disk space is a lot cheaper (in terms of cost and performance) than bandwidth.

In short, there are several mechanisms to cope with this problem: one is cached revisions. The user is able to choose a reasonably spaced interval at which a cached revision is going to be stored in the master or local repository. This avoids the problem of sucking down dozens of change sets during a major update, and having to live with the concomitant strong network bandwidth burden. After comparing the size of the compressed source tree revision and the number and size of changesets, a caching policy can be chosen by the user. This is not always considered an advantage by some users, and high-traffic developmental sites might find this feature problematic.

Another policy consists in using so-called read-only archive mirrors. It is perfectly possible to store revisions and changesets at special archive mirror locations. This can lessen the load on the master repository, and simplify the work for a developer who is making all and sundry changes.

A final - and completely client-side - feature of GNU arch configuration is called a revision library. Again, by using local disk space, pre-built copies of read-only source tree revisions are stored locally, but files that have been left unmodified during changes are shared between revisions. It uses some file-linking magic that makes new changesets that are not shared with previous source incarnations private to the newly patched tree.

Other features make GNU arch truly shine, in particular in with regard to merging, although it has to be said that low-level work with GNU Arch can be demanding. It has an extremely complex command set, allowing a level of control and granularity that is unusual, even for source code management professionals.

It is not easy to compare GNU Arch to other OSS version control management systems, unless one is willing to compare it to other distributed architectures. Neither CVS nor Subversion fall into that category. For anyone migrating from CVS or Subversion, it is possible to feel at home, since the base command sets are similar. It is useful to budget some time for the migration, since GNU Arch documentation is not entirely comprehensive. But in all, it is a very fast, very powerful version control management system perfectly suited to the distributed world of open source development.

Comments (13 posted)

System Applications

Audio Projects

Planet CCRMA Changes

The latest changes from the Planet CCRMA audio utility packaging project include new versions of Ardour, Liblo, and Iemlib.

Comments (none posted)

Database Software

PostgreSQL Weekly News

The February 25, 2005 edition of the PostgreSQL Weekly News is online with the week's PostgreSQL database news.

Full Story (comments: 1)

DBD::Pg 1.40 released

Version 1.40 of DBD::Pg, the DBI PostgreSQL interface for Perl, has been announced. "This version has many changes from 1.32, including support for server-side prepares, SQLSTATE codes, a last_insert_id function, and improved Win32 support."

Comments (none posted)

Filesystem Utilities

Lustre 1.2.4 released

Version 1.2.4 of Lustre, a cluster filesystem, is now available as open-source software. "Lustre 1.2.4 was first released to our customers in July 2004, and contains a number of improvements over the previous public release".

Full Story (comments: none)

Interoperability

Samba 3.0.12pre1 Available for Download

Version 3.0.12 pre-1 of Samba is available. "This release is *not* intended for production servers. However, there have been several bug fixes and new features added since 3.0.11 that we feel are important to make available to the Samba community for wider testing."

Full Story (comments: none)

Libraries

FreeImage 3.6.1 released (SourceForge)

Version 3.6.1 of FreeImage, a cross-platform library with support for popular image formats, is out. "This maintenance release fixes a memory leak occuring in the metadata API. As this also affects bitmap loading, upgrade is highly recommended."

Comments (none posted)

Announcing Poppler

A new PDF rendering library called Poppler has been announced. "A couple of weeks ago there was some discussion about forking xpdf into a pdf rendering library. The thread sort of died, but it's an important issue, so I've gone ahead a created this thing and called it poppler."

Full Story (comments: none)

Networking Tools

moodss 19.7 (stable) released (SourceForge)

Stable version 19.7 of Moodss, a modular GUI application for monitoring systems, networks, and databases, is available. "In this version, an annoying bug that prevented database browsing was fixed. The title areas of displayed data tables now change color to reflect the states of the corresponding modules. A standard deviation column was added to the statistics table."

Comments (none posted)

Printing

accsnmp 1.0 released

Version 1.0 of accsnmp is available for CUPS, the project description states: "A Perl backend wrapper that accounts for jobs by querying the printer over SNMP for its pagecount before and after the job. Built-in support for job and user blacklisting. Simple accounting function stores user pagecounts in text files. Easily customizable."

Comments (none posted)

Web Site Development

GrokLaw News Picks Plugin Released (Groklaw)

The News Picks feature from the GrokLaw site has been released as open-source code. "I just wanted to let you know that stevem's code for our News Picks feature has been accepted by Geeklog, and it's downloadable as a plugin on Geeklog's website. So now anyone who wishes can use this new feature on their websites too. Enjoy. It's under the GPL, naturally. So, Son of Groklaw and Bride of Groklaw websites and everyone else too: Have at it. : )"

Comments (none posted)

Desktop Applications

Data Visualization

Grace 5.1.18 released

Version 5.1.18 of Grace, a WYSIWYG 2D plotting tool, has been announced. "This is a maintenance release of the 5.1 series; an upgrade is recommended."

Comments (1 posted)

Desktop Environments

Announcing KDE 3.4 Release Candidate

The first release candidate for KDE 3.4 is now available for source download. "We want to have this tested as much as often, so we can't wait for vendor binaries, so please test the sources if you have experience in this." Click below for additional information on using konstruct to help build the RC1 from sources.

Full Story (comments: none)

GNOME Software Announcements

The following new GNOME software has been announced this week:

Comments (none posted)

KDE Software Announcements

The following new KDE software has been announced this week:

Comments (none posted)

XFree86 4.4.99 Release Candidate 2

Release Candidate 2 of XFree86 4.4.99 has been announced. " Well it seems that the last candidate has some, ehem, problems and so our Release Engineer David Dawes has rolled another Candidate. This puts us squarely into the midst of the xtest. phase of our Release cycle. All the source and the particular notes for xtest are included with the Candidate, so this is very much One-Stop Shopping."

Comments (none posted)

Electronics

XCircuit 3.3.10 released

Version 3.3.10 of XCircuit, an electronic schematic drawing package, is available with several bug fixes.

Comments (none posted)

GUI Packages

wxWidgets 2.5.4 released

Version 2.5.4 of wxWidgets, a cross-platform GUI package, is available. "This is a development snapshot; we intend to make one more snapshot release (2.5.5) and then make the stable 2.6 release in March. Please let us have feedback and patches based on your experience on 2.5.4!"

Comments (none posted)

Medical Applications

OpenVistA VivA FOIA Gold 20050212 available (LinuxMedNews)

LinuxMedNews has announced the availablilty of OpenVistA VivA FOIA Gold 20050212, an electronic medical records system. "OpenVistA VivA FOIA Gold 20050212 is available as is OpenVistA SemiVivA FOIA Gold 20050212. Effective this release, release numbers will reflect the date of the VistA release on the US Department of Veterans Affairs FTP site; in this case, Feb 12, 2005."

Comments (none posted)

Music Applications

System exclusive librarian for Roland SC88

The initial release of sc88sysex, a MIDI system exclusive data utility for the Roland SC-88 synthesizer, is out.

Full Story (comments: none)

liblo 0.17 announced

Version 0.17 of liblo, a library that implements the Open Sound Control protocol, is out with bug fixes and new features.

Full Story (comments: none)

Office Suites

OpenOffice.org Newsletter

Volume 02, Issue 8 of the OpenOffice.org Newsletter is online with the latest OpenOffice.org project information.

Full Story (comments: none)

ooo-build-1.9.79 released

Version 1.9.79 of the ooo-build OpenOffice.org fork has been released. This version includes numerous bug fixes, some documentation improvements, and more.

Full Story (comments: none)

Video Applications

Video for jack: xjadeo 0.1.0 released

Version 0.1.0 of xjadeo has been announced. "xjadeo is a rather featureless video player (it understands just one single video encoding) that displays the video frame corresponding to jack's timebase. Its purpose is to make possible visual feedback when working on the soundtrack of a video clip."

Full Story (comments: none)

Web Browsers

Firefox 1.0.1 released

The Mozilla Foundation has announced the availability of Firefox 1.0.1. This release contains a number of security fixes, including a patch for the IDN spoofing vulnerability. See the release notes for the details.

Comments (11 posted)

Mozilla 1.8 Beta 1 Released (MozillaZine)

Version 1.8 Beta 1 of the Mozilla browser has been announced. "Web developers may be interested to hear that this release has partial support for ECMAScript for XML (E4X), which adds native XML support to JavaScript." See the change log for details.

Comments (none posted)

Mozilla Foundation reaches an agreement with AOL on DevEdge content (MozillaZine)

MozillaZine covers an agreement between the Mozilla Foundation and AOL. "Mozilla Foundation has reached an agreement with America Online, which allows them to host and improve former Netscape DevEdge Content. Mitchell Baker posted a blog entry informing that Deb Richardson would join Mozilla Foundation as a technical editor and project manager of DevMo. DevMo is the new community based project focussed on developer documentation and resources."

Comments (3 posted)

Minutes of the mozilla.org Staff Meeting (MozillaZine)

MozillaZine has announced the minutes from the February 22, 2005 mozilla.org Staff Meeting. "Issues discussed include Mozilla Firefox 1.0.1, Mozilla 1.8 Beta, Spread Firefox, update.mozilla.org and the international domain name Punycode spoofing issue.

Comments (none posted)

Languages and Tools

C++

C++ exception-handling tricks for Linux (IBM developerWorks)

Sachin O. Agrawal covers C++ exception-handling on IBM developerWorks. "Handling exceptions in C++ has a few implicit restrictions at the language level, but you can get around them in some instances. Learn ways to make exceptions work for you so you can produce more reliable applications."

Comments (2 posted)

Caml

Caml Weekly News

The February 22 - March 1, 2005 edition of the Caml Weekly News is online with the latest Caml language articles.

Full Story (comments: none)

Java

IBM Helps Drive Open Source Development (SourceForge)

SourceForge has announced a contribution of over 30 open-source projects from IBM. The IBM Jikes Compiler for the Java Language and several other Java-based projects are part of the release.

Comments (none posted)

Internationalization, Part 2 (O'ReillyNet)

O'Reilly has published part two in an excerpt series on internationalization under Java. "Part one of this two-part excerpt from Java Examples in a Nutshell, 3rd Edition covered the first two steps to internationalization in Java: using Unicode character encoding and handling local customs. This week deals with the third step in the process: localizing user-visible messages."

Comments (none posted)

JSP

The JSF application lifecycle (IBM developerWorks)

Rick Hightower discusses the JSF application lifecycle on IBM developerWorks. "In this second article in his four-part JSF for nonbelievers series, Rick Hightower introduces the major phases of the Java™Server Faces (JSF) request processing lifecycle. Using a sample application, he walks you through the six phases of a request process. Along the way, he shows you how to combine JSF with JavaScript technology for immediate event handling and completes your introduction to the JSF component model with a first look at many of the components that ship with JSF."

Comments (none posted)

Lisp

Foil - Foreign Object Interface for Lisp

The Foil project has been announced. "Rich Hickey has announced on Feb 24, 2005 the availability of Foil (Foreign Object Interface for Lisp). It "[...] consists of a protocol and a set of libraries that facilitate access to popular object runtimes, such as the JVM and the CLI/CLR, and their libraries [...]" from Common Lisp."

Full Story (comments: none)

Perl

The Perl Review, Spring 2005 (use Perl)

use Perl has announced the Spring 2005 edition of The Perl Review. Articles include: Hashes with History, Test::Number::Delta, 9-Block Quilt Patterns in Perl, Packet Sniffing with Perl, Serious Perl, Barcodes from Perl, and more.

Comments (none posted)

Pugs Apocryphon 1 released (use Perl)

Use Perl has announced the availabilty of the document Pugs Apocryphon 1, a description of Pugs. "Started in February 2005, Pugs is an implementation of the Perl 6 language. Autrijus Tang is responsible for the design and development of Pugs with help from a group of committers and contributors."

Comments (none posted)

This Fortnight in Perl 6

The February 9-22, 2005 edition of This Fortnight in Perl 6 is online with the latest Perl 6 news.

Comments (none posted)

PHP

PHP Weekly Summary for January 24, 2005

The PHP Weekly Summary for January 24, 2005 is out. Topics include: auto_globals_jit, build issues, stream_socket_accept(), unwanted fixes, win32 freetds support, PHP-GTK 2 on a roll, and --prefer-non-pic fixed.

Comments (none posted)

PHP Weekly Summary for January 31, 2005

The PHP Weekly Summary for January 31, 2005 is out. Topics include: More PHP-GTK 2 development, checking for installed modules, superglobals and variable variables, build issues continued, uploading files and ext/mbstring, commits to stable branch, and SPL-based exceptions.

Comments (none posted)

PHP Weekly Summary for February 7, 2005

The PHP Weekly Summary for February 7, 2005 is out. Topics include: Referencing superglobals, planning PHP 5.1, PHP-GTK 2 development (continued), shared resources between extensions, moving to PECL, and Call for Papers: ApacheCon Europe.

Comments (none posted)

Access an enterprise application from a PHP script

Caroline Maynard, Graham Charters, and Matthew Peters use PHP for business logic on IBM developerWorks. "Many Web developers enjoy the versatility and ease of use of PHP, but sometimes they need to access existing business logic in a J2EE application server. In this article and through code examples, learn how to use the new SOAP extension in PHP 5 to access a J2EE application using Web services, without having to leave the PHP environment or learn a new programming model."

Comments (none posted)

PostScript

GSview 4.62 beta release

Beta version 4.62 of GSview, a PostScript viewing application, has been announced, it features multiple bug fixes and other improvements.

Comments (none posted)

Python

Dr. Dobb's Python-URL!

The February 24, 2005 edition of Dr. Dobb's Python-URL! is out with links to numerous Python language articles and resources.

Full Story (comments: none)

Dr. Dobb's Python-URL!

The March 1, 2005 edition of Dr. Dobb's Python-URL! is online with the latest Python language news and resources.

Full Story (comments: none)

python-dev Summary

The January 16-31, 2005 edition of the python-dev Summary is online with a summary of traffic on the python-dev mailing list.

Full Story (comments: none)

Ruby

Ruby Weekly News

The February 27, 2005 edition of the Ruby Weekly News is available with the latest news and discussion from the ruby-talk mailing list.

Comments (none posted)

Tcl/Tk

Dr. Dobb's Tcl-URL!

The February 28, 2005 edition of Dr. Dobb's Tcl-URL! is online with the latest Tcl/Tk news and resources.

Full Story (comments: none)

XML

Sarissa to the Rescue (O'Reilly)

Emmanouil Batsis explores Sarissa on O'Reilly. "Client-side XML processing. Today's browsers do cover the basics and some of them go even further, offering support for XHTML, SVG, XSLT, XPath , XLink, validation using W3C XML Schema, and more. This article will introduce you to basic cross-browser XML development with the aid of Sarissa, an ECMAScript library designed to stop those nasty incompatibilities before they get too close."

Comments (none posted)

The xml:id Conundrum (O'Reilly)

Rich Salz covers the benefits and shortcomings of xml:id on O'Reilly. "XML attributes whose type is ID are very important. They are the only fundamental way to identify a piece of XML. While we have XPath, XPointer, and so on, the only identification mechanism that every XML parser, and therefore every XML application, must understand is ID attributes."

Comments (none posted)

IDEs

Some Eclipse releases

EclipseCon 2005 is happening this week, with the result that a number of announcements have been made. One is the release of a set of tools for "business intelligence and reporting," created by Actuate Corporation. This is a developer release; the 1.0 release is expected within the next few months. Also announced is the first developer release from the Web Tools Platform project.

Comments (6 posted)

Page editor: Forrest Cook
Next page: Linux in the news>>


Copyright © 2005, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds