Aegis — system for configurations management, developed by Peter Miller. This system has many very interesting features and used by many projects. One of the interest feature of this system is, that users could have different roles — developer, integrator, administrator, etc. and corresponding access levels. Also Aegis supports atomic commits and change sets. Another interesting feature, very useful for software developers — ability to automatic rebuilding of software and execution of tests after commit, and rejecting of commit if rebuild and/or tests fail. More detailed information on Aegis you can find at Aegis's site.

Integration of Aegis and Emacs is performed by aegis-mode package. There is one major difference between Aegis and other systems — there is no VC module for it, as Aegis has to many ideological differences with RCS, those ideology is a basis for for VC package. The aegis-mode package reflects ideology of Aegis, so you need to read documentation for it to use this package.


You can download aegis-mode from author's site. Just put file to place, where it could be found by Emacs, and add following line to initialization file:

(autoload 'aegis-mode "aegis-mode" "Mode for using aegis" t)

And you can execute M-x aegis-mode function at any time, and it loads package. But I need to mention, that if you enable aegis-mode, then you will not able to disable it, until you finish Emacs.

Work with package

In Aegis users could play different roles, and aegis-mode also supports this concept. User can change its role by using command from Aegis menu, or by executing command aegis-become-... (and add corresponding role instead of ...). Currently aegis-mode supports four roles: administrator, developer, code integrator and reviewer.

After package is loaded, all functions are available either via M-x key binding and specification of functions name, or via Aegis menu. List of commands in menu depends on the current user's role .

All functions, has special prefix aegis-, after which you could specify name of needed command of Aegis. So work with package doesn't differ from work with Aegis in command line.


User can customize behaviour of aegis-mode by setting big number of variables and hooks, defined in file aegis-vars.el. I'll mention only most important variables, and descriptions of other you can find in file aegis-vars.el.

For each of command of Aegis user can specify command line options, that will passed when corresponding commands will executed. These options are stored in variables with names like aegis-mode-COMMAND-flags. So, if you need to pass additional options to some command, you can set them in corresponding variable.

To execute commands when user switch to other role, package provides some number of hooks, that named like aegis-mode-become-ROLE_NAME-hook. By defining these hooks, user can add code, that will executed when user will switch to given role. Role, that will set after loading of package is specified by aegis-mode-default-hat variable.

Last change: 05.03.2013 16:54

blog comments powered by Disqus