Gestion du code source

Tags :
  • cours
  • projet
Auteur :
  • François Brucker

Comment gérer le code source d'un projet des principes au repository github.

La gestion du code source (SCM pour Source Control Management) est bien sûr utilisée massivement en informatique, mais les méthodes et techniques mises en œuvre fonctionnent pour tout projet où l'on doit utiliser/produire des documents qui sont modifiés au cours du temps. C'est un cadeau fait par les informaticiens au monde (ne le détruisez pas comme la gestion de projet agile...).

Un des bénéfices d'une gestion des documents bien comprise est que l'on peut :

Mais surtout : ne pas avoir peur de modifier, tester et expérimenter des nouveautés.

Ces bénéfices sont incommensurables lorsque l'on travaille à plusieurs sur un projet et sont très utiles même pour un projet solo.

Principes

Dépôt des sources

Déposer le code source pour qu'il puisse être utilisé par d'autres.

Gestion du code source

Gérer les évolutions de son code.

Partager du code source

Bonnes pratiques

Outils

Pour aller plus loin

Outre ce qu'on a vu au préalable l'usage d'un SCM au quotidien nécessite quelques connaissances supplémentaires qui permettent de que nous allons aborder maintenant.

Sha

À tout objet de git est associé un nombre écrit en hexadécimal correspondant à son hash avec la fonction de hachage sha-1.

Ceci permet de retrouver de façon unique (au moins en probabilité et sûrement pour un projet donné) tout ce que stocke git.

TBD projet voir le sha.

Diff

TBD faire un exemple avec la commande diff au terminal : deux fichiers (lignes ≠) et deux dossiers (deux fichiers ≠) TBD sous windows https://learn.microsoft.com/fr-fr/troubleshoot/windows-client/shell-experience/how-to-use-windiff-utility ou https://www.git-tower.com/blog/diff-tools-windows

On a déjà vu le diff des fichiers lors de nos commits et en particulier lorsque l'on a résolu un conflit de fusion. Cela vaut le coût de connaître le format utilisé :

Notez que l'on peut faire nous même des diff au terminal :

Commande diff au terminal :

Les algorithmes utilisés pour faire un diff sont basés sur le problème de l'alignement de séquences. Ils ne travaillent cependant sur des caractères mais sur des lignes. Si cela vous intéresse suivez les liens suivant pour une introduction :

Altération et modification de l'historique

TBD projet avec desktop voir https://docs.github.com/en/desktop partie managing commits.

Authentification

Github actions

TBD :

Git

Est l'outil utilisé par github. C'est mieux si vous avez installé ce logiciel sur votre ordinateur et que vous savez un petit peut vous en servir. Cette partie vous permettra d'installer git et de le configurer. On verra aussi comment créer et cloner un projet pour github.

Connexion ssh à github

Nous allons utiliser des clés ssh pour se connecter à github, donc si vous ne l'avez pas encore fait :

Puis renseignez votre clé publique dans votre profil github.

Installation et configuration

Les notions que l'on a vu précédemment suffisent pour un usage courant de la gestion des sources avec github. Si vous voulez :

Il vous faudra installer le programme git en ligne de commande.

L'installation et la configuration de git n'est pas très technique. Cela vaut le coup de de le faire ne serait-ce que pour pouvoir utiliser les magnifiques plugins de vscode.

Porcelaine et plomberie de git

TBD expliquer porcelaine/plomberie

Porcelaine

Plomberie

TBD un tag c'est un objet. Commit, tree ou blob. TBD work-trees et stash TBD utiliser switch et pas checkout pour passer de branches en branches (checkout pour les commits particulier: headless ?) TBD : index = staging area. TBD diff format et différents algos TBD https://git-scm.com/book/en/v2/Git-Basics-Undoing-Things

TBD reflog. TBD git sha. Intro : https://medium.com/@jonathan_finch/git-commit-hash-number-theory-770f67ec492d et https://graphite.dev/guides/git-hash. Mieux : https://www.designgurus.io/answers/detail/how-do-i-get-the-hash-for-the-current-commit-in-git

Cette partie du cours s'adresse plus particulièrement aux informaticiens voulant utiliser git en ligne de commande et/ou à ceux voulant comprendre le fonctionnement précis de git.

Bibliographie

Cours

Références

Misc

Histoire