Sauvegarde des Révisions avec GITLAB
INTRODUCTION
Le logiciel d'observation est sauvegardé dans le GITLAB de l'université.
L'utilisation de gitlab permet:
- Accès aux revisions antérieures de chaque utilitaire, fichier de configuration, et procédure
- Possibilité de recréer l'arborescence du logiciel d'observation ($THOME)
- Sauvegarde hors du site de La Silla
- Permet des copies personnelles à des fins de test
- Changement aisé de propriétaire/responsable de partie du logiciel
Contenu actuel (mai 2020):
INSERTION D'UN PROJET D'UN PROJET OU D'UN SUBGROUP DANS GITLAB
Le site Gitlab de Euler contient des projects, typiquement un utilitaire ou un document, et des subgroups, typiquement un répertoire contenant des projects.
A n'importe quel niveau du site on peut créer un nouveau project ou un nouveau subgroup:
La première étape est de choisir ce que l'on veut créer. Dans notre exemple nous allons créer le projet IPCSRV dans le subgroup Utilities. Ainsi on choisi New Project à l'aide du menu (en fait c'est le défaut) puis on clique sur New project:
Ensuite il faut remplir les champs Project name (qui met à jour automatiquement le project slug que l'on peut renommer), ainsi que le Project description. Inutile de créer le README, on peut le faire après:
Puis Create project.
La page qui suit donne des exemples comment nourrir ce projet.
Si le project existe, par exemple un utilitaire et ses fichiers associés le tout dans un directory on suit cette partie de la documentation (utilisation simple du copy-paste):
Attention la ligne "git add ." signifie ajouter tout les fichiers du directory. Ainsi il est préférable de lister uniquement les fichiers utiles au project (on enlève les binaires et autre fichiers inutiles).
ex:
Dans notre cas, cela donne:
cd /home/weber/src/ipcsrv git init git remote add origin git@gitlab.unige.ch:euler/utilities/ipcsrv.git git add ipcsrv.c ipcsrv.csh Makefile Rules_Linux_4.4_x86_64.mke Links tex/cmd.tex tex/ipcsrv.tex git commit -m "Initial commit" git push -u origin master
Le projet est sauvegardé sous Gitlab.
Renoncer à la sauvegarde de certain fichiers
Vous pouvez configurer GIT de ne pas prendre en considération certains fichiers de votre directory (binaires, etc...) dans les actions standard (ex: git status). Dans ce cas, il faut créer un fichier .gitignore avec un nom de fichier ou wildcard par ligne.
Exemple:
my_host: git status > .gitignore my_host: (edit .gitignore) my_host: cat .gitignore .gitignore .make.state .nse_depinfo *.o *.a Copies Copies.weber Docopies.mke ccd.blk client client.c ipcsrv.c.sav ipcsrv.icon ipcsrv_Linux_* remote_server_ipc tex/ipcsrv.fm tex/ipcsrv.pdf tex/ipcsrv.ps tex/ipcsrv_config.eps tex/ipcsrv_config.fig
Il est entendu que le fichier .gitignore peut être inclus dans la sauvegarde.
Ainsi (rapidement):
(supprimer la ligne .gitignore dans .gitignore) git add .gitignore git commit -m "Initial commit" .gitignore git push
ENREGISTRER UNE NOUVELLE VERSION
Chaque modification doit être consignée le plus rapidement possible!
Par exemple, en suivant notre exemple, si on met à jour ipcsrv.c et Links, les opérations de sauvegarde sont:
git commit -m "<bref_message_décrivant_la_modification>" ipcsrv.c Links git push
Si on ajoute un nouveau fichier, exemple ipcsrv.h, on aurait:
git add ipcsrv.h git commit -m "Initial commit" ipcsrv.h git push
CONSEILS IMPORTANTS
Dans le cas où un manque de sérieux évident (désolé) fait que l'on est plus sûr de l'endroit où à été fait la dernière modification et également si une autre personne à fait un "commit" d'un fichier que l'on veut modifier, il est utile, voir impératif d'executer ces commandes surtout si les mois ont passés:
git status
Ce status indiquera l'état les fichiers qui doivent être "commités" ou qui ne sont pas dans gitlab.
git diff
Ce diff affichera toutes les modifications existantes entre votre directory local et gitlab. A vous de comprendre ces différences.
S'il est évident que la version gitlab est la meilleure, alors tapez:
git pull
De cette manière, la version gitlab, si elle est plus récente que la votre, écrasera votre version pour la version gitlab à jour.
TELECHARGER UN PROJET
Pour télécharger un projet, allez sur la page du projet et cliquez comme indiqué. Après le deuxième click vous avez l'adresse du site dans votre clipboard.
Tapez la commande suivante (git clone) suivi du paste de votre clipboard. Vous obtenez ceci:
git clone git@gitlab.unige.ch:euler/infographie.git
Le clonage créera le directory nommé comme le projet (dans ce cas: infographie).
CHARGER UN PROJET DANS UN DIRECTORY DU MEME PROJET NON-VIDE ET SANS GIT
Mon cas typique: 2 lieux de développement (Geneve et La Silla, ou alpha et beta) un des directory est passé sous GIT de la manière standard. On veut après passer le 2eme directory concernant donc le même project sous GIT tout en conservant les fichiers qui s'y trouvent (test, memo, etc...). Le clonage n'est pas possible car le clone ne peut se faire que dans un directory vide.
La technique qui semble marcher est celle-ci (exemple pour lipipc):
git init git remote add origin git@gitlab.unige.ch:euler/t4_libraries/libipc.git git fetch git reset origin/master git checkout -B master git reset --hard
Le premier git push donne le message suivant:
fatal: The current branch master has no upstream branch. To push the current branch and set the remote as upstream, use git push --set-upstream origin master
Il faut simplement le faire, donc
git push --set-upstream origin master
Apres cela les commandes Git se comportent de la façon normale.
Mise à jour globale des applications
Procédure pour mettre à jour ou verifier l'état de gitlab dans un directory donné
Exemple:
tcsh cd ~weber/src foreach i ( `ls -d1 $PWD/*/.git | grep -v jouvence | sed 's#\.git/##'` ) echo $i cd $i git status end
LW 04/06/2020