L'option «Utiliser Git et les outils Unix facultatifs à partir de l'invite de commandes Windows» est-elle dangereuse?

11

Lors de l'installation de Git, il offre la possibilité d'ajouter tous ses outils msys * nix dans votre PATH, mais il avertit:

Avertissement: cela remplacera les outils Windows tels que "rechercher" et "trier". N'utilisez cette option que si vous en comprenez les implications.

Mes questions sont:

  • Avec quels outils sera-t-il exactement en conflit?
  • Est-ce que ça importe? Sont-ils couramment utilisés par le système? (Je ne les ai jamais utilisés personnellement.)
  • Puis-je simplement changer l'ordre des répertoires dans le CHEMIN pour éviter les conflits?
  • Est-ce ce que fait la 2ème option? ("Utiliser Git à partir de l'invite de commandes Windows - Cette option est considérée comme sûre car elle n'ajoute que quelques wrappers Git minimaux")
Aleksandr Dubinsky
la source

Réponses:

4

Je suis d'accord avec l'analyse générale des autres réponses et je suis également incapable de prédire exactement quel type de conflits vous pourriez rencontrer. Je sais que je n'ai rien remarqué de mal à prendre la troisième option. Mais je peux ajouter un peu à ce que les options font réellement à partir de 2018.

J'ai expérimenté une variété de configurations d'installation tout en décidant comment suggérer la transition de mon équipe vers git, y compris ces options. C'est ce que j'ai réellement observé l'installation faire sur mon chemin, à partir de git pour Windows v2.19.1.

capture d'écran des options d'installation de Git pour Windows pour définir le CHEMIN

Utiliser Git de Git Bash uniquement

Comme il est indiqué, aucune modification n'est apportée au chemin d'accès de votre système. La saisie d'un simple git statusà l'invite de commande Windows, cmd.exe, échouera avec 'git' is not recognized as an internal or external command, operable program or batch file.

Utiliser Git à partir de l'invite de commandes Windows

Puis-je simplement changer l'ordre des répertoires dans le CHEMIN pour éviter les conflits?

Est-ce ce que fait la 2ème option? ("Utiliser Git à partir de l'invite de commandes Windows - Cette option est considérée comme sûre car elle n'ajoute que quelques wrappers Git minimaux")

Changer la commande est toujours une option pour vous, mais non, le deuxième choix semble n'avoir rien à voir avec la commande. (Les ajouts de chemin semblent aller à la fin du chemin indépendamment. Je suis un peu suspect que cela ait changé à un moment donné.) Il s'agit de savoir quels répertoires sont ajoutés au chemin, et est différent entre les deuxième et troisième options.

Quand il dit qu'il ajoutera des wrappers Git "minimes" à votre PATH, ce qu'il semble réellement faire est d'ajouter le cmddossier de l'installation (à venir) au chemin. C'est l'option que j'ai finalement suggérée à mon équipe. Nous avons maintenant C:\Program Files\Git\cmdsur nos chemins.

Que contient le cmdrépertoire? Pour moi, seulement six fichiers:

  • git.exe
  • git-gui.exe
  • gitk.exe
  • git-lfs.exe
  • start-ssh-agent.cmd
  • start-ssh-pageant.cmd

Comme pour la réponse d'Anaksunaman, je ne sais pas quand cela ne suffira pas. N'importe laquelle des commandes normales commençant par git <some command>fonctionnerait à partir de l'inclusion de git.exe.

Utilisez Git et les outils Unix facultatifs à partir de l'invite de commandes Windows

Cela inclut l'ajout <Install dir>\Git\cmdde la deuxième option au chemin, ainsi que l'ajout <Install dir>\Git\mingw64\binet <Install dir>\Git\usr\binle chemin. Les deux répertoires ont un nombre important d'exécutables, y compris rechercher, trier et tuer comme mentionné dans d'autres réponses.

Plutôt que d'énumérer ce qui est probablement quelques centaines d'éléments, j'encourage l'utilisateur concerné à prendre l'option deux, à terminer l'installation et à jeter un œil à ces répertoires. Si vous êtes satisfait du risque, ajouter <Install dir>\Git\mingw64\binet <Install dir>\Git\usr\binà votre parcours équivaudrait à reprendre une machine à remonter le temps et à sélectionner la troisième option.

ojchase
la source
Étant donné que les hypothèses et les contextes changent au fil des ans, il peut être utile de commencer une nouvelle réponse pour une question de quatre ans avec "Voici une nouvelle perspective de 2019 ..."
Christopher Hostage
1
C'est toujours la question la plus utile sur le sujet, donc je pense qu'il est pertinent de recevoir des réponses supplémentaires. J'ai ajouté un an, même si j'aurais pensé que le numéro de version aurait rempli le même objectif.
ojchase
7

Avec quels outils sera-t-il exactement en conflit?

Personnellement, je ne suis pas sûr d'une liste complète, mais cette question StackOverflow dit

"Cela inclut trouver, tuer et trier [...] Le problème avec les 3 premiers (et similaires) est qu'ils existent dans les deux OS et fonctionnent différemment dans chacun."

Ils ne sont peut-être pas souvent utilisés par vous mais sont suffisamment courants pour que Git ressent le besoin de vous avertir d'un comportement inattendu.

Pour l'anecdote, ils sont plus susceptibles d'apparaître dans des programmes tiers (principalement des scripts), donc le niveau d'effet dépend très probablement de la façon dont vous utilisez des programmes qui dépendent de l'une de ces commandes.

Est-ce ce que fait la 2ème option? ("Utiliser Git à partir de l'invite de commandes Windows - Cette option est considérée comme sûre car elle n'ajoute que quelques wrappers Git minimaux")

Fondamentalement, il vous permet d'utiliser Git à partir de la ligne de commande (cmd.exe) avec toutes les commandes Git courantes. Cette option est parfaitement sûre et utile pour 99% de ce que vous voudriez probablement créer un script ou implémenter manuellement à partir d'une ligne de commande Windows. J'utilise cette option et je n'ai jamais rencontré personnellement de problème.

Après l'installation, vous souhaiterez peut-être également consulter une interface graphique git (telle que GitHub Dekstop pour Windows ou SourceTree ) et n'oubliez pas que Git bash est également fourni avec l'installation.

Anaksunaman
la source
En fait, j'aimerais utiliser certains des outils de CMD, et je me demandais si la 2ème option rend l'un des outils Unix disponible ou seulement git.
Aleksandr Dubinsky
À ma connaissance, ce n'est que du git.
Anaksunaman
3

Avec quels outils sera-t-il exactement en conflit?

Je laisserais l'installation modifier votre CHEMIN. Il est facile de le supprimer du CHEMIN si vous ne le souhaitez pas. Ensuite, je regardais les répertoires et faisais des comparaisons comme diff, comm, etc. pour trouver les conflits. Ils devraient être documentés quelque part mais je ne sais pas où.

Est-ce que ça importe? Sont-ils couramment utilisés par le système? (Je ne les ai jamais utilisés personnellement.)

Je n'ai pas utilisé les outils cygwin récemment, mais lorsque je devais utiliser Windows, j'avais généralement le répertoire des outils cygwin d'abord dans mon PATH sans problème.

Le plus grand risque serait que si un programme recherchait les outils de ligne de commande Windows en conflit, il exécuterait le programme incorrect. Je pense que les chances de cela sont très minces, compte tenu de la très petite quantité de scripts cmd.exe qui se passe.

Puis-je simplement changer l'ordre des répertoires dans le CHEMIN pour éviter les conflits?

Oui. Déplacez simplement le cygwin, ou tout ce qui gitajoute, à la fin du CHEMIN. N'oubliez pas que certaines séquences de commandes ne fonctionneront pas correctement dans cygwin. Aussi, à bien y penser, je pense que la console cygwin configure correctement le chemin. La configuration de votre propre chemin lorsque vous utilisez cygwin permettrait également à cygwin de fonctionner correctement.

Est-ce ce que fait la 2ème option? ("Utiliser Git à partir de l'invite de commandes Windows - Cette option est considérée comme sûre car elle n'ajoute que quelques wrappers Git minimaux")

Il semble que cela insère dans le PATH un répertoire contenant uniquement les commandes git dont vous avez besoin pour utiliser git.

RobertL
la source
En fait, git utilise MSYS au lieu de Cygwin. La différence est que msys est natif win32, tandis que cygwin utilise une bibliothèque d'émulation pour adapter le code posix.
Aleksandr Dubinsky