Мне очень повезло с этим:
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)
РЕДАКТИРОВАТЬ: Итак, сейчас 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. Эта задержка действительно может нарушить вашу концентрацию.
Я пробовал это только один раз, и не из-за чего-то значительного. Очень хотелось родное решение. По общему мнению, git на cygwin работает достаточно хорошо.
, Фрэнк Ли проделал огромную работу по внедрению уже знакомого пользовательского интерфейса в мир 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 из командной строки.Я сделал и то, и другое, и этот маршрут более эффективен.
(Это, вероятно, скорее комментарий, чем ответ, но мой представитель еще не совсем там.)
Я недавно удивился тому же, и я тоже не мог выкопать слишком много. Вот одна интересная дискуссия (обнаружена с помощью ссылки на статью Викапедии Гита ).
Насколько я могу судить, основными проблемами являются производительность (особенно в Cygwin и / или с большими репозиториями) и проблемы файловой системы (нечувствительность к регистру имен файлов, ограниченная VFS).
Чисто субъективно / анекдотично:
Мне кажется, что Git гораздо приятнее работать под Ubuntu 10.04, чем на Cygwin под Win7 на той же машине - настолько, что Я перекладываю почти всю свою внештатную работу по веб-разработке на Ubuntu, чтобы воспользоваться этим (среди прочего). Я изучал Git на своей машине с OSX на работе, поэтому пытаться работать с ним в Windows впоследствии было почти болезненно. msysgit определенно является улучшением по сравнению с Cygwin, но все же страдает от ограничений файловой системы Windows.
РЕДАКТИРОВАТЬ : По-видимому, msysgit дросселирует имена файлов, которые были введены в git через файловую систему с поддержкой UTF8, такую как Linux , которая отстой.
Я также наткнулся на GitSharp, родную реализацию WIP для Windows (обнаружен в в этом блоге ).
сомнительная поддержка подстановочных знаков:
(проблематично для файлов .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.