Каковы ограничения Git на Windows? - PullRequest
23 голосов
/ 23 июля 2010

Везде, где я читаю о Mercurial и Git, они обычно приводят одну или две строки, что означает, что Git имеет ограниченные возможности в Windows (из-за того, что некоторые скрипты Shell не могут быть перенесены и т. Д.), Но я никогда не сталкивался с какой-либо страницей, которая явноупоминает их.И большинство страниц немного староваты.

Каковы ограничения Git для Windows с точки зрения функциональности?И есть ли у запуска Git на MinGW и MSYS на Windows ограничения производительности?

Ответы [ 3 ]

27 голосов
/ 23 июля 2010

РЕДАКТИРОВАТЬ: Итак, это 2016, шесть лет спустя, когда я написал оригинальный ответ ниже. Я интенсивно использую git и mercurial уже несколько лет, и я тоже несколько лет занимаюсь разработкой под mac. Я стал очень хорошо знаком с использованием git в командной строке, но для повседневной работы я использую SourceTree от Atlassian. Это не реклама, просто примечание, чтобы обновить этот ответ. SourceTree - это двойная абстракция: тот же интерфейс для git / hg и тот же интерфейс для Windows / Mac. Когда вам приходится часто менять платформы и проекты, это становится очень привлекательным.

Написав руководство по настройке клиента и сервера для Git в Windows , я довольно хорошо представляю, чего можно ожидать. Кроме того, мой основной репозиторий (папка .git) имеет размер ~ 260 МБ, так что это действительно не тривиальный тест производительности для повседневной работы Git в Windows.

Мое общее впечатление таково, что Git на windows работает очень быстро в подавляющем большинстве ситуаций, с которыми можно столкнуться, за одним действительно огромным исключением: git gui blame -C -C. По умолчанию git не будет обвинять файлы за пределами переименования файлов, и для этого должны быть переданы дополнительные аргументы -C -C, но тогда все может действительно замедлиться. На современном оборудовании для создания полной аннотации одного из наших больших исходных файлов размером ~ 20 клок требуется 17 минут. Эта задержка действительно может нарушить вашу концентрацию.

Относительно cygwin :

Я пробовал это только один раз, и не для чего-то существенного. Я действительно хотел родное решение. По общему мнению, git на cygwin работает достаточно хорошо.

Относительно TortoiseGit

Фрэнк Ли проделал огромную работу, принеся теперь знакомый пользовательский интерфейс в мир Git. TortoiseGit запустился очень быстро, потому что большая часть пользовательского интерфейса была доступна от TortoiseSVN (и других инструментов, таких как TortoiseMerge), и я много работал с этим интерфейсом. В общем, это позволяет очень быстро освоиться с Git, если вы знакомы с TortoiseSVN. Разработчик приложил огромные усилия, чтобы использовать термины из мира TortoiseSVN и сопоставить их с командами git. Например, revert действительно выполняет git checkout <file> под капотом.

В целом, работа с Git была довольно простой, и я должен признать, что изучил Git, используя интерфейс TortoiseGit: и нужно признать, что это было помехой для моего образования. TortoiseSVN-подобный просмотрщик журналов на самом деле не работает для распределенного рабочего процесса (он работает достаточно хорошо, если вы используете Git, как если бы это был SVN), и вы узнаете об этом позже, потому что проблемы только приходят, когда есть много-много веток разработки (gitk инструмент намного лучше справляется с этим дисплеем). И еще одна проблема заключается в том, что даже после использования TortoiseGit в течение многих месяцев я все еще не знал даже самых простых команд git. В TortoiseGit нет ничего плохого, и ошибки исправляются очень быстро, когда они появляются; кажется, что основной проблемой является проблема дизайна (возможно, более одного) в пользовательском интерфейсе, которую разработчики gitk и git gui разработали из-за более длинной истории разработки или более глубоких знаний использования идиоматических мерзавцев, или что-то в этом роде.

Относительно использования командной строки:

Команда разработчиков MSYS git - это те, кого действительно следует поблагодарить за то, что они потрудились выполнить всю работу, которую они сделали, и без их поддержки, вероятно, ветвь mingw git никогда бы не была объединена с магистрали.

Теперь я начал использовать msysgit, как и в оболочке Git Bash , в качестве моего единственного интерфейса git в течение нескольких недель. У меня сложилось впечатление, что, хотя первоначальное обучение кажется более сложным, как только эти знания были получены, все остальное становится легче. Эта ссылка , на мой взгляд, одна из действительно лучших ссылок для изучения git в командной строке.

Выступая от имени пользователя Git в Windows и опираясь на расширенный опыт использования интерфейса TortoiseGit для git, это краткое изложение моего рабочего процесса, которое охватывает> 95% того, что необходимо (все в Git Bash, не командная оболочка Windows (cmd)):

  • Проверка на наличие модификаций

    git status

  • Переключатель ответвления

    git checkout some-feature-branch

  • Fetch

    Git fetch

  • Показать журнал (& отсоединяет процесс gitk от оболочки, чтобы оболочка не дожидалась закрытия gitk, прежде чем допустить большее количество команд)

    Гитк &

  • Фиксация : либо

    • Простой коммит:

      git commit -a -m "Это моё сообщение о коммите"

    • Сложные, множественные последовательные коммиты:

      git gui

  • Нажмите для перехода: мастер

    git push origin master

  • Слияние (например, после извлечения)

    git merge origin / master

Мне еще не приходилось решать конфликты, но я это выясню, когда придет время (комментарии приветствуются:).

РЕДАКТИРОВАТЬ: Для разрешения конфликтов, kdiff3 это путь. Установка проста, и все от простых различий до трехстороннего слияния работает надежно и быстро.

Выводы

  • Git в Windows является полнофункциональным и работает так, как объявлено, и не ограничен в Windows .

  • Производительность, как правило, очень хорошая, но серьезные обвинения могут быть медленными.

  • Интерфейс TortoiseGit является соблазнительным, но в конечном итоге неудовлетворительным: вы должны попытаться изучить git в командной строке. Я сделал оба, и этот маршрут более эффективен.

8 голосов
/ 23 июля 2010
  • сомнительная поддержка подстановочных знаков:
    (проблематично для .gitignore файлов)
    отправить в базовый ОС-специфический метод fnname(): см. этот вопрос и этот (или этот )

  • git-svn может быть не очень быстрым.
    Источник: этот ТАК ответ . Хотя он добился некоторого прогресса.

  • PATH необходимо отрегулировать, чтобы предотвратить любой конфликт
    Некоторые команды одинаковы для Windows и bash. (find, cp, rm, ...).
    См. ТАК ответ .
    Как отмечает cjrh , Git для Windows по умолчанию не добавляет свой каталог bin в PATH.

  • может иметь место некоторое преобразование EOL (Unix против Windows EOL)
    См. Окончательные рекомендации для git autocrlf настроек .
    Новые и улучшенные атрибуты core.eol и eol из Git1.7.2 еще не добавлены в msysgit.

3 голосов
/ 23 июля 2010

(Возможно, это скорее комментарий, чем ответ, но мой представитель еще не совсем там.)

Недавно я подумал о том же, и слишком много не мог выкопать. Вот одно интересное обсуждение (обнаружено путем цитирования в записи Git в википедии ).

Насколько я могу судить, основными проблемами являются производительность (особенно в Cygwin и / или с большими репозиториями) и проблемы файловой системы (нечувствительность к регистру имени файла, ограниченная VFS).

Чисто субъективный / анекдотичный:

Мне кажется, что Git гораздо приятнее работать под Ubuntu 10.04, чем на Cygwin под Win7 на той же машине - настолько, что я перенес почти всю свою работу по внештатной веб-разработке на Ubuntu Преимущество этого (между прочим). Я изучал Git на своей машине с OSX на работе, поэтому пытаться работать с ним в Windows впоследствии было почти болезненно. msysgit определенно лучше, чем Cygwin, но все же страдает от ограничений файловой системы Windows.

РЕДАКТИРОВАТЬ : Очевидно, msysgit дросселирует имена файлов, которые были введены в git через файловую систему с поддержкой UTF8, например Linux , которая отстой.

Я также наткнулся на GitSharp, родная реализация WIP для Windows (обнаружена через этот комментарий в блоге ).

...