Разница между msysgit и Cygwin + git? - PullRequest
30 голосов
/ 29 июня 2010

В чем разница между msysgit и Cygwin + git?

Сейчас я использую msysgit, но мне не нравится Git Bash (вы не можете изменить размер или скопировать / вставить), поэтому я 'Я думаю подумать о переходе на Cygwin, потому что тогда я мог бы использовать mintty .

Ответы [ 9 ]

44 голосов
/ 30 июня 2010

Редактировать 2018:

Со времени моего ответа на 2010-2012-2014 гг. В 2015 году Git для Windows использует msys2, так как я подробно здесь .

Подробнее в " Как msys, msys2 и msysgit связаны друг с другом? ".


Редактировать (еще 2 года спустя: октябрь 2014 г.)

Йоханнес Шинделин только что объяснил (октябрь 2014 г.), что msysgit прекращен :

Теперь у нас есть облегченный Git для Windows SDK - по сути, это стандартная система MinGW / MSys, управляемая через менеджер пакетов mingw-get.

Мы решили просто отказаться от имени "msysGit" (а также GitHub org с таким же именем ) и:

  • работа на Git для Windows соответствующей GitHub org) ,
  • с именем " Git для Windows " для установщика, нацеленного на "конечных пользователей", и
  • с использованием имени " Git для Windows SDK " для среды разработки, ориентированной на разработчиков Git для Windows).

Обновление 2 года спустя: июль 2012

Msysgit здесь, чтобы остаться, и если вам не нужно к добавить несколько сотен МБ для cygwin , вам действительно не нужен Cygwin, чтобы просто использовать Git на Windows.
А если вы хотите получить доступ к GitHub, вы получаете один пакет («Git для Windows» + ключи ssh, зарегистрированные для вас в вашей учетной записи GitHub + хороший графический интерфейс) с GitHub для windows .

Оба Git и msysgit находятся на GitHub.
Страница msysgit.github.com четко иллюстрирует разницу между:

Git for Windows logo <----------> MsysGit logo
« Git для Windows »: чистые пользователи Git | « MsysGit »: для тестировщиков, разработчиков, сопровождающих пользовательских установщиков

См. Также FAQ по MSYSGIT :

Что это за штука "MSys" в "MSysGit"?

MSys - это среда для Windows, предлагающая оболочку Unix-типа и интерпретатор Perl. Поскольку многие части Git до сих пор не встроены в C, а вместо этого - сценарии оболочки и Perl, Git для Windows нужна такая среда.

Поэтому мы поставляем Git для Windows с очень минимальной версией MSys.

MSys также требуется для сборки Git, так как мы повторно используем ту же настройку Unix-типа, что и Git для исходных кодов. Мы поставляем более полную среду MSys, включая GCC, в качестве среды сборки (которая, следовательно, называется «msysGit»).

Мы компилируем Git как чистую MinGW программу, то есть программу без каких-либо зависимостей от ссылок ни на что, кроме стандартных библиотек Windows.
Поэтому, если вам не нужно использовать какие-либо части Git, которые по-прежнему реализованы только в виде сценариев оболочки или Perl, вы можете без труда запускать обычный git.exe.


Оригинальный ответ: июнь 2010

a / Вы можете изменять размер и копировать-вставлять в Git bash, как и в любой другой оболочке Windows.

b / Вы, вероятно, используете "Git для Windows", а не msysgit. Из вики :

  • msysGit - среда разработки для компиляции Git для Windows . Это полностью, в том смысле, что вам просто нужно установить msysGit, а затем вы можете собрать Git. Без установки какого-либо стороннего программного обеспечения.
  • Git для Windows - это установщик, который устанавливает Git - и только Git .

Легко увидеть разницу:

  • установщики для Git имеют префикс Git-,
  • установщики msysGit имеют префикс msysGit-.

Еще одним свидетельством является то, что установщики msysGit доступны в двух вариантах: fullinstall и netinstall.
Кроме того, msysGit по умолчанию не устанавливается в C:\Program Files.
Но msysGit поставляется с gcc, компилятором GNU C.

с / От MSysGitHerald10 :

Помните:

  • MinGW действительно очень тонкий слой времени компиляции по сравнению с Microsoft Runtime;Таким образом, программы MinGW - это настоящие программы для Windows, без понятия путей в стиле Unix или таких тонкостей POSIX, как вызов fork().
  • MSys, напротив, является упрощенной версией Cygwin (старая версияв этом), единственная цель которого состоит в том, чтобы предоставить достаточно слоя POSIX для запуска bash.

И это не всегда приветствуется :

При работе в Windows мне не нравится, что msysGit, как следует из названия, зависитна MSYS и на инструментах из мира Unix.Я считаю, что все программы в дистрибутиве Git должны стать двоичными файлами, скомпилированными для конкретной платформы, и не полагаться на интерпретаторы оболочки или сторонние языки, такие как Tcl / Tk.

Несмотря на то, что это намного лучше, чемпервые Git на Cygwin установки с 2007 года.

4 голосов
/ 20 июля 2017

Это ответ с 2017 года ...

Принципиальное техническое отличие состоит в том, что все программы cygwin зависят от cygwin1.dll; но в то же время это наименее интересный вариант для конечного пользователя, поскольку он должен быть почти полностью прозрачным. Основные различия, которые я обнаружил, не столько между версиями git, сколько между средой cygwin и средой msys / mingw. Вот некоторые различия, которые я нашел:

  • обработка ACL. То, как новые (после 2015 года) cygwins обрабатывают списки контроля доступа NTFS, может быть очень опасно. По умолчанию диски Windows монтируются с активной опцией acl. Cygwin пытается имитировать разрешения POSIX, перетасовывая и злоупотребляя записями ACL, что делает невозможным доступ через собственные программы Windows. Кроме того, возможно, что доступ к файлам резко замедляется в многопользовательских многодоменных (то есть коммерческих или институциональных) установках из-за доступа к сети, поскольку для определения пользователя и разрешений потенциально требуются запросы к серверу домена для каждого файла. msys монтируется с опцией -noacl по умолчанию. Делая это в Cygwin, вы, похоже, избегаете этих проблем.
  • Скорость. В настоящее время я работаю в хранилище с файлами 100k (не спрашивайте). git status со всем соответствующим содержимым диска в кеше занимает 4,7 секунды для Cygwin и 0,4 секунды для MSYS GIT. Я не уверен, какая часть уровня совместимости cygwin тормозит - блокировки, вилки, файловая система, IPC ... все они являются кандидатами.
  • Потенциально имена файлов. Я не исследовал проблему, но подозреваю, что git (и другие инструменты), предназначенные для окон (например, msys git), могут лучше обрабатывать имена файлов Windows. Под Cygwin нужно старательно конвертировать имена файлов через cygpath между двумя мирами. Это будет играть важную роль, когда сценарии и т. Д. Взаимодействуют с программами Windows.

Редактировать: возможно, не очевидно, что с некоторыми незначительными изменениями можно обмениваться общими настройками для git (но не только для git) между cygwin и Msys2. Если я правильно помню, хорошим способом является установка переменной среды HOME в системных настройках Windows; тогда и Msys2, и cygwin будут использовать этот каталог и, следовательно, одни и те же точечные файлы, среди них ~/.gitignore. Это делает переключение между терминалами Cygwin и Msys2 довольно безболезненно (подумайте ~/.inputrc, ~/.bashrc, ~/.profile ...).

4 голосов
/ 29 июня 2010

cygwin + git был единственным способом заставить git работать в тот день. Теперь, когда msysgit есть, я не вижу смысла использовать cygwin.

Я согласен, что git bash не так уж и хорош ... так что я делаю

  1. Поместите git в путь и используйте командную строку окна, когда мне нужна командная строка
  2. Установлен git с черепахой, когда я хочу иметь графический интерфейс для моего git
2 голосов
/ 23 января 2013

MSysGit поставляется с очень старой версией SSH. Пропускная способность в моей системе была около 10 мбит. Если вас не интересует скорость клонирования, это не влияет на вас. Исправление состоит в том, чтобы либо запустить Cygwin Git, либо заменить SSH, установленный в MSysGit .

1 голос
/ 17 мая 2011

Текущая версия git на cygwin - 1.7.5.1, что очень и очень актуально (май 2011 г.).

Я не вижу причин (пока) использовать что-либо еще, хотя я рассматриваюпопробовать msysgit (он же «Git for Windows») (в настоящее время версия 1.7.4).

1 голос
/ 29 июня 2010

Реализация bash в msysgit старая. Тем не менее, я использую vim при редактировании, и это прекрасно работает. Что касается вырезания и вставки, я часто прибегаю к SHIFT + ALT + [пробел], E, M или любым другим клавишам, чтобы пометить текст, который я хочу. Не идеально, но делает работу достаточно хорошо, так как я не слишком много копирую и вставляю.

Я начал запускать Ubuntu на той же машине через VirtualBox. Благодаря бесшовному режиму и общим папкам, я могу воспользоваться новейшей версией bash и быстрым Git.

Я не использую никаких инструментов графического интерфейса для Git, кроме gitk (для gitk --all), чтобы визуализировать историю, если мне нужно.

Я пробовал Cygwin и мне не понравилось. Решение с виртуальной коробкой намного лучше, если вам не хватает msysgit.

0 голосов
/ 26 января 2018

Это ответ с 2018 года ...

Git для Windows основан на MSYS2 .

MSYS2 запущенс идеей перезапустить проект MSys, часто обновляя его с помощью Cygwin, и просто сохраняя дух MSys, чтобы обеспечить очень урезанный слой POSIX, по сути, минимальную версию Cygwin.MSYS2 также использует менеджер пакетов (pacman) и поддерживает эти пакеты в актуальном состоянии.

..

Среда выполнения MSYS2 - это урезанная, слегка измененная среда выполнения Cygwin, работающая поверх ядра Windows, в то время как среда выполнения Linux - это ядро ​​Linux, работающее под управлением Windows.как отдельная ОС в целом.

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

Cygwin предоставляет библиотеку времени выполнения, называемую cygwin1.dll, которая при необходимости обеспечивает уровень совместимости POSIX.MSYS2-вариант этой библиотеки называется msys-2.0.dll и включает в себя следующие изменения для поддержки использования собственных программ Windows: Чем MSYS2 отличается от Cygwin

Dependency Walker Git Bash

0 голосов
/ 23 августа 2016

cygwin видит ваши локальные файлы в формате windows, тогда как git-bash видит их в формате unix.Если вы извлекаете файлы в git-bash, а затем запускаете git status в оболочке cygwin, git считает, что вы изменили каждую строку в репо, если вы запускаете git status в оболочке git-bash, то изменяются только те файлы, к которым вы прикоснулись

0 голосов
/ 05 ноября 2014

Msysgit получил несколько исправлений для решения специфических проблем Windows, таких как нечувствительность к регистру файловой системы, блокировка файлов и т. Д. Возможно, плохая идея использовать версию cygwin.Если у вас есть cygwin в вашей системе, я бы посоветовал вообще не устанавливать git и, желательно, не делиться средами msysgit или cygwin из того же PATH.

...