Vous êtes ici : Accueil / TECHNICAL PAGES / Documentation / Logiciel d'observation / Sauvegarde des Révisions avec GITLAB

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):

img_gitlab_euler.png



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:

 

Gitlab-Project-Subgroup.png

 

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:

 

Create_project.png

 

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:

 

Push_an_existing_folder.png

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.

GITLAB_Infographie.png

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