Jafar
|
At LAAS we use git to version control the jafar tree.
umask 2
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 :
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.
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.
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.
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.
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
The daily
script in jafar/bin
is run every night. For a given list of modules, it does the following in /usr/local/jafar
:
configure
script,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"
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.
There are two mailing list related to jafar, both hosted on http://sympa.laas.fr
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.
Generated on Wed Oct 15 2014 00:37:30 for Jafar by doxygen 1.7.6.1 |