Overcoming Aegis Childhood Diseases
Note about Relevance
As of 2018, this site has become mostly irrelevant.
Note
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
Problem
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.
Solution
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
Problem
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.
Solution
Use Aegis' Branches - it's there and it's working.
The Command Organization
Problem
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.
Solution
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.