Jafar
Development with Jafar at LAAS

Jafar under version control at LAAS

At LAAS we use git to version control the jafar tree.

Before you start

umask 2

About Git

Git is really different from CVS or SVN, as it can work in distributed mode. Contrary to CVS/SVN, git commit does not expose the commit to every one, it only does the commit in your own repository. To push it in the main repository, you need to call git push. You can push many commit in one operation. With git, it is easy to do a lot of little atomic commit, and push the whole stuff when it is really ready.

There a lot of interesting resources about git on Internet :

Git repository layout

The core part of Jafar is stored in the repository trac.laas.fr/git/robots/jafar/jafar.git. Each modules has its own git repository in trac.laas.fr/git/robots/jafar/modules/<module>.git

Do not hesitate to tag versions of your modules, and to use branches for developpement. It is more or less free with Git.

The repository can be browsed online at this url http://trac.laas.fr/git/, in the sub-section "jafar and its sub-modules.

Check out of your working copy

You first retrieve a version of the jafar backbone:

$ git clone ssh://<user>@trac.laas.fr/git/robots/jafar/jafar

You will get, among other things, the kernel module in the jafar/module/ directory.

Installing module

To retrieve the modules versions you are interested in, cd in the module directory and do some checkouts:

$ cd $JAFAR_DIR/modules
$ ../bin/jafar_checkout [modulename]

The jafar_checkout scripts checkout all the required dependencies. And at the end, return you with a list of suggested packages.

If you are using the script from your personnal computer, and that your personnal login is different from the LAAS login, you need to set the environnement variable GIT_LAAS_USER to your LAAS login before using the script.

Commit/Update

Please refer to http://gitref.org/ for a complete git documentation. This section only describes usage of jafar_update which can be found in JAFAR_DIR/bin.

Each module is stored in a separate repository, there is no easy way to update all modules. The script jafar_update takes care of that, updating first jafar-core, then every modules, using git pull --rebase (the rebase option tries to rebase your change on top of the tree to get a linear history). Note that git will refuse to pull from remote repository is your repository is not clean (uncommited changes) : you can use the git stash dance to deal with this modules.

Adding a new module under git

The jafar_add command can be found in JAFAR_DIR/bin. This shell script can be used to add a new module under git, or ensure a module is properly set under version control.

Example:

$ cd /home/toto/jafar/modules
$ jafar_add helloworld

daily script

The daily script in jafar/bin is run every night. For a given list of modules, it does the following in /usr/local/jafar :

In order to add a module to this automatic process, it is necessary to edit bin/daily and modify the MODULES variable.

# modules to be checked
MODULES="kernel helloworld image display jmath hpm cine model3d stereo filter slam facetsmap"

Installing external libraries

Some of the Jafar modules depend on external libraries. If you are working on the laboratory network, every thing should already be properly installed.

If you miss some dependencies, you can check https://intranet.laas.fr/intranet/robots/wiki/Jafar/Installation2 to get it.

Mailing list

There are two mailing list related to jafar, both hosted on http://sympa.laas.fr

Distributing Jafar outside LAAS

If you want to distribute jafar outside LAAS. You first need to retrieve the jafar backbone:

$ git clone ssh://<user>@trac.laas.fr//git/robots/jafar/jafar.git

Then using the jafar_checkout script like in Installing module, you retrieve the modules you want to distribute, and the script extract all the dependences you need.

Then you need to remove the git information, as follow:

$ git archive --format=tar HEAD > <module>.tar

Don't worry about the error message thrown by this command, for some reasons the command try to see if the file is available after you have delete it.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on Wed Oct 15 2014 00:37:30 for Jafar by doxygen 1.7.6.1
LAAS-CNRS