Overcoming Aegis Childhood Diseases


This document has now been deprecated. Some items in it are inaccurate or irrelevant, and it is possible that Aegis has more serious problems than those that are mentioned here. It is kept here so it will remain on the web.

By: Shlomi Fish

Aegis is a mature SCM with many powerful features and may seem like a good candidate for an open-source alternative that can take on both BitKeeper and ClearCase. However, as a former CVS and BitKeeper user I was not able to properly use it for my relatively limited projects due to its complexity and idiosyncrasies. I believe Aegis suffers from several childhood diseases that should be remedied in order for it to be widely accepted by the community at large.

This document should be considered as a to-do list.

File Copies


Copying one file to another is possible in Aegis, but in a twisted way: you have to move the file and then undo the deletion of the old name. In BitKeeper, file copies are possible and in Subversion they are one of the most elementary (and cheap) operations. I believe Aegis should have a dedicated command for copying files. The people want them.


Implement another command that does just that. (more job for me.)

An Internal Permission System

Aegis relies on the UNIX file system’s permissions' system to decide who can do what in the project. While this gives greater security, it also means it is harder to run it in userland, and harder to port to other systems such as Win32. Aegis in-fact runs SUID root.

I believe one should give the option of using an internal permissions system that is equivalent to the UNIX filesystem one (with all modern enhancements such as capabilities and access-control lists). Aegis would still be able to work with the raw filesystem permissions, but can also safely deployed in user-land.

Version Numbers with More than Two Digits


Aegis currently supports only two digits in its version numbers. This is inadequate for most projects as most of them use at least three. I suggest Aegis convert to using an arbitrary number of digits, that can be chosen at the project configuration time. This would make its versioning system suitable for more projects to default on.


Use Aegis' Branches - it's there and it's working.

The Command Organization


When invoked on the command line, the command aegis is followed by a verbose command like -Change_Directory or -ReMove_Project, or alternatively there are the ae* shortcuts that are present as shell functions. Most other revision control systems (CVS, Arch, BitKeeper and Subversion) use a [Program] [short-command] [parameters] scheme, which make more sense.

The ae shortcuts pollute the main shell namespace and are confusing. I suggest aegis converts to aegis [mycommand] parameters like:

aegis review
aegis cp myfile1.txt
aegis rm myfile1.txt
aegis annotate myfile

Which is the more standard and more sensible.


It is possible. aegis -cp will copy a file and abbreviations can be done very largely.

Better Documentation

Most of Aegis' documentation is released as PostScripts or PDFs. Furthermore, the PDFs are not very Acrobat Reader-friendly: they have no Bookmarks, hyperlinks or other bells and whistles. I believe HTML documentation and better PDFs (and possibly MS-Word documents) are in order, which could be achieved by converting the documentation to DocBook/XML.

Naturally, it will require a lot of work, but even I was personally bothered by it.