fuhrmanator / log210-ndc-quarto

Source du manuel Analyse et conception de logiciels (Quarto Markdown)
https://fuhrmanator.github.io/log210-ndc-quarto/
8 stars 3 forks source link

Ajout de consignes pour utiliser gitinspector sous Windows #132

Open probitaille opened 5 months ago

probitaille commented 5 months ago

De nombreux étudiants ont posé des questions ou ont signalés des problèmes pour utiliser gitinspector sous Windows.

J'ai donc ajouté des instructions et documenté 2 problèmes fréquents avec l'outil.

fuhrmanator commented 5 months ago

Merci pour les consignes. En effet, gitinspector pose problème sous Windows. Tu proposes d'utiliser WSL qui n'est pas vraiment Windows (il y a beaucoup de problèmes qu'on peut avoir avec WSL lorsqu'on l'installe, et j'ai peur que ça crée plus de difficultés).

As-tu validé tes consignes avec les mêmes personnes qui ont eu des difficultés? Est-ce que tu es sûr que ça répond à leur besoin? Je n'ai pas le temps en ce moment de faire cette validation malheureusement.

probitaille commented 5 months ago

J'ai pu reproduire ceci sur mon ordinateur de bureau et ma tablette Windows Surface. Les étapes sont bonnes, mais la configuration de chacun peut changer (ex: installation différente de Python). Cela reste encore à vérifier auprès des étudiants.

Le problème avec gitinspector c'est que le projet ne semble plus maintenu et n'est plus compatible avec les récentes versions de Python (incompatible avec 3.7+).

Il faudra éventuellement trouver une autre solution.

fuhrmanator commented 5 months ago

J'ai proposé une solution pour Windows ici https://github.com/ejwa/gitinspector/issues/213#issuecomment-922379023

Je viens de valider et ça résout le problème toujours (si Python est moderne, p.ex. 3.12 -- le changement ne fait rien pour Python 3.10).

Ma solution est l'automatisation du changement de code source que tu documentes dans cette PR je crois.

windows-patch.sh

#!/bin/bash
# If this file exists
#     sed -i  means: inline replace (overwrite file)
#         replace .install(True) with .install()

PATCHFILE="${USERPROFILE}/AppData/Roaming/npm/node_modules/gitinspector/gitinspector/localization.py"
POSIX_PATH=`cygpath $PATCHFILE`
if test -f $POSIX_PATH; then
    echo $POSIX_PATH
    sed -i s'/.install(True)/.install()/' $POSIX_PATH
fi

Je pourrais faire un commit de ce fichier dans le dépôt contributions et on peut inclure une étape pour les gens qui sont sur Windows, mais ça doit être exécuté dans un git bash (je n'ai pas fait une solution pour windows avec une ligne de commande).

Voici les étapes pour windows:

npm install -g gitinspector
git clone https://gist.github.com/fuhrmanator/b5b098470e7ec4536c35ca1ce3592853 contributions
# installer Python >= 3.12 https://www.python.org/downloads/
cd contributions
# appliquer le patch (une fois seulement)
./windows-patch.sh

Après, le script fonctionne (il y a des warnings avec Python 3.11 installé sur ma machine avec Inkscape - je déteste la config de Python sauf les environnement virtuels):

$ ./contributions.sh ../sga-equipe-g02-equipe-4/
gitinspector running on ../sga-equipe-g02-equipe-4/: patience...
C:/Program Files/Inkscape/lib/python3.11/subprocess.py:1016: RuntimeWarning: line buffering (buffering=1) isn't supported in binary mode, the default buffer size will be used
  self.stdout = io.open(c2pread, 'rb', bufsize)
ContributionsÉquipeTest.html
C:/Program Files/Inkscape/lib/python3.11/subprocess.py:1016: RuntimeWarning: line buffering (buffering=1) isn't supported in binary mode, the default buffer size will be used
  self.stdout = io.open(c2pread, 'rb', bufsize)
ContributionsÉquipeModèles.html
C:/Program Files/Inkscape/lib/python3.11/subprocess.py:1016: RuntimeWarning: line buffering (buffering=1) isn't supported in binary mode, the default buffer size will be used
  self.stdout = io.open(c2pread, 'rb', bufsize)
ContributionsÉquipeDocs.html
C:/Program Files/Inkscape/lib/python3.11/subprocess.py:1016: RuntimeWarning: line buffering (buffering=1) isn't supported in binary mode, the default buffer size will be used
  self.stdout = io.open(c2pread, 'rb', bufsize)
ContributionsÉquipeTypeScript.html
C:/Program Files/Inkscape/lib/python3.11/subprocess.py:1016: RuntimeWarning: line buffering (buffering=1) isn't supported in binary mode, the default buffer size will be used
  self.stdout = io.open(c2pread, 'rb', bufsize)
ContributionsÉquipeViews.html

Bref, c'est une solution plus simple si on l'inclut dans le dépôt de contributions. Qu'en penses-tu @probitaille ?

probitaille commented 4 months ago

Puisqu'un fichier .sh ne peut pas s'exécuter directement dans Windows, je propose cette alternative:

windows-patch.bat

@echo off
:: Activer l'expansion différée des variables, nécessaires pour évaluer correctement les variables
:: à chaque itération ou condition dans les blocs de commandes (comme if et for)
setlocal enabledelayedexpansion

:: Définir le chemin du fichier à patcher
set PATCHFILE=%USERPROFILE%\AppData\Roaming\npm\node_modules\gitinspector\gitinspector\localization.py

:: Vérifier si le fichier existe
if exist "%PATCHFILE%" (
    echo %PATCHFILE%

    :: Utiliser PowerShell pour effectuer le remplacement en ligne
    powershell -Command "(Get-Content -path '%PATCHFILE%') -replace '\.install\(True\)', '.install()' | Set-Content -path '%PATCHFILE%'"

    echo Success : Le fichier %PATCHFILE% a été modifié.
) else (
    :: Afficher un message d'erreur si le fichier n'existe pas
    echo Erreur : Le fichier %PATCHFILE% n'existe pas.
)

endlocal
pause

Ça semble bien fonctionner avec les autres étapes. Je viens d'essayer sur ma tablette Windows (différent de mon ordinateur de bureau qui était déjà bien configuré). J'ai cependant les mêmes warnings que toi.

fuhrmanator commented 4 months ago

Puisqu'un fichier .sh ne peut pas s'exécuter directement dans Windows

Le .sh fonctionne bien sur Windows si on le roule dans Git bash (ce qui est normalement installé lorsqu'on installe Git sur Windows). D'ailleurs, le script pour générer les rapports est aussi dans un .sh, alors je ne comprends pas pourquoi changer ça?

Comment as-tu roulé contributions.sh?

probitaille commented 4 months ago

Dans mon cas j'utilise WSL (Windows Subsystem for Linux) pour tout ce qui est en lien avec des commandes Linux.

fuhrmanator commented 4 months ago

OK, je crois qu'il vaudrait mieux être plus explicite qu'un script bash nécessite un shell (git) bash sous Windows.