Разница между msysgit и Cygwin + git?

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

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

Ответ 1

Редактировать (еще 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 останется здесь, и если вам не нужно добавить несколько сотен MB для 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": для тестировщиков, разработчиков, изготовителей настраиваемых установщиков

См. также часто задаваемые вопросы в MSNysgit:

Что это за "MSys" в "MSysGit"?

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

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

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

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


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

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

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

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

Легко видеть различие:

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

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

c/From MSysGitHerald10:

Помните:

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

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

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

Несмотря на то, что он намного лучше первого Git на сайтах Cygwin с 2007 года.

Ответ 2

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

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

  • Поместите git в командной строке и используйте окно командной строки, когда мне нужна командная строка
  • У меня есть черепаха git, когда я хочу иметь графический интерфейс для моего git

Ответ 3

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

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

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

Ответ 4

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

Ответ 5

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

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

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

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

Ответ 6

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

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

Ответ 7

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

Ответ 8

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