Ça y est!
Après plusiuers mois de reagrds en coin, d’oeillades et de tentatives d’approche avortées je sors enfin avec git :-)
C’est finalement assez simple et puissant.
Le but est de synchroniser des versions d’applications ruby on rails entre un serveur central et plusieurs ordinateurs périphériques. Un peu bizarre vu que git est promu pour le côté décentralisé, mais dans mon cas cela risquait d’être un sacré bazaar :-)
Donc j’ai une application en développement sur un ordinateur
et je souhaite faire un dépot (repository en anglais) sur le serveur central et se synchroniser via ssh.
Serveur distant centralisé servant de dépot git principal
git init –bare depotapplicationtest.git
git début d’ordre donné à git
init création d’un dépot
–bare qui ne contiendra pas les fichiers en clair mais servira de référence
depotapplication.git le dossier qui servira de dépot. Finir par .git est une convention.
La configuration du serveur est finie. C’est pas long hein?
Git en local
Sur l’ordinateur distant qui a une application Rails à synchroniser avec le dépot:
cd applicationtest/ je vais dans le dossier;
git init je déclare ce dossier comme étant un dépot git;
git add . (attention ne pas publier le point, j’additionne tous les dossiers, documents à la future synchronisation;
git commit -m “premier commit et autre commentaire” j’enregistre les changements.
Maintenant on a un dépot personnel git que l’on peut synchroniser avec d’autres ordinateurs périphériques, un autre dossier sur le même ordinateur, etc.
Mais le but est de le synchroniser avec le serveur centralisé.
git remote add origin ssh://utilisateurdistant@adresse_de_mon_serveur_centralise/chemin/du/dossier/dossierapplicationtest.git
remote add ajout d’un dépot distant;
origin nom du dépot;
ssh:// dépot avec lequel la connexion se fera en ssh avec l’adresse qui suit.
On a donc créé une relation entre le dépot sur l’ordinateur local et le dépot centralisé sur le serveur distant.
Maintenant on veut “remplir” le dépot central :
git push origin master
git push envoie les modifications des fichiers et dossiers;
origin nom du dépot
master branche du projet.
Dans mon cas vu que la clé ssh n’est pas encore définie la connexion nécessite l’entrée du mot de passe sur demande, et voilà !
J’ai maintenant un dépot centralisé sur lequel les modifications effectuées sur un ordinateur local seront mises à jour (après un git add . et un git commit -m”commentaire”).
Associer un autre dépot git.
Suposons que maintenant je veuille travailler sur le même projet à partir d’un autre ordinateur.
Sur celui-ci, git installé évidemment, je tape la commande
git clone ssh://utilisateurdistant@adresse_de_mon_serveur_centralise/chemin/du/dossier/dossierapplicationtest.git
qui va rapatrier en local les fichiers de l’application grâce à git clone suivi de l’adresse.
Une modification, un git add ., git commit -m “commentaire” et un git push origin master plus tard, le serveur est mis à jour.
Et de retour sur mon premier ordinateur périphérique. Je veux rapatrier les modifications effectuées. Je tape alors git pull origin master..
git pull ramenant les modifications du serveur vers le local.
C’est tout.
Pas mal non ?
Mise à jour 20 avril 2013
A l’occasion d’un déplacement j’ai du modifier l’adresse locale de mon dépot git en adresse internet (la redirection des ports ssh étant automatique via la box).
Comment faire ? Tout simplement dans le dossier de mon projet en éditant via vim .git./config l’adresse du serveur. On sauvegarde et cela fonctionne à nouveau.