¿Diferencia entre msysgit y Cygwin + git?
¿Cuál es la diferencia entre msysgit y Cygwin + git?
Ahora estoy usando msysgit, pero no me gusta Git Bash (no se puede cambiar el tamaño ni copiar/pegar), así que estoy pensando en cambiar a Cygwin, porque entonces podría usar mintty .
Editar 2018:
Desde mi respuesta 2010-2012-2014, en 2015 Git para Windows usa msys2, como detallo aquí .
Ver más en "¿ Cómo se relacionan entre sí msys, msys2 y msysgit? ".
Editar (2 años más después: octubre de 2014)
Johannes Schindelin acaba de explicar (octubre de 2014) que msysgit está eliminado gradualmente :
Ahora tenemos un SDK de Git para Windows liviano , que es esencialmente un sistema MinGW/MSys estándar administrado a través del administrador de paquetes mingw-get.
Decidimos simplemente eliminar gradualmente el nombre "msysGit" (así como la organización GitHub del mismo nombre ) y:
- trabajar en Git para Windows (con la organización GitHub correspondiente) ,
- usando el nombre " Git para Windows " para el instalador dirigido a "usuarios finales" y
- utilizando el nombre " Git para Windows SDK " para el entorno de desarrollo dirigido a desarrolladores de Git para Windows).
Actualización 2 años después: julio de 2012
Msysgit llegó para quedarse y, a menos que necesite agregar unos cientos de MB para cygwin , realmente no necesita Cygwin para usar Git en Windows.
Y si desea acceder a GitHub, obtiene un paquete ("Git para Windows" + claves ssh registradas para usted en su cuenta de GitHub + una buena GUI) con GitHub para Windows .
Tanto Git como msysgit están en GitHub.
La página msysgit.github.com ilustra claramente la diferencia entre:
<---------->
" Git para Windows ": Usuarios puros de Git | " MsysGit ": para probadores, desarrolladores y mantenedores de instaladores personalizados
Consulte también las preguntas frecuentes de msysgit :
¿Qué es eso de "MSys" en "MSysGit"?
MSys es un entorno para Windows que ofrece un shell tipo Unix y un intérprete de Perl. Debido a que muchas partes de Git todavía no están programadas en C, sino en scripts de shell y Perl, Git para Windows necesita dicho entorno.
Por lo tanto, enviamos Git para Windows con una versión mínima de MSys.
También se requiere MSys para construir Git, ya que reutilizamos la misma configuración de tipo Unix que utiliza Git. Entregamos un entorno MSys más completo, incluido GCC, como entorno de compilación (que por lo tanto recibe el apodo de "msysGit").
Sin embargo , compilamos Git como un programa MinGW puro , es decir, un programa sin dependencias de enlaces de nada más que las bibliotecas estándar de Windows.
Entonces, a menos que necesite usar alguna parte de Git que todavía esté implementada solo como scripts de shell o Perl, puede ejecutar git.exe simple.
Respuesta original: junio de 2010
a/ Puedes cambiar el tamaño y copiar y pegar en Git bash, como en cualquier otro Shell de Windows.
b/ Probablemente esté utilizando "Git para Windows" y no msysgit. De la wiki :
- msysGit es el entorno de desarrollo para compilar Git para Windows . Es completo, en el sentido de que sólo necesitas instalar msysGit y luego puedes compilar Git. Sin instalar ningún software de terceros.
- Git para Windows es un instalador que instala Git, y sólo Git .
Es fácil ver la diferencia:
- los instaladores de Git tienen el prefijo Git-,
- los instaladores de msysGit tienen el prefijo msysGit-.
Otro indicador es que los instaladores de msysGit vienen en dos versiones: fullinstall y netinstall.
Además, msysGit no se instalaC:\Program Files
de forma predeterminada.
Pero msysGit viene congcc
el compilador GNU C.
c/ De MSysGitHerald10 :
Recordar:
- MinGW es en realidad una capa de tiempo de compilación muy delgada sobre Microsoft Runtime; Los programas MinGW son, por lo tanto, programas reales de Windows, sin concepto de rutas de estilo Unix ni sutilezas POSIX como una
fork()
llamada.- MSys, por el contrario, es una versión simplificada de Cygwin (una versión antigua), cuyo único propósito es proporcionar suficiente capa POSIX para ejecutar un bash.
Y eso no siempre es bienvenido :
Cuando trabajo en Windows, no me gusta que msysGit, como su nombre indica, dependa de MSYS y de herramientas del mundo Unix. Creo que todos los programas en la distribución Git deberían convertirse en binarios compilados para una plataforma específica y no depender de intérpretes de shell o lenguajes de terceros como Tcl/Tk.
Aun así, es mucho mejor que las primeras instalaciones de Git en Cygwin de 2007.
cygwin + git era la única forma de hacer que git funcionara en el pasado. Ahora que existe msysgit, no veo ninguna razón para usar cygwin.
Estoy de acuerdo en que git bash no es tan bueno... así que lo que hago es
- Coloque git en la ruta y use el símbolo del sistema de la ventana cuando necesite la línea de comando
- Tengo instalado Tortoise Git para cuando quiera tener una GUI para mi Git.
Esta es una respuesta de 2017...
La diferencia técnica fundamental es que todos los programas cygwin dependen de cygwin1.dll; pero al mismo tiempo es el menos interesante para el usuario final ya que debería ser casi completamente transparente. Las principales diferencias que encontré no están tanto entre las versiones de git como entre el entorno cygwin y el entorno msys/mingw. Estas son algunas diferencias que encontré:
- Manejo de ACL. La forma en que los cygwins más nuevos (posteriores a 2015) manejan las listas de control de acceso NTFS puede ser molesta hasta el punto de ser peligrosa. De forma predeterminada, las unidades de Windows se montan con la opción acl activa. Cygwin intenta imitar los permisos POSIX reorganizando y abusando de las entradas ACL de una manera que puede imposibilitar el acceso a través de programas nativos de Windows. Además, es posible que el acceso a archivos se ralentice drásticamente en instalaciones multiusuario y multidominio (es decir, comerciales o institucionales) debido al acceso a la red, porque determinar el usuario y los permisos requiere potencialmente consultas al servidor de dominio para cada archivo.
msys se monta con la-noacl
opción de forma predeterminada. Hacer eso también en cygwin parece evitar esos problemas. - Velocidad. Actualmente estoy trabajando en un repositorio con 100k archivos (no preguntes). Un archivo
git status
con todo el contenido relevante del disco en el caché tarda 4,7 segundos con cygwin y 0,4 segundos con msys git. No estoy seguro de qué parte de la capa de compatibilidad de cygwin está ralentizando las cosas: bloqueos, bifurcaciones, sistema de archivos, IPC... todos son candidatos. - Potencialmente nombres de archivos. No he investigado el problema, pero sospecho que un git (y las otras herramientas) destinado a Windows (como msys git) puede manejar mejor los nombres de archivos de Windows. Bajo cygwin, uno debe convertir diligentemente los nombres de archivos
cygpath
entre los dos mundos. Esto jugará un papel importante cuando los scripts, etc. interactúen con los programas de Windows.
Editar: quizás no sea obvio que con algunos ajustes menores sea posible compartir configuraciones comunes para git (pero no solo para git) entre cygwin y Msys2. Si no recuerdo mal, una buena forma es configurar la variable de entorno HOME en la configuración del sistema de Windows; entonces tanto Msys2 como cygwin usarán ese directorio y, por lo tanto, los mismos archivos de puntos, entre ellos ~/.gitignore
. Eso hace que cambiar entre terminales cygwin y Msys2 sea bastante sencillo (piense ~/.inputrc
, ~/.bashrc
, ~/.profile
...).
MSysGit viene con una versión muy antigua de SSH. El rendimiento de mi sistema fue de alrededor de 10 mbit. Si no te importan las velocidades de clonación, esto no te afecta. La solución es ejecutar Cygwin Git o reemplazar el SSH instalado en MSysGit .