Differenza tra msysgit e Cygwin + git?

Qual è la differenza tra msysgit e Cygwin + git?

Ora sto usando msysgit, ma non mi piace Git Bash (non puoi ridimensionare o copiare / incollare) quindi sto pensando di passare a Cygwin, perché poi potrei usare mintty .

Modifica 2018:

Dalla mia risposta 2010-2012-2014, nel 2015 Git per Windows utilizza msys2, come dettaglio qui .

Vedi di più in ” Come sono msys, msys2 e msysgit correlati tra loro? “.


Modifica (altri 2 anni dopo: ottobre 2014)

Johannes Schindelin ha appena spiegato (ottobre 2014) che msysgit è stato eliminato gradualmente :

Ora abbiamo un Git leggero per Windows SDK , che è essenzialmente un sistema MinGW / MSys standard gestito tramite il gestore pacchetti mingw-get.

Abbiamo deciso di eliminare gradualmente il nome “msysGit” (così come l’ org GitHub con lo stesso nome ) e:

  • lavorare su Git per Windows (con la corrispondente organizzazione GitHub) ,
  • utilizzando il nome ” Git per Windows ” per l’installer rivolto agli “utenti finali” e
  • utilizzando il nome ” Git per Windows SDK ” per l’ambiente di sviluppo che si rivolge agli sviluppatori Git per Windows).

Aggiornamento 2 anni dopo: luglio 2012

Msysgit è qui per restare e, a meno che non sia necessario aggiungere qualche centinaio di MB per cygwin , non è necessario che Cygwin usi semplicemente Git su Windows.
E se vuoi accedere a GitHub, ricevi un pacchetto (“Git per Windows” + chiavi ssh registrato per te sul tuo account GitHub + una bella GUI) con GitHub per Windows .

Sia Git che msysgit sono su GitHub.
La pagina msysgit.github.com illustra chiaramente la differenza tra:

Git per il logo di Windows <----------> Logo MsysGit
Git for Windows “: utenti puri di Git | ” MsysGit “: per tester, sviluppatori, manutentori di installazione personalizzati

Vedi anche le domande frequenti su msysgit :

Che cosa è questa cosa “MSys” in “MSysGit”?

MSys è un ambiente per Windows che offre una shell di tipo Unix e un interprete Perl. Poiché molte parti di Git non sono ancora builtin programmate in C, ma invece script di shell e Perl, Git per Windows ha bisogno di un tale ambiente.

Pertanto spediamo Git per Windows con una versione molto minimale di MSys.

MSys è anche tenuto a build Git, poiché riutilizziamo lo stesso setup di tipo Unix a monte di Git. Spediamo un ambiente MSys più completo, incluso GCC, come ambiente di costruzione (che è quindi soprannominato ” msysGit ”).

Compiliamo Git come un puro programma MinGW , però, cioè un programma senza dipendenze di collegamento su qualsiasi cosa tranne le librerie di Windows standard.
Quindi, a meno che non sia necessario utilizzare parti di Git che sono ancora implementate solo come shell o script Perl, è ansible farla franca con git.exe.


Risposta originale: giugno 2010

a / È ansible ridimensionare e copiare e incollare in Git bash, come in qualsiasi altra shell di Windows.

b / Probabilmente stai usando “Git per Windows”, e non msysgit. Dalla wiki :

  • msysGit è l’ambiente di sviluppo per compilare Git per Windows . È completo, nel senso che devi solo installare msysGit e quindi puoi creare Git. Senza installare alcun software di terze parti.
  • Git per Windows è un programma di installazione che installa Git – e solo Git .

È facile vedere la differenza:

  • gli installer di Git hanno il prefisso Git-,
  • i programmi di installazione di msysGit hanno il prefisso msysGit-.

Un’altra rivelazione è che i programmi di installazione di msysGit sono disponibili in due versioni: fullinstall e netinstall.
Inoltre, msysGit non si installa su C:\Program Files per impostazione predefinita.
Ma msysGit viene fornito con gcc , il compilatore GNU C.

c / Da MSysGitHerald10 :

Ricorda:

  • MinGW è uno strato molto sottile in fase di compilazione su Microsoft Runtime; I programmi MinGW sono quindi veri programmi Windows, senza alcun concetto di percorsi in stile Unix o nicchie POSIX come una chiamata a fork() .
  • MSys, al contrario, è una versione ridotta di Cygwin (una vecchia versione), il cui unico scopo è quello di fornire un livello POSIX sufficiente per eseguire una bash.

E questo non è sempre il benvenuto :

Quando lavoro su Windows, non mi piace che msysGit, come suggerisce il nome, dipenda da MSYS e dagli strumenti del mondo Unix. Credo che tutti i programmi nella distribuzione Git dovrebbero diventare binari compilati per una piattaforma specifica e non fare affidamento su interpreti di shell o linguaggi di terze parti come Tcl / Tk.

Anche se è molto meglio delle prime installazioni di Git on Cygwin del 2007.

cygwin + git era l’unico modo per far tornare a git il lavoro durante il giorno. Ora che msysgit è in giro, non vedo alcun motivo per usare cygwin.

Sono d’accordo che git bash non è buono .. quindi quello che faccio è

  1. Metti git in path e usa il prompt dei comandi della finestra quando ho bisogno della riga di comando
  2. Ho installato git tortoise per quando voglio avere una GUI per il mio git

Questa è una risposta dal 2017 …

La differenza tecnica fondamentale è che tutti i programmi cygwin dipendono da cygwin1.dll; ma questo è allo stesso tempo il meno interessante per l’utente finale poiché dovrebbe essere quasi completamente trasparente. Le principali differenze che ho riscontrato non sono tra le versioni git tanto quanto tra l’ambiente cygwin e l’ambiente msys / mingw. Queste sono alcune differenze che ho trovato:

  • Gestione ACL. Il modo in cui le cygwin più recenti (post-2015) gestiscono le liste di controllo degli accessi NTFS può essere fastidioso fino al punto di essere pericoloso. Per impostazione predefinita, le unità di Windows sono montate con l’opzione acl triggers. Cygwin prova a imitare i permessi POSIX ri-mescolando e abusando delle voci ACL in un modo che può rendere imansible l’accesso attraverso i programmi nativi di Windows. Inoltre, è ansible che l’accesso ai file sia rallentato drasticamente in installazioni multi-dominio multi-utente (ad esempio, commerciali o istituzionali) a causa dell’accesso alla rete, poiché la determinazione di utenti e autorizzazioni richiede potenzialmente query del server di dominio per ciascun file.

    msys monta con l’opzione -noacl per impostazione predefinita. Anche in Cygwin sembra evitarlo.

  • Velocità. Attualmente sto lavorando in un repository con file 100k (non chiedere). Uno git status con tutti i contenuti del disco rilevanti nella cache impiega 4,7 secondi con cygwin e 0,4 secondi con msys git. Non sono sicuro di quale parte del livello di compatibilità cygwin stia rallentando le cose: lock, fork, filesystem, IPC … sono tutti candidati.
  • Potenzialmente nomi di file. Non ho studiato il problema, ma sospetto che un git (e gli altri strumenti) destinati a Windows (come gys di msys) possano gestire meglio i nomi dei file di Windows. Sotto cygwin si devono diligentemente convertire i nomi dei file tramite cygpath tra i due mondi. Ciò svolgerà un ruolo importante quando gli script ecc. Si interfacciano con i programmi Windows.

Modifica: forse non è ovvio che con alcune modifiche minori è ansible condividere impostazioni comuni per git (ma non solo per git) tra cygwin e Msys2. Se ricordo bene, un buon metodo è impostare la variabile d’ambiente HOME nelle impostazioni di sistema di Windows; quindi sia Msys2 che Cygwin useranno quella directory e quindi gli stessi dot-file, tra cui ~/.gitignore . Ciò rende abbastanza semplice il passaggio tra i terminali cygwin e Msys2 (si pensi a ~/.inputrc , ~/.bashrc , ~/.profile …).

MSysGit viene fornito con una versione molto vecchia di SSH. La velocità effettiva del mio sistema era di circa 10 Mbit. Se non ti interessa la velocità dei cloni, questo non ha alcun effetto su di te. La soluzione è eseguire Cygwin Git o sostituire l’SSH installato in MSysGit .

L’implementazione di bash in msysgit è vecchia. Tuttavia, io uso vim durante la modifica e funziona benissimo. Per quanto riguarda il taglio e incollatura, ricorro spesso a MAIUSC + ALT + [spazio], E, M o qualsiasi altra cosa che i tasti devono ottenere per contrassegnare il testo che voglio. Non è l’ideale, ma fa abbastanza bene il lavoro perché non taglio e incollo troppo.

Ora ho avviato Ubuntu sullo stesso computer tramite VirtualBox. Con la modalità seamless e le cartelle condivise, posso trarre vantaggio da un bash aggiornato e da un Git veloce.

Non uso alcun strumento gui per Git tranne gitk (per gitk –all) per visualizzare la cronologia se necessario.

Ho provato Cygwin e non mi è piaciuto. La soluzione della scatola virtuale è molto meglio se msysgit non è abbastanza per te.

L’attuale versione di git su cygwin è 1.7.5.1, che è molto, molto attuale (maggio 2011).

Non vedo alcuna ragione (finora) per usare qualcos’altro, anche se sto considerando di provare msysgit (conosciuto anche come “Git for Windows”) (attualmente versione 1.7.4).

Msysgit ha ricevuto un numero di patch per risolvere problemi specifici di Windows come insensibilità al case system, blocco dei file ecc. Probabilmente è una ctriggers idea usare la versione cygwin. Se hai cygwin sul tuo sistema ti consiglio di non installare affatto git e preferibilmente di non condividere gli ambienti msysgit o cygwin dallo stesso PATH.

cygwin vede i tuoi file locali in formato windows, mentre git-bash li vede in formato unix. Se si estraggono i file in git-bash e si esegue lo stato git su una shell cygwin, git pensa di aver modificato ogni riga nel repository, se si esegue lo stato git nella shell git-bash, solo i file che si sono toccati vengono modificati.

Questa è una risposta del 2018 …

Git per Windows è basato su MSYS2 .

MSYS2 è stato avviato con l’idea di riavviare il progetto MSys, aggiornandolo frequentemente con Cygwin e mantenendo lo spirito di MSys per fornire un layer POSIX molto ridotto, essenzialmente una versione minima di Cygwin. MSYS2 vanta anche un gestore di pacchetti (pacman) e mantiene tali pacchetti aggiornati molto bene.

..

Il runtime di MSYS2 è un runtime Cygwin ridotto, leggermente modificato, in esecuzione sul kernel di Windows, mentre il runtime di Linux è il kernel di Linux, che funziona come un sistema operativo separato.

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

Cygwin fornisce una libreria runtime chiamata cygwin1.dll che fornisce il livello di compatibilità POSIX dove necessario. La variante MSYS2 di questa libreria è denominata msys-2.0.dll e include le seguenti modifiche per supportare l’utilizzo di programmi Windows nativi: In che modo MSYS2 è diverso da Cygwin

Dipendente Walker Git Bash