Différence entre msysgit et Cygwin + git?

Quelle est la différence entre msysgit et Cygwin + git?

maintenant j'utilise msysgit, mais je n'aime pas le Bash Git (vous ne pouvez pas redimensionner ou copier/coller) donc je pense penser à passer à Cygwin, parce que alors je pourrais utiliser mintty .

29
demandé sur thirtydot 2010-06-29 23:36:41

9 réponses

Modifier 2018:

depuis ma réponse 2010-2012-2014, en 2015 Git pour Windows utilise msys2, comme je détail ici .

pour en savoir plus " comment msys, msys2 et msysgit sont-ils reliés entre eux? ".


Edit (2 autres années plus tard: octobre 2014)

Johannes Schindelin vient de l'expliquer (Oct. 2014) que msysgit est éliminé :

nous avons maintenant un léger Git pour Windows SDK -qui est essentiellement un système standard MinGW/MSys géré par le gestionnaire de paquets mingw – get.

nous avons décidé de simplement supprimer le nom "msysGit" (ainsi que le GitHub org du même nom ) et:

  • travaux sur Git for Windows "1519240920 (avec la GitHub org correspondante) ,
  • utilisant le nom " Git for Windows "pour l'installateur destiné aux "utilisateurs finaux" et
  • en utilisant le nom de " Git pour Windows SDK " pour l'environnement de développement ciblant Git pour les développeurs Windows).

mise à jour 2 ans plus tard: juillet 2012

Msysgit est ici pour rester , et à moins que vous besoin à ajouter quelques centaines de MO pour cygwin , vous n'avez vraiment pas besoin de Cygwin pour juste utiliser Git sur Windows.

Et si vous voulez accéder à GitHub, vous obtenez un paquet ("Git for Windows" + clés ssh enregistrées pour vous sur votre compte GitHub + une interface graphique agréable) avec GitHub for windows .

les deux Git et msysgit sont sur GitHub.

Le msysgit.github.com page illustre clairement la différence entre:

Git for Windows logo <----------> MsysGit logo

" Git pour Windows ": Pure utilisateurs de Git | " MsysGit ": pour Testeurs, les développeurs, custom installer mainteneur

Voir aussi the msysgit FAQ :

Qu'est-ce que C'est que" MSys "dans"MSysGit"?

MSys est un environnement pour Windows offrant un shell de type Unix et un interpréteur Perl. Étant donné que de nombreuses parties de Git ne sont pas encore programmées en C, mais plutôt dans les scripts shell et Perl, Git for Windows a besoin d'un tel environnement.

par conséquent, nous livrons Git pour Windows avec une version très minimale de MSys.

MSys est également nécessaire pour construire Git, car nous réutilisons les mêmes utilisations de la configuration de type Unix en amont de git. Nous expédions un environnement MSys plus complet, y compris GCC, comme environnement de construction (qui est donc surnommé "msysGit").

nous compilons git comme un programme pur MinGW , cependant, c.-à-d. un programme sans aucune dépendance de lien sur quoi que ce soit d'autre que bibliothèques Windows standard.

Ainsi, à moins que vous ayez besoin d'utiliser des parties de Git qui ne sont encore implémentées qu'en tant que scripts shell ou Perl, vous pouvez vous en sortir en exécutant simplement git.EXE.


réponse originale: juin 2010

a/ vous pouvez redimensionner et copier-coller dans Git bash, comme dans tout autre Shell Windows.

b / vous utilisez probablement "Git for windows", et non msysgit. De le wiki :

  • msysGit est l'environnement de développement pour compiler Git pour Windows . Il est complet, dans le sens où vous avez juste besoin d'installer msysGit, et puis vous pouvez construire Git. Sans installer de logiciel tiers.
  • Git for Windows est un installateur qui installe Git -- et seulement Git .

Il est facile de voir la différence:

  • les installateurs de Git ont le préfixe Git -,
  • les installateurs msysGit ont le préfixe msysGit-.

un autre exemple est que les installateurs msysGit sont disponibles en deux saveurs: fullinstall et netinstall.

De plus, msysGit ne s'installe pas sur C:\Program Files par défaut.

Mais msysGit fourni avec gcc , le compilateur GNU C.

C / de MSysGitHerald10 :

Rappelez-vous:

  • MinGW est vraiment une couche de compilation très mince sur le Microsoft Runtime; les programmes MinGW sont donc de vrais programmes Windows, sans concept de chemins de style Unix ou de subtilités POSIX comme un appel fork() .
  • MSys, in contrast, est une version allégée de Cygwin (une ancienne version), dont le seul but est de fournir suffisamment D'une couche POSIX pour exécuter une bash.

et c'est-à-dire pas toujours bien accueilli :

en travaillant sur Windows, je n'aime pas que msysGit, comme son nom l'indique, dépende de MSYS et d'outils du monde Unix. Je crois que tous les programmes de la distribution Git devraient devenir les binaires compilés pour une plate-forme spécifique, et ne dépendent pas d'interprètes shell ou de langues tierces comme Tcl/Tk.

même si, il est beaucoup mieux que le premier Git sur Cygwin installations à partir de 2007.

43
répondu VonC 2018-01-26 12:35:04

cygwin + git était le seul moyen de faire fonctionner git à l'époque. Maintenant que msysgit est là, Je ne vois aucune raison d'utiliser cygwin.

je suis d'accord que git bash n'est pas si bon.. donc ce que je fais c'est

  1. mettez git dans le chemin et utilisez l'invite de commande de fenêtre quand j'ai besoin de la ligne de commande
  2. avoir tortoise git installé pour quand je veux avoir une GUI à mon git
4
répondu bwawok 2011-11-10 09:31:39

C'est une réponse de 2017...

la différence technique fondamentale est que tous les programmes cygwin dépendent du cygwin1.dll; mais c'est en même temps la moins intéressante pour l'utilisateur final, car il doit être presque complètement transparent. Les principales différences que j'ai trouvées ne sont pas tant entre les versions git qu'entre l'environnement cygwin et l'environnement msys/mingw. Ce sont quelques différences que j'ai trouvé:

  • ACL manutention. La façon dont les nouveaux cygwins (post-2015) gèrent les listes de contrôle D'accès NTFS peut être gênante au point d'être dangereuse. Par défaut, les lecteurs Windows sont montés avec l'option acl active. Cygwin essaie d'imiter les permissions POSIX en mélangeant de nouveau et en abusant les entrées ACL d'une manière qui peut rendre l'accès impossible à travers les programmes Windows natifs. De plus, il est possible que l'accès aux fichiers soit considérablement ralenti dans les installations multi-domaines (c.-à-d. commerciales ou institutionnelles) à utilisateurs multiples. en raison de l'accès au réseau, parce que la détermination des utilisateurs et des permissions nécessite potentiellement des requêtes de serveur de domaine pour chaque fichier.



    msys s'installe avec l'option -noacl par défaut. Faire cela aussi à cygwin semble éviter ces problèmes.
  • de la Vitesse. Je travaille actuellement dans un dépôt avec des fichiers De 100k (ne pas demander). Un git status avec tous les contenus pertinents du disque dans le cache prend 4,7 secondes avec cygwin et 0,4 secondes avec msys git. Je ne sais pas quelle partie de la couche de compatibilité cygwin ralentit les choses -- serrures, fourchettes, système de fichiers, IPC... ils sont tous les candidats.
  • potentiellement noms de fichiers. Je n'ai pas enquêté sur la question, mais je soupçonne qu'un git (et les autres outils) ciblé pour windows (comme msys git) peut mieux gérer les noms de fichiers windows. Sous cygwin on doit convertir avec diligence les noms de fichiers via cygpath entre les deux mondes. Qui va jouer un rôle important lorsque les scripts etc. interface avec les programmes Windows.

Edit: c'est peut-être pas évident qu'avec quelques modifications mineures, il est possible de partager des paramètres communs pour git (mais pas seulement pour git) entre cygwin et Msys2. Si je me souviens correctement, une bonne façon est de définir la variable D'environnement de la maison dans les paramètres du système de Windows; puis Msys2 et cygwin utiliseront ce répertoire et donc les mêmes fichiers de points, parmi eux ~/.gitignore . Qui facilite le changement de entre les terminaux cygwin et Msys2 assez indolore (penser ~/.inputrc , ~/.bashrc , ~/.profile ...).

4
répondu Peter A. Schneider 2018-01-23 19:30:49

MSysGit est livré avec une très vieille version de SSH. Le débit sur mon système était d'environ 10 mbit. Si vous ne vous souciez pas de la vitesse des clones, alors cela ne vous affecte pas. Le correctif est D'exécuter Cygwin Git ou remplacer le SSH installé dans MSysGit .

2
répondu cmcginty 2013-01-23 02:05:37

l'implémentation de bash dans msysgit est ancienne. Cependant, j'utilise vim lors de l'édition et qui fonctionne très bien. En ce qui concerne la découpe et le collage, j'ai souvent recours à SHIFT+ALT+[space], E, M ou peu importe ce que sont les touches pour obtenir le texte de marque que je veux. Pas idéal, mais fait le travail assez bien que je ne coupe pas et coller trop.

J'ai maintenant commencé à lancer Ubuntu sur la même machine via VirtualBox. Avec le mode transparent et les dossiers partagés, je peux profiter d'un bash à jour et rapide Git.

Je n'utilise aucun outil gui pour Git sauf gitk (pour gitk --all) pour visualiser l'histoire si j'en ai besoin.

j'ai essayé cygwin et je n'ai pas aimé. La solution de boîte virtuelle est beaucoup mieux si msysgit n'est pas assez pour vous.

1
répondu Adam Dymitruk 2010-06-29 19:46:47

la version actuelle de Git sur cygwin est 1.7.5.1, ce qui est très, très actuel (mai 2011).

Je ne vois aucune raison (jusqu'à présent) d'utiliser autre chose, bien que j'envisage de donner msysgit (alias" Git for Windows") un essai (actuellement version 1.7.4).

1
répondu Theoxylo 2011-05-17 17:19:10

Msysgit a reçu un certain nombre de correctifs pour traiter des problèmes spécifiques à Windows tels que l'insensibilité du système de fichiers, le verrouillage des fichiers, etc. C'est probablement une mauvaise idée d'utiliser la version cygwin. Si vous avez cygwin sur votre système, je vous conseille de ne pas installer git du tout, et de préférence de ne pas partager les environnements msysgit ou cygwin à partir du même chemin.

0
répondu locka 2014-11-05 17:09:14

cygwin voit vos fichiers locaux dans le format de windows, tandis que git-bash les voit dans le format unix. Si vous vérifiez les fichiers dans git-bash puis exécutez le statut git sur un shell cygwin, git pense que vous avez modifié chaque ligne dans le repo, si vous exécutez le statut git dans le shell git-bash, alors seuls les fichiers que vous avez touchés sont modifiés.

0
répondu intotecho 2016-08-23 02:14:48

C'est une réponse de 2018...

Git for Windows est basé sur MSYS2 .

MSYS2 a été lancé avec l'idée de redémarrer le projet MSys, en mettant fréquemment à jour avec Cygwin et en gardant juste L'esprit de MSys pour fournir une couche POSIX très dépouillée, essentiellement une version de Cygwin. MSYS2 dispose également d'un gestionnaire de paquets (pacman) et conserve ces paquets up-to-date très bien.

..

le runtime de MSYS2 est un runtime Cygwin démonté, légèrement modifié, tournant sur le noyau Windows, alors que le runtime de Linux est le noyau Linux, tournant en OS séparé.

https://github.com/git-for-windows/git/wiki

Cygwin fournit une bibliothèque runtime appelée cygwin1.dll qui fournit la couche de compatibilité POSIX si nécessaire. La variante MSYS2 de cette bibliothèque est appelée msys-2.0.dll et comprend les changements suivants pour soutenir l'utilisation de programmes Windows natifs: en quoi MSYS2 diffère-t-il de Cygwin

Dependency Walker Git Bash

0
répondu weberjn 2018-01-26 12:15:25