Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

astuces:depots:git:notes [2010/06/02 11:31] (version actuelle)
olivier créée
Ligne 1: Ligne 1:
 +====== Présentation ======
 +
 +Cette page recense les notes de l'auteur à propos de Git. Vous trouverez possiblement des astuces ou des commandes qui pourraient vous mettre sur la voie (quand vous rencontrez un problème).
 +
 +====== Gestion de dépôts Git ======
 +
 +Pour gérer plusieurs dépôts Git de manière simple, en ayant la possibilité d'ajouter, supprimer, modifier les droits d'écritures à telle personne sur tel dépôt, je vous conseille [[http://eagain.net/gitweb/?p=gitosis.git |Gitosis]] dont nous pouvons trouver un tutoriel ici : http://www.mickael-allain.fr/index.php?post/2010/03/06/Installation-et-configuration-de-son-serveur-Git-avec-Gitosis-sous-Debian-5#installation .
 +
 +====== Les hooks : déclencher un script à l'envoi d'un commit ======
 +
 +Les hooks sont des déclencheurs qui actionnent un script selon certains évènements :
 +  * avant de recevoir des modifications sur le dépôts
 +  * après avoir reçu des modifications sur le dépôt
 +  * pendant une mise à jour
 +  * après une mise à jour
 +  * etc.
 +
 +Pour les hooks je me suis noté qu'il faut :
 +  * vérifier que la partition sur laquelle se trouve le dépôt contient **exec** grâce à la commande :
 +<code bash>
 +mount
 +</code>
 +Si exec n'est pas ajouté, tentez :
 +<code bash>
 +mount -o remount,defaults,exec /chemin/partition
 +</code>
 +  * Aller dans le dossier **hooks** et rendre exécutable le déclencheur que nous voulons et qui contient le script que nous voulons exécuter (par exemple le post-receive) :
 +<code bash>
 +cd /chemin/vers/depots/git/hooks/
 +chmod a+x post-receive
 +</code>
 +  * Ajouter le code que nous voulons effectuer
 +
 +===== Astuce =====
 +
 +Je n'aime pas le fait de mettre directement le code dans le déclencheur (hook). Du coup je préfère éditer le fichier, par exemple //post-receive// et ajouter une ligne comme :
 +<code bash>
 +sh /chemin/vers/mon/script.sh
 +</code>
 +
 +Ce qui a l'avantage d'avoir le script quelque part dans la machine ;)
 +
 +<note tip>Il est possible de faire la même chose en supprimant le fichier post-receive et en faisant un lien symbolique :
 +<code bash>
 +cd hooks
 +rm post-receive
 +ln -sf /chemin/vers/mon/script.sh post-receive
 +</code>
 +</note>
 +
 +====== Copie d'un dépôt en vue de l'afficher dans un outil de gestion (Redmine par exemple) ======
 +
 +C'est encore en phase de test, mais voici deux codes utilisés pour l'export d'un dépôt git dans un nouveau dépôt %%--%%bare.
 +
 +Par ailleurs les dépôts ne sont pas distants mais locals (oui c'est inutile je sais… )
 +
 +<note>Les codes sont à mettre dans un **hook**, par exemple **post-receive**.</note>
 +
 +===== Système D =====
 +
 +<code bash>
 +## Systeme D
 +rm -rf /depots/publics/projet
 +git clone --bare /depots/officiels/monprojet /depots/publics/projet
 +chown www-data:www-data /depots/publics/projet -R
 +</code>
 +
 +===== Plus propre =====
 +
 +Requis :
 +  * avoir crée le dépôt **/depots/publics/projet** à l'aide de la commande :
 +<code bash>
 +git clone --bare /depots/officiels/monprojet /depots/publics/projet
 +</code>
 +  * avoir ajouté un dépôt externe via la commande :
 +<code bash>
 +git remote add origin /depots/officiels/monprojet
 +</code>
 +
 +Ensuite on peut utiliser le code suivant :
 +<code bash>
 +cd /srv/toile/depots/panheroic
 +git fetch origin && git reset refs/remotes/origin/master > /dev/null
 +</code>
 +
 +====== Export d'un dépôt git (équivalent svn export) ======
 +
 +Cf. http://stackoverflow.com/questions/160608/how-to-do-a-git-export-like-svn-export
 +
 +La méthode que j'ai retenue :
 +<code>
 +cd /chemin/vers/mon/depots/git/
 +git archive maBranche | /bin/tar -x -U -C /destination/voulue/
 +</code>
 +
 +À noter que **maBranche** n'est pas obligatoire.
 +
 +====== Démon Git ======
 +
 +Sous Debian, un paquet nommé **git-daemon-run** simplifie la vie pour le lancement en tâche de fond d'un démon git.
 +
 +Je ne sais pas encore à quoi cela sert, mais il me semble que c'est nécessaire pour le logiciel [[https://git.wiki.kernel.org/index.php/Gitweb |Gitweb]] et [[http://hjemli.net/git/cgit/ |cgit]] (interfaces Web).
 +
 +
 
astuces/depots/git/notes.txt · Dernière modification: 2010/06/02 11:31 par olivier
 
Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki