Каковы ограничения Мерзавца в Windows?

Мне очень повезло с этим:

import re
def camelcase_to_underscore(s):
    return re.sub(r'(^|[a-z])([A-Z])',
                  lambda m: '_'.join([i.lower() for i in m.groups() if i]),
                  s)

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

import re

CC2US_RE = re.compile(r'(^|[a-z])([A-Z])')

def _replace(match):
    return '_'.join([i.lower() for i in match.groups() if i])

def camelcase_to_underscores(s):
    return CC2US_RE.sub(_replace, s)
23
задан Jungle Hunter 22 July 2010 в 21:14
поделиться

3 ответа

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

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

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

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

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

Что касается TortoiseGit

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

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

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

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

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

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

  • Проверить наличие изменений

    git status

  • Switch branch

    git checkout some-feature-branch

  • Fetch

    git fetch

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

    gitk &

  • Commit : либо

    • Простая фиксация:

      git commit -a -m «Это мое сообщение фиксации»

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

      git gui

  • Отправить в ветку: master

    git push origin master

  • Merge (например, после Fetch)

    git merge origin / master

У меня не было конфликтов - разрешения пока нет, но я разберусь с этим, когда придет время (комментарии Добро пожаловать :).

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

Выводы

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

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

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

27
ответ дан 29 November 2019 в 02:11
поделиться

(Это, вероятно, скорее комментарий, чем ответ, но мой представитель еще не совсем там.)

Я недавно удивился тому же, и я тоже не мог выкопать слишком много. Вот одна интересная дискуссия (обнаружена с помощью ссылки на статью Викапедии Гита ).

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

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

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

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

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

3
ответ дан peterjmag 29 November 2019 в 02:11
поделиться
  • сомнительная поддержка подстановочных знаков:
    (проблематично для файлов .gitignore )
    отправьте в соответствующий ОС метод fnname () : см. этот вопрос и тот (или тот )

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

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

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

8
ответ дан 29 November 2019 в 02:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: