Difference between revisions of "GIT/Fr"

From TuxFamilyFAQ
Jump to navigationJump to search
 
(15 intermediate revisions by 7 users not shown)
Line 1: Line 1:
<big> Dépot GIT </big>
+
<big> Dépôt git </big>
  
 
{{Template:Languages}}
 
{{Template:Languages}}
Line 5: Line 5:
  
 
= Description =
 
= Description =
 +
[https://git-scm.com/ Git] est un autre SCM tel que [[CVS/Fr|CVS]] ou [[SVN/Fr|SVN]] mais il diffère légèrement de ceux-ci car il est décentralisé.
  
[http://git.or.cz git] est un autre SCM tel que [[CVS/Fr|CVS]] ou [[SVN/Fr|SVN]] mais diffère légèrement de ceux-ci car il est décentralisé.
+
Si vous souhaitez uniquement exécuter git à partir de la ligne de commande, il vous suffit d'installer git. <br />
 +
Mais il existe des interfaces utilisateur graphiques (GUI) optionnelles disponibles pour vous aider, telles que: <br />
 +
git-gui (git gui) - Aide à la création de fichiers de validation pour la validation, à l'écriture de messages de validation et à l'envoi de messages. <br />
 +
gitk - Aide à revoir l'historique des commits git. <br />
  
 
= Dépendances =
 
= Dépendances =
 
 
*Un [[User/Fr|compte utilisateur]]
 
*Un [[User/Fr|compte utilisateur]]
 
*Un [[Group/Fr|projet validé par l'équipe de modération]]
 
*Un [[Group/Fr|projet validé par l'équipe de modération]]
  
 
= Création =
 
= Création =
 +
*Rendez-vous sur le panel
 +
*Cliquez sur le lien du projet auquel vous voulez ajouter un dépôt git
 +
*Choisissez le nom de votre dépôt
 +
*Validez
  
*Rendez vous sur le panel
+
== Conseils de création ==  
*cliquez sur le lien du projet auquel vous voulez ajouter un dépot GIT
+
*Ne choisissez pas un nom trop générique
*choisissez le nom de votre dépot
 
*validez
 
 
 
== conseils de création ==  
 
 
 
*ne choisissez pas un nom trop générique
 
 
*Pensez à remplir la description pour éviter les soucis avec les modos ;)
 
*Pensez à remplir la description pour éviter les soucis avec les modos ;)
  
 
= Modération =
 
= Modération =
 
+
Cet objet est soumis à la modération voir : [[Moderation/Fr|ici]].
Cet objet est soumis à la modération voir : [[Moderation/Fr|ici]]
 
  
 
= Comment l'administrer (panel) =
 
= Comment l'administrer (panel) =
  
Sur le panel vous pouvez décider si ce repository est public ou non.
+
Sur le panel vous pouvez décider si ce dépôt est public ou non.<br />
 
+
En cochant ''oui'' vous permettez un login anonymous en lecture seule sur le dépôt et en permettez la consultation par le [http://git.tuxfamily.org/ gitweb].
En cochant oui vous permettez un login anonymous en lecture seule sur le repository et en permettez le visionnage par le gitweb (pas encore disponible)
 
  
 
== Configuration ==
 
== Configuration ==
  
== Comment gerer les droits de mon groupe ==
+
== Comment gérer les droits de mon groupe ==
  
Cet objet peut être partagé avec votre groupe en utilisant les [[Acl/Fr|ACL]]
+
Cet objet peut être partagé avec votre groupe en utilisant les [[Acl/Fr|ACL]].
  
 
== Comment le détruire ==
 
== Comment le détruire ==
  
*logguez vous sur le panel
+
*Logguez-vous sur le panel
*cliquez sur le groupe de votre projet
+
*Cliquez sur le groupe de votre projet
*cliquez sur votre depôt GIT
+
*Cliquez sur votre dépôt git
*cliquez sur détruire
+
*Cliquez sur détruire
  
 
= Comment l'utiliser =
 
= Comment l'utiliser =
  
Bon, vous avez pris un hébergement chez Tuxfamily, c'est bien. Vous avez opté pour un repository GIT, c'est très bien. Nous allons vous expliquer comment utiliser tout cela.
+
Bon, vous avez pris un hébergement chez Tuxfamily, c'est bien. Vous avez opté pour un dépôt git, c'est très bien. Nous allons vous expliquer comment utiliser tout cela.
  
 
==Utilisation basique==
 
==Utilisation basique==
Line 56: Line 55:
 
===Check out===
 
===Check out===
  
Commencez par initialiser votre repository en local. Nous partons du principe que vous possédez déja un répertoire contenant votre projet.
+
Commencez par initialiser votre dépôt en local. Nous partons du principe que vous possédez déja un répertoire contenant votre projet.
 
  $ cd monprojet
 
  $ cd monprojet
 
  $ git init
 
  $ git init
Line 63: Line 62:
 
  $ git push ssh://VOTREUSER@git.tuxfamily.org/gitroot/VOTREPROJET/NOMDUREPOSITORY.git master
 
  $ git push ssh://VOTREUSER@git.tuxfamily.org/gitroot/VOTREPROJET/NOMDUREPOSITORY.git master
  
Ceci va créer un premier commit qui sera la branche 'master' de votre repository git.
+
Ceci va créer un premier commit qui sera la branche 'master' de votre dépôt git.
  
(remplacez bien sur VOTREUSER par votre nom d'utilisateur sur le panel, VOTREPROJET par le nom du projet auquel appartient le repository de nom NOMDUREPOSITORY).  
+
Remplacez bien sûr VOTREUSER par votre nom d'utilisateur sur le panel, VOTREPROJET par le nom du projet auquel appartient le dépôt de nom NOMDUREPOSITORY).  
  
Pour récupérer une copie complète du dépôt GIT, vous pouvez utiliser la commande clone :
+
Pour récupérer une copie complète du dépôt git, vous pouvez utiliser la commande clone :
  
 
  $ git clone ssh://VOTREUSER@git.tuxfamily.org/gitroot/VOTREPROJET/NOMDUREPOSITORY.git
 
  $ git clone ssh://VOTREUSER@git.tuxfamily.org/gitroot/VOTREPROJET/NOMDUREPOSITORY.git
Line 78: Line 77:
 
  100% (6/6) done
 
  100% (6/6) done
  
=== Ajout/suppression de fichiers, mise à jour du repository ===
+
=== Ajout/suppression de fichiers, mise à jour du dépôt ===
  
 
==== Ajout de fichier ====
 
==== Ajout de fichier ====
  
Entrons donc dans notre répertoire
+
Entrons donc dans notre répertoire :
 
  $ cd repertoire
 
  $ cd repertoire
  
Et créons un fichier appelé ##file##
+
Et créons un fichier appelé "file"
 
  $ touch file
 
  $ touch file
  
Ensuite, pour l'ajouter au repository, tapez simplement
+
Ensuite, pour l'ajouter au dépôt, tapez simplement :
 
  $ git add file
 
  $ git add file
  
Line 94: Line 93:
 
  $ git commit file
 
  $ git commit file
  
Une fois vos commits terminés, vous pouvez pusher tout sur le serveur avec la commande:
+
Une fois vos commits terminés, vous pouvez pusher tout sur le serveur avec la commande :
 
  $ git push
 
  $ git push
  
Pour les répertoires, nous aurions procédé de la même façon
+
Pour les répertoires, nous aurions procédé de la même façon :
 
  $ git add directory/
 
  $ git add directory/
 
  $ git commit directory/
 
  $ git commit directory/
Line 103: Line 102:
  
 
====Suppression de fichier ====
 
====Suppression de fichier ====
Pour supprimer un fichier présent dans le repository, tapez simplement
+
Pour supprimer un fichier présent dans le dépôt, tapez simplement :
 
  $ git rm file
 
  $ git rm file
 
  $ git commit
 
  $ git commit
 
  $ git push
 
  $ git push
  
 
+
==== Mise à jour du dépôt local ====
==== Mise à jour du repository ====
+
Quand on travaille en groupe, il peut être utile de pouvoir mettre à jour son dépôt Git. Pour cela, il suffit d'invoquer la commande suivante à la base du dépôt :
Quand on travaille en groupe, il peut être utile de pouvoir mettre à jour son dépot Git. Pour cela, il suffit d'invoquer la commande suivante à la base du repository
 
 
  $ git pull
 
  $ git pull
 
  '''Attention''': le mot de passe  vous sera peut-être demandé plusieurs fois
 
  '''Attention''': le mot de passe  vous sera peut-être demandé plusieurs fois
  
== Utilisation de GIT en anonymous ==
+
== Utilisation de git en anonymous ==
  
Il est possible d'utiliser GIT en anonyme. Cependant, vous n'aurez pas le droit de modifier le repository (suppression ou modification de fichiers). Pour faire un 'checkout' du repository, invoquez la commande suivante :
+
Il est possible d'utiliser git en anonyme. Cependant, vous n'aurez pas le droit de modifier le dépôt (suppression ou modification de fichiers). Pour faire un "checkout" du dépôt, invoquez la commande suivante :
 
  $ git clone git://git.tuxfamily.org/gitroot/VOTREPROJET/NOMDUREPOSITORY.git
 
  $ git clone git://git.tuxfamily.org/gitroot/VOTREPROJET/NOMDUREPOSITORY.git
  
Il est également possible de mettre à jour le repository au fur et à mesure que les développeurs mettent à jour le code via un simple  
+
Il est également possible de mettre à jour le dépôt au fur et à mesure que les développeurs mettent à jour le code via un simple :
 
  $ git pull
 
  $ git pull
  
Attention cependant, le mode anonyme n'est disponible que si votre repository est mis en public (réglage par défaut)
+
Attention cependant, le mode anonyme n'est disponible que si votre dépôt est mis en public (réglage par défaut).
  
 
== Utilisation du Gitweb ==
 
== Utilisation du Gitweb ==
  
Vous pouvez consulter les repositories par le web à l'adresse suivante : http://git.tuxfamily.org
+
Vous pouvez consulter les dépôts par le web à l'adresse suivante : http://git.tuxfamily.org<br />
Les URLs sont de la forme http://git.tuxfamily.org/groupe/dépôt/ ( exemple: http://git.tuxfamily.org/tftest/testgit/ )
+
Les URLs sont de la forme http://git.tuxfamily.org/groupe/dépôt.git/ (exemple: http://git.tuxfamily.org/tftest/testgit.git/)
  
 
== Utilisation avec SSH ==
 
== Utilisation avec SSH ==
  
Il faut premièrement activer votre accés ssh et il est possible aussi de déposer votre clé SSH (publique) sur votre espace sur Tuxfamily. Cela vous permet de ne pas taper votre mot de passe à chaque opération effectuée sur le serveur Git.  Ensuite, il ne reste plus qu'à lancer une session SSH sur votre machine et toute les commandes GIT devront être tapées dans le même SHELL.  
+
Il est possible de déposer votre clé SSH (publique) sur votre espace sur Tuxfamily. Cela vous permet de ne pas taper votre mot de passe à chaque opération effectuée sur le serveur git.  Ensuite, il ne reste plus qu'à lancer une session SSH sur votre machine et toutes les commandes git devront être tapées dans le même shell.
 +
 
 +
Lisez cette page pour savoir précisément [[User/Fr#Acc.C3.A8s_SSH|comment faire pour déposer la clef SSH]].
 +
 
 +
== Actualiser le dépôt Git sur git.tuxfamily.org (push) ==
 +
 
 +
Le dépôt peut être actualisé par ssh mais pas par le protocole git (git://):
 +
 
 +
$ git push ssh://'UTILISATEUR'@git.tuxfamily.org/gitroot/'PROJET'/'DEPOT'.git master
 +
 
 +
=== git config du dépôt accessible sur le serveur tuxfamily ===
 +
 
 +
Les options de git-config receive.denyDeleteCurrent et receive.denyNonFastForwards sont activées.  Il n'est donc pas possible de supprimer quoi que ce soit de la branche 'master'.  Cependant les autres branches et les tags peuvent être supprimés:
 +
 
 +
$ git push ssh://'UTILISATEUR'@git.tuxfamily.org/gitroot/'PROJET'/'DEPOT'.git "":devel
 +
 
 +
En cas d'erreur si l'on veut supprimer une partie de la branche 'master' on peut d'abord s'assurer d'avoir une sauvegarde du dépôt, puis le supprimer dans le panel, attendre que la suppression soit effective, le recréer et enfin l'actualiser avec la sauvegarde (sans les commits indésirables biensûr).  Si l'on souhaite pouvoir modifier régulièrement la branche 'master' on peut contacter un administrateur qui pourra modifier les options du dépôt ou mieux encore implanter la configuration de ces options par le panel de VHFFS (voir https://www.vhffs.org/dev:mainpage).
  
Lisez cette page pour savoir précisément [[User/Fr#Acc.C3.A8s_SSH|comment faire tout ça.]]
 
  
 
==Développement collaboratif, droits d'écriture==
 
==Développement collaboratif, droits d'écriture==
Tous les utilisateurs du groupe auront la permission d'écrire sur le GIT. Autrement dit, si vous désirez développer à plusieurs sur un même repository, il est conseillé d'ajouter les développeurs au groupe via le panel. Toutefois, il faut que les développeurs se créent un compte sur le panel au préalable.
+
Tous les utilisateurs du groupe auront la permission d'écrire sur le git. Autrement dit, si vous désirez développer à plusieurs sur un même dépôt, il est conseillé d'ajouter les développeurs au groupe via le panel. Toutefois, il faut que les développeurs se créent un compte sur le panel au préalable.
  
 
Un projet correspond à un groupe (au sens Unix du terme), il faut ajouter vos co-développeurs à votre projet pour qu'ils puissent commiter des modifications au dépôt git (ils auront aussi accès à l'arborescence, permettant de maintenir l'intégralité du projet collaborativement).
 
Un projet correspond à un groupe (au sens Unix du terme), il faut ajouter vos co-développeurs à votre projet pour qu'ils puissent commiter des modifications au dépôt git (ils auront aussi accès à l'arborescence, permettant de maintenir l'intégralité du projet collaborativement).
Line 151: Line 164:
 
*Il est conseillé de ne commiter que des éléments qui compilent correctement (mais qui ne fonctionnent pas forcément) afin que le trunk puisse être testé n'importe quand par de nouveaux utilisateurs.
 
*Il est conseillé de ne commiter que des éléments qui compilent correctement (mais qui ne fonctionnent pas forcément) afin que le trunk puisse être testé n'importe quand par de nouveaux utilisateurs.
  
*Vous devez choisir les fichiers à versionner, il n'est pas exemple pas nécessaire d'archiver des fichiers de backup (faites attention aux éditeurs qui créent des copies en xxx~, ces copies ne doivent pas être versionnées) ni les fichiers issus directement de la compilation des sources.
+
*Vous devez choisir les fichiers à versionner, il n'est par exemple pas nécessaire d'archiver des fichiers de backup (faites attention aux éditeurs qui créent des copies en xxx~, ces copies ne doivent pas être versionnées), ni les fichiers issus directement de la compilation des sources.
  
*Evitez de prendre un nom générique comme "git". Utilisez plutot un nom en rapport avec votre projet ou même, prenez le nom de votre projet ...
+
*Evitez de prendre un nom générique comme "git". Utilisez plutôt un nom en rapport avec votre projet ou même, prenez le nom de votre projet...
  
 
= Liens utiles =
 
= Liens utiles =
*http://www.kernel.org/pub/software/scm/git/docs/git-svnimport.html à regarder pour les imports
+
https://git-scm.com/book/fr/v2 Livre gratuit: Pro Git, de Scott Chacon et Ben Straub <br />
*http://hjemli.net/git/cgit/ pour l'instant pas encore d'interface web pour parcourir le source du dépôt (gitweb aussi existe)
+
https://ndpsoftware.com/git-cheatsheet.html Git Cheatsheet (Aide-mémoire de git) <br />

Latest revision as of 23:21, 10 November 2019

Dépôt git




Description

Git est un autre SCM tel que CVS ou SVN mais il diffère légèrement de ceux-ci car il est décentralisé.

Si vous souhaitez uniquement exécuter git à partir de la ligne de commande, il vous suffit d'installer git.
Mais il existe des interfaces utilisateur graphiques (GUI) optionnelles disponibles pour vous aider, telles que:
git-gui (git gui) - Aide à la création de fichiers de validation pour la validation, à l'écriture de messages de validation et à l'envoi de messages.
gitk - Aide à revoir l'historique des commits git.

Dépendances

Création

  • Rendez-vous sur le panel
  • Cliquez sur le lien du projet auquel vous voulez ajouter un dépôt git
  • Choisissez le nom de votre dépôt
  • Validez

Conseils de création

  • Ne choisissez pas un nom trop générique
  • Pensez à remplir la description pour éviter les soucis avec les modos ;)

Modération

Cet objet est soumis à la modération voir : ici.

Comment l'administrer (panel)

Sur le panel vous pouvez décider si ce dépôt est public ou non.
En cochant oui vous permettez un login anonymous en lecture seule sur le dépôt et en permettez la consultation par le gitweb.

Configuration

Comment gérer les droits de mon groupe

Cet objet peut être partagé avec votre groupe en utilisant les ACL.

Comment le détruire

  • Logguez-vous sur le panel
  • Cliquez sur le groupe de votre projet
  • Cliquez sur votre dépôt git
  • Cliquez sur détruire

Comment l'utiliser

Bon, vous avez pris un hébergement chez Tuxfamily, c'est bien. Vous avez opté pour un dépôt git, c'est très bien. Nous allons vous expliquer comment utiliser tout cela.

Utilisation basique

Check out

Commencez par initialiser votre dépôt en local. Nous partons du principe que vous possédez déja un répertoire contenant votre projet.

$ cd monprojet
$ git init
$ git add monpremierfichier mondeuxiemefichier
$ git commit -a
$ git push ssh://VOTREUSER@git.tuxfamily.org/gitroot/VOTREPROJET/NOMDUREPOSITORY.git master

Ceci va créer un premier commit qui sera la branche 'master' de votre dépôt git.

Remplacez bien sûr VOTREUSER par votre nom d'utilisateur sur le panel, VOTREPROJET par le nom du projet auquel appartient le dépôt de nom NOMDUREPOSITORY).

Pour récupérer une copie complète du dépôt git, vous pouvez utiliser la commande clone :

$ git clone ssh://VOTREUSER@git.tuxfamily.org/gitroot/VOTREPROJET/NOMDUREPOSITORY.git
remote: Generating pack...
remote: Done counting 6 objects.
remote: Deltifying 6 objects...
remote: (6/6) done
remote: Total 6 (delta 0), reused 0 (delta 0)
Indexing 6 objects...
100% (6/6) done

Ajout/suppression de fichiers, mise à jour du dépôt

Ajout de fichier

Entrons donc dans notre répertoire :

$ cd repertoire

Et créons un fichier appelé "file"

$ touch file

Ensuite, pour l'ajouter au dépôt, tapez simplement :

$ git add file

Enfin, pour commiter, invoquez la commande suivante :

$ git commit file

Une fois vos commits terminés, vous pouvez pusher tout sur le serveur avec la commande :

$ git push

Pour les répertoires, nous aurions procédé de la même façon :

$ git add directory/
$ git commit directory/
$ git push

Suppression de fichier

Pour supprimer un fichier présent dans le dépôt, tapez simplement :

$ git rm file
$ git commit
$ git push

Mise à jour du dépôt local

Quand on travaille en groupe, il peut être utile de pouvoir mettre à jour son dépôt Git. Pour cela, il suffit d'invoquer la commande suivante à la base du dépôt :

$ git pull
Attention: le mot de passe  vous sera peut-être demandé plusieurs fois

Utilisation de git en anonymous

Il est possible d'utiliser git en anonyme. Cependant, vous n'aurez pas le droit de modifier le dépôt (suppression ou modification de fichiers). Pour faire un "checkout" du dépôt, invoquez la commande suivante :

$ git clone git://git.tuxfamily.org/gitroot/VOTREPROJET/NOMDUREPOSITORY.git

Il est également possible de mettre à jour le dépôt au fur et à mesure que les développeurs mettent à jour le code via un simple :

$ git pull

Attention cependant, le mode anonyme n'est disponible que si votre dépôt est mis en public (réglage par défaut).

Utilisation du Gitweb

Vous pouvez consulter les dépôts par le web à l'adresse suivante : http://git.tuxfamily.org
Les URLs sont de la forme http://git.tuxfamily.org/groupe/dépôt.git/ (exemple: http://git.tuxfamily.org/tftest/testgit.git/)

Utilisation avec SSH

Il est possible de déposer votre clé SSH (publique) sur votre espace sur Tuxfamily. Cela vous permet de ne pas taper votre mot de passe à chaque opération effectuée sur le serveur git. Ensuite, il ne reste plus qu'à lancer une session SSH sur votre machine et toutes les commandes git devront être tapées dans le même shell.

Lisez cette page pour savoir précisément comment faire pour déposer la clef SSH.

Actualiser le dépôt Git sur git.tuxfamily.org (push)

Le dépôt peut être actualisé par ssh mais pas par le protocole git (git://):

$ git push ssh://'UTILISATEUR'@git.tuxfamily.org/gitroot/'PROJET'/'DEPOT'.git master

git config du dépôt accessible sur le serveur tuxfamily

Les options de git-config receive.denyDeleteCurrent et receive.denyNonFastForwards sont activées. Il n'est donc pas possible de supprimer quoi que ce soit de la branche 'master'. Cependant les autres branches et les tags peuvent être supprimés:

$ git push ssh://'UTILISATEUR'@git.tuxfamily.org/gitroot/'PROJET'/'DEPOT'.git "":devel

En cas d'erreur si l'on veut supprimer une partie de la branche 'master' on peut d'abord s'assurer d'avoir une sauvegarde du dépôt, puis le supprimer dans le panel, attendre que la suppression soit effective, le recréer et enfin l'actualiser avec la sauvegarde (sans les commits indésirables biensûr). Si l'on souhaite pouvoir modifier régulièrement la branche 'master' on peut contacter un administrateur qui pourra modifier les options du dépôt ou mieux encore implanter la configuration de ces options par le panel de VHFFS (voir https://www.vhffs.org/dev:mainpage).


Développement collaboratif, droits d'écriture

Tous les utilisateurs du groupe auront la permission d'écrire sur le git. Autrement dit, si vous désirez développer à plusieurs sur un même dépôt, il est conseillé d'ajouter les développeurs au groupe via le panel. Toutefois, il faut que les développeurs se créent un compte sur le panel au préalable.

Un projet correspond à un groupe (au sens Unix du terme), il faut ajouter vos co-développeurs à votre projet pour qu'ils puissent commiter des modifications au dépôt git (ils auront aussi accès à l'arborescence, permettant de maintenir l'intégralité du projet collaborativement).

Autrement, vous risquez d'obtenir le message suivant :

error: unable to create temporary sha1 filename ./objects/tmp_obj_9tDId6: Permission denied

fatal: failed to write object
unpack unpacker exited with error code
ng refs/heads/master n/a (unpacker error)
error: failed to push to 'ssh://xxx@git.tuxfamily.org/gitroot/yyy/zzz.git'

Remarques diverses

  • Il est conseillé de ne commiter que des éléments qui compilent correctement (mais qui ne fonctionnent pas forcément) afin que le trunk puisse être testé n'importe quand par de nouveaux utilisateurs.
  • Vous devez choisir les fichiers à versionner, il n'est par exemple pas nécessaire d'archiver des fichiers de backup (faites attention aux éditeurs qui créent des copies en xxx~, ces copies ne doivent pas être versionnées), ni les fichiers issus directement de la compilation des sources.
  • Evitez de prendre un nom générique comme "git". Utilisez plutôt un nom en rapport avec votre projet ou même, prenez le nom de votre projet...

Liens utiles

https://git-scm.com/book/fr/v2 Livre gratuit: Pro Git, de Scott Chacon et Ben Straub
https://ndpsoftware.com/git-cheatsheet.html Git Cheatsheet (Aide-mémoire de git)