Téléchargement de COMETE et gestion du code source
Télécharger COMETE
Pour l'instant COMETE n'est diponible qu'à partir du dépôt git. Vous devez donc avoir un logiciel Git d'installé. Vous pouvez ensuite le télécharger soit:
Anonymement
Utilisez la commande:
git clone --recursive git://coeus.ca/brer.git
En tant que développeur
Envoyez votre clef ssh publique à benoitg@…, puis vous pouvez utiliser la commande:
git clone --recursive gitolite@coeus.ca:brer.git
Utilisation de GIT
L'usage de Git sous Cygwin est déconseillé car trop instable, particulièrement à l'intérieur des sous-modules. La version msysgitfonctionne bien sous Windows.
Configuration
Pour tous les développeurs: Pour éviter les problèmes avec les caractères de fin de ligne qui varient d'une plateforme à l'autre, voici un lien expliquant comment configurer votre client git:
Travailler avec les sous-modules
Si des sous-modules sont créés, une indication est mentionnée lors d'un git pull au top niveau. Par la suite, il faut lancer la commande suivante pour se synchroniser.
git submodule update --init
ps: avec Tortoise Git, lancer Submodule update.
Si des sous-modules sont modifiés, un {{{git status}}} donnera la nature des modifications (modified content, new commits...). Il faut aller dans le sous module et faire un {{{git pull}}} pour tout récupérer.
Maintenant, si vous faites des modifications dans un sous-module, il faudra être dans celui-ci pour "commiter" et "pusher" les changements. Il faut "pusher" les changements sur la branche {{{comete}}} (en général) et non {{{master}}} ou {{{origin}}}. Par la suite, il faut se rendre à la racine du projet et committer les sous-modules qui ont été modifiés. Ainsi, lorsqu'un autre usager fera un {{{pull}}} à partir de la racine du projet, les sous-modules seront également mis à jour.
| Sous-module Git | Branche où pousser |
|---|---|
| Harvester | origin comete |
| MetadataEditor | origin comete |
| SearchUI | origin comete |
| commons-jar | origin comete |
| orioai-indexing | origin comete |
| fcrepo | Ne pas modifier quoi que ce soit pour l'instant |
Pour ceux qui utilisent Git sous Cygwin, si tous les fichiers des sous-modules sont marqués comme différents (Modified) juste après avoir cloné le repository (avec les sous-modules), c'est probablement à cause de ce problème. La solution:
git config core.filemode false
Bases de code externe
Il est à noter que le projet COMETE utilise plusieurs bases de codes externes. Il y a différentes possibilités:
- Le code est entièrement géré par le projet COMETE, auquel cas on l'inclut directement dans le dépôt git (pas de sous-module git), dans un répertoire approprié.
- Le code est sous contrôle externe, mais les développeurs de COMETE y ont accès (par exemple le code d'ORI-OAI). Auquel cas nous installons un miroir, et on crée un sous-module git qui pointe vers ce miroir.
- Le code est totalement externe, mais on veut y faire des modifications mineures ou majeures. Auquel cas nous installons un miroir (qui n'est pas mis à jour automatiquement), et créons un sous-module git qui pointe vers ce miroir. Lorsque nous sommes prêts, le code est contribué en amont, le dépôt synchronisé et le résultat poussé dans notre miroir.
- Le code est totalement externe, et nous n'avons pas de changements à faire. Auquel cas nous ne versionnons pas ce code dans le dépôt.
Miroir GIT du projet ORI-OAI
Un miroir GIT des 11 dépôts SVN du projet ORI-OAI (incluant tout l'historique) est disponible afin de faciliter l'intégration au projet COMETE. Vous pouvez consulter la Description des modules d'ORI-OAI pour savoir à quoi ces dépôts correspondent.
Les dépôts sont bidirectionnels (git-svn) et sont mis à jour toutes les heures. Les changements ne sont cependant pas propagés automatiquement aux dépôts SVN d'ORI-OAI. Afin de rendre la propagation facile, utilisez "git rebase" plutôt que git pull lorsque vous vous servez de ces dépôts (pour plus de détails, la documentation de fedora offre une bonne explication.
| URL Git | URL du SVN original |
|---|---|
| gitolite@…:ori-oai-git-mirror/ori-oai-harvest | https://subversion.cru.fr/ori-oai-harvest |
| gitolite@…:ori-oai-git-mirror/esup-webdav-srv | https://subversion.cru.fr/esup-webdav-srv |
| gitolite@…:ori-oai-git-mirror/ori-oai-hal | https://subversion.cru.fr/ori-oai-hal |
| gitolite@…:ori-oai-git-mirror/orioai-indexing | https://subversion.cru.fr/orioai-indexing |
| gitolite@…:ori-oai-git-mirror/ori-oai-repo | https://subversion.cru.fr/ori-oai-repo |
| gitolite@…:ori-oai-git-mirror/ori-oai-vocabulary-doc | https://subversion.cru.fr/ori-vocabulary/ori-oai-vocabulary-doc |
| gitolite@…:ori-oai-git-mirror/ori-oai-vocabulary-spring | https://subversion.cru.fr/ori-vocabulary/ori-oai-vocabulary-spring |
| gitolite@…:ori-oai-git-mirror/ori-workflow | https://subversion.cru.fr/ori-workflow |
| gitolite@…:ori-oai-git-mirror/quick-install | https://subversion.cru.fr/ori-oai-commons/quick-install/ |
| gitolite@…:ori-oai-git-mirror/commons-jar | https://subversion.cru.fr/ori-oai-commons/commons-jar/ |
| gitolite@…:ori-oai-git-mirror/orioai-mdeditor | https://subversion.cru.fr/orioai-mdeditor |
| gitolite@…:ori-oai-git-mirror/ori-oai-search | https://subversion.cru.fr/ori-oai-search |
| Pour cloner anonymement, remplacer gitolite@…: par git://coeus.ca/ | |
Miroir du projet oaiprovider (fedora)
| URL Git | URL du Git original |
|---|---|
| gitolite@…:brer-git-mirrors/oaiprovider | git://github.com/fcrepo/oaiprovider.git |
| Pour cloner anonymement, remplacer gitolite@…: par git://coeus.ca/ | |
Documentation sur GIT
Cheat-Sheets
- http://ktown.kde.org/~zrusin/git/git-cheat-sheet.svg
- https://github.com/AlexZeitler/gitcheatsheet/raw/master/gitcheatsheet.pdf
Pour développeurs familiers avec Subversion
Fusion de deux dépôts indépendants
- Développement parallèle: Subtree merge ou Sous-Modules
- Fusion permanente
Pour ceux qui veulent comprendre
Understanding Git Conceptually
Référence pour la configuration du dépôt
Ajouter un nouveau sous-module Git dans le projet COMETE
Exemple: Ajout d'un module sur le miroir ori-oai: le module ori-oai-indexing
Côté client:
git submodule add ../ori-oai-git-mirror/orioai-indexing orioai-indexing git submodule update --init cd orioai-indexing git push origin origin:refs/heads/brer git push origin origin/brer git checkout --track -b brer origin/brer
Exemple: Ajout d'un module que l'on veut modifier d'un dépôt git externe
Note: On présume qu'il y a déjà un dépôt (git-init) sur gitolite@…:brer-git-mirrors/oaiprovider (se fait automatiquement avec gitolite).
Ces commandes peuvent s'exécuter n'importe où, incluant dans brer/fedora
git clone git://github.com/fcrepo/oaiprovider.git cd oaiprovider git remote rm origin git remote add origin gitolite@coeus.ca:brer-git-mirrors/oaiprovider git push --all git push origin origin/brer git checkout --track -b brer origin/brer
Retournez à la racine de votre dépôt brer, puis:
git submodule add ../brer-git-mirrors/oaiprovider.git fedora/oaiprovider git submodule update --init git add fedora/oaiprovider git commit
Ajouter un nouveau miroir git-svn
Exemple (sur le serveur):
git svn clone --stdlayout https://subversion.cru.fr/orioai-indexing/ mv orioai-indexing/.git orioai-indexing.git git --git-dir=orioai-indexing.git config core.bare true rm -rf orioai-indexing
Ajouter ensuite le nouveau dépôt à la configuration de gitolite (gitolite@…:gitolite-admin)
Renommer une branche distante
Exemple (brer->comete) Se mettre dans le dossier du dépôt dont on veut renommer la branche
git push origin brer:refs/heads/comete git checkout -b comete --track origin/comete git push origin :brer git branch -d brer
Exécuter des commandes git-svn
Entre autre pour téléverser nos changements aux dépôts d'origine. Sur le serveur:
su - www-data cd /var/lib/gitolite/repositories/ori-oai-git-mirror/ GIT_DIR=. git svn ...