Le Conseil de l'Expert
Michael
Responsable de l'infrastructure Viya.
« L'intégration de la macro %mp_gitstatus marque une étape clé dans la modernisation des cycles de développement SAS. En utilisant les fonctions natives de l'interface libgit2, ce script permet de passer d'une gestion de fichiers manuelle à une véritable culture CI/CD (Intégration et Déploiement Continus). L'enjeu est ici d'automatiser le suivi des versions directement depuis l'étape DATA.
Les piliers techniques de cette intégration :
Interface Native Libgit2 : Contrairement à l'exécution de commandes système externes, l'utilisation de git_status et git_status_get assure une communication directe et sécurisée avec le moteur Git. Cela permet une gestion fine des erreurs (codes -1 ou -2) pour diagnostiquer les problèmes de configuration de la bibliothèque ou du dépôt.
Extraction Multidimensionnelle du Statut : La boucle d'itération transforme le flux binaire du dépôt en une table SAS structurée. Elle capture trois métadonnées critiques :
PATH : L'emplacement exact du fichier modifié.
STAGED : L'état de préparation pour le prochain commit.
STATUS : La nature de la modification (nouveau, modifié, supprimé).
Gestion de la Mémoire (git_status_free) : C'est une pratique d'excellence indispensable. La libération des ressources Git à la fin de l'étape DATA prévient les fuites de mémoire et les verrous (locks) sur l'index du dépôt, garantissant la stabilité de la session SAS lors d'exécutions répétées.
Audit et Transparence : En stockant ces informations dans un jeu de données (&outds), l'administrateur peut construire des tableaux de bord de suivi des développements ou bloquer l'exécution de processus si des fichiers critiques ne sont pas synchronisés avec le dépôt maître.
L'utilisation de cette macro est le point de départ idéal pour automatiser vos déploiements. En couplant ce statut avec une conditionnelle if staged='TRUE', vous pouvez déclencher automatiquement des git_commit et git_push à la fin de vos traitements critiques, assurant une sauvegarde systématique de votre logique métier. »