Initiation à l’utilisation de Git

Christophe Avonture (@cavo789)

1. Téléchargement

Cette présentation sera téléchargeable sur le site https://www.joomladay.fr/ dès la fin du #jd18fr.

Elle sera également disponible en ligne sur le site https://www.marknotes.fr.

2. Qui suis-je 👦

3. Git 💡

C’est quoi ? Ai-je intérêt à l’utiliser ?

La question devrait être formulée autrement : quel est mon intérêt à ne pas l’utiliser ?

git est un logiciel de gestion de versions décentralisé. C’est un logiciel libre créé par Linus Torvalds, auteur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2. En 2016, il s’agit du logiciel de gestion de versions le plus populaire qui est utilisé par plus de douze millions de personnes.

Source Wikipedia

3.1. Ai-je la dernière version

Lorsque vous modifiez un fichier sur votre ordinateur à la maison, êtes-vous sûr d’avoir la dernière version ? Peut-être l’aviez-vous modifié sur votre ordinateur portable ou sur le PC que vous avez au boulot ?

Quand je me rends compte que je travaille sur une vieille version de mon code

facepalm_1.jpg

Peut-être même qu’un collègue avec qui vous collaborez a modifié le fichier sur son PC...

Sur l’un de ses nombreux PCs...

facepalm_1.jpg

Marknotes, logiciel Open Source, contient, hors librairies tierces 326 fichiers PHP, 48 fichiers JS, 56 fichiers CSS, etc. Savoir que j’ai bien la dernière version avant de commencer est vital.

Alors ? Comment savoir ?

⭐ ⭐ ⭐ ⭐ ⭐ ⭐ ⭐

... en utilisant un logiciel de gestion de versions décentralisé

⭐ ⭐ ⭐ ⭐ ⭐ ⭐ ⭐

3.2. Je suis seul à travailler sur le projet

Je travaille seul et toujours sur le même ordinateur; je n’ai donc pas ce problème de savoir si ma version est la bonne.

Ok mais ...

En travaillant avec un logiciel de gestion de versions, vous avez :

Exemple : vous trouvez une chouette librairie Open Source sur github.com, vous faites d’abord une sauvegarde de votre code actuel dans votre Git (push). Vous modifiez ici et là plusieurs fichiers puis,

4. Un tout petit peu de vocabulaire

4.1. Un dépôt (repository en anglais)

Un dépôt est un “projet” : cela peut être le logiciel que vous développez, un dossier avec vos notes, votre curriculum vitae ...

Le dépôt, c’est un dossier sur votre disque dur : tout ce que vous placerez dans ce dossier sera dans votre dépôt.

4.2. Local repository

C’est la copie de votre dépôt, sur votre machine. Cette copie n’est pas forcément synchronisée et vous pouvez donc avoir une vieille version ou, au contraire, les derniers changements.

4.3. Central repository

Le dépôt central, c’est la version du dépôt sur un cloud (sur le net), public ou privé.

Son but est d’assurer la gestion décentralisée des versions : reprendre le code source de référence qui sera utilisé par tout le monde; que vous pouvez (ou pas) mettre à jour ...

5. Est-ce payant 💰

5.1. Si l’accès à votre code est public

Tout est gratuit

Vous avez le choix entre, p.ex., GitHub.com ou BitBucket.org.

👍 GitHub est le plus réputé et vous permettra d’être bien plus visible que d’autres solutions de versionning.

5.2. Si l’accès à votre code est privé

GitHub.com propose des dépôts privés, mais ils sont payants contrairement à BitBucket.org qui offre cela gratuitement également.

👍 BitBucket permet du privé gratuitement.

5.3. En auto hébergée

Framagit est une solution gratuite que vous pouvez héberger sur vos serveurs. Framagit est soutenu par l’association Framasoft.

Rappel : si votre code est OpenSource, privilégiez quand même GitHub car c’est la solution la plus utilisée et votre code pourra être vu par le plus grand nombre.

6. Outil – GitHub Desktop

En mode “Je suis le pro de la commande”, vous pouvez utiliser les innombrables commandes comme :

🐹 git init 🐸 git add 🐶 git status 🐙 git pull 🐠 git push 🐤 git revert 🐥 git blame 🐲 git diff 🐝 git clone 🐒 git rebase 🐨 git rm 🐬 git merge 🐭 git reset

et il y a en encore plein d’autres... Au secours !!!

Je suis totalement relax

On peut ambitionner d’être Ze King of Ze Prompt ou, plus sereinement, utiliser une interface simplifiée : GitHub Desktop.

6.1. Installation

GitHub Desktop est gratuit et téléchargeable ici : https://desktop.github.com/

Il permet de gérer des dépôts, peu importe de l’endroit où ils sont stockés :

Lors de l’installation, vous devrez paramétrer GitHub Desktop en indiquant votre pseudo et votre mot de passe sur GitHub.com. Si vous n’avez pas encore de login, il faudra en créer un en se rendant sur https://github.com/join (gratuit).

6.1.1. Remarque

GitHub Desktop permet de travailler sur des dépôts n’étant pas sur Github.com. Il suffit de créer le dépôt manuellement (p.ex. en visitant bitbucket.org) et d’en récupérer l’URL.

Dans GitHub Desktop, au moment de créer un nouveau dépôt, il suffira de coller l’URL dans l’écran File - Clone repository

Exemple :

6.2. Démarrage

6.3. Création d’un nouveau dépôt

  1. Name : Nom du dépôt. Utilisé comme nom de dossier sur votre disque dur,
  2. Description : Optionnel mais tellement pratique ;),
  3. Local path : Place sur votre disque dur où sera créé le sous-dossier pour votre nouveau dépôt,
  4. Initialize with a README : Crée automatiquement un fichier README.md (conseillé !),
  5. Git ignore : Ajoute un fichier .ignore qui permet d’ignorer certains fichiers, à ne pas inclure dans votre versionning,
  6. License : Définit la licence de votre code (Open Source, propriétaire ...)

Le dossier est automatiquement créé sur le disque dur :

Le dossier contient automatiquement :

Dans GitHub Desktop, votre dépôt aura été ajouté et vous pouvez constater que c’est uniquement en local :

6.4. Modification d’un fichier

Modifions et sauvons le fichier README.md

GitHub Desktop détecte automatiquement les modifications faites :

6.5. Soumission d’une modification

  1. On introduit un titre pour notre soumission
  2. Optionnel, on introduit une description longue
  3. On clique sur Commit to ... pour sauver la modification

6.6. Annulation de modifications

À ce stade, il est très simple d’annuler les modifications apportées dans un fichier, il faut cliquer avec le bouton de droite sur le fichier puis Discard changes....

6.7. Voir l’historique

À tout moment on peut voir l’historique du dépôt

6.8. Release

La notion de release correspond à la maturité de vos changements : master correspond à votre dépôt de “production”. Vous pourriez créer des releases pour des versions intermédiaires comme development, beta, RC, ...

6.9. Publication

Publication du dépôt sur le cloud (github)

Publication faite

Une fois le dépôt publié, il est automatiquement créé sur github.com

7. Trucs 🎉

7.1. Scripts Windows batch

https://github.com/cavo789/tools_git_scripts/tree/master/update_repos

Script .bat pour Windows pour

7.2. Déployer automatiquement 👷

https://github.com/cavo789/tools_git_scripts/tree/master/deploy

Script PHP et explications sur la notion des webhook de GitHub qui permet de lancer une requête vers une page web pour la notifier d’une mise à jour d’un dépôt. Le script va alors télécharger la nouvelle version du dépôt et l’installer; tout ça automatiquement. 🎁

Aussi pour Windows !!!

Un lien symbolique, c’est comme un “raccourci” sous Windows, mais en mieux ! Vous donnez à croire au système d’exploitation que le fichier ou le dossier existe dans votre dossier de travail, mais non, c’est un lien vers un autre emplacement (même disque ou pas).

Concrètement : vous pourriez avoir C:\Repos\com_moncomp où vous avez le code source de votre composant Joomla et, vous avez un ou plusieurs sites Joomla en localhost.

Sur votre disque, vous auriez C:\Sites\J375, C:\Sites\J381, C:\Sites\J386 et C:\Sites\J4 p.ex. Pas très pratique : vous devriez copier votre code source dans quatre sites. Bonjour la maintenance !

Avec des liens symboliques, vous pourrez dire que le dossier j375\administrator\components\com_moncomp est un lien symbolique vers C:\Repos\com_moncomp\administrator\com_moncomp

Et faire de même pour les quatre versions et pour l’admin et le frontend.

Du coup, c’est comme si vous avez quatre versions installées, mais une seule version, réellement, sur le disque et cela en dehors votre arborescence Joomla : pour la gestion Git, ce sera bien plus facile puisqu’il suffira de travailler sur C:\Repos\com_moncomp qui, à tout instant, contiendra, toujours, la dernière version quelque soit le site où vous auriez pû modifier le code source.

7.3.1. Mode d’emploi

  1. Sous Windows, cliquer sur la loupe
  2. Au clavier, introduire cmd
  3. L’élément Command Prompt apparaît
  4. Avec la souris, faire un clic droit afin de sélectionner Run as administrator dans la liste

Démarer un prompt en mode admin

  1. Se placer dans le dossier où il faut ajouter créer le lien :

Changer de dossier

  1. Créer le lien vers le dossier qui se trouve dans le dépôt :

Changer de dossier

Il faut utiliser l’instruction mklink /D lorsqu’il s’agit d’un dossier ou, juste, mklink s’il s’agit d’un fichier.

8. Merci pour votre participation