Ты ещё скажи, что я должен в обязательном порядке писать комментарии в исходниках на английском (кстати, каком? британском или североамериканском?). Иначе «друзья» из-за океана меня не поймут. :))
Кстати, у многих чисто британских компаний все равно стандартом является американский спеллинг, так как основной рынок американоговорящий. Для консистентности и внутреннюю документацию так ведут.
Mercurial почему-то все сообщения выдаёт на русском:
% hg help
Распределенная система контроля версий Mercurial
список команд:
add добавить указанный файл при следующей фиксации
addremove добавить все новые, удалить все отсутствующие файлы
annotate показать данные ревизии построчно для каждого файла
archive создать неверсионируемую архивную копию ревизии из хранилища
backout отменить эффект более раннего набора изменений
bisect поиск ревизии методом деления пополам
bookmarks отслеживать ветку разработки с помощью подвижных меток
branch задать или показать имя текущей ветки
branches перечислить именованные ветки в хранилище
bundle создать файл с группой наборов изменений
cat напечатать текущую или заданную ревизию файлов
clone создать копию существующего хранилища
commit зафиксировать указанные файлы или все изменения в хранилище
copy пометить файл как скопированный при следующей фиксации
diff показать изменения в хранилище (или выбранных файлах)
export вывести заголовок и различия для одной или нескольких ревизий
forget забыть указанные файлы при следующей фиксации
graft копировать изменения с другой ветки в текущую
grep искать текст в указанных файлах и ревизиях
heads показать головы текущего хранилища или головы веток
help показать справку по выбранной теме или обзор справочной
информации
identify описать рабочую копию или указанную ревизию
import импортировать упорядоченный набор патчей
incoming показать новые наборы изменений в исходном хранилище
init создать новое хранилище в указанном каталоге
locate найти файлы подходящие под заданный шаблон
log показать историю ревизий всего хранилища или файлов
manifest показать текущую или заданную ревизию манифеста проекта
merge слить рабочий каталог с другой ревизией
outgoing показать наборы изменений, отсутствующие в другом хранилище
parents показать родителя рабочего каталога или ревизии
paths показать псевдонимы отдалённых хранилищ
phase задать или показать текущую фазу
pull затянуть изменения из указанного источника
push передать изменения в отдалённое хранилище
recover откатить прерванную транзакцию
remove удалить указанные файлы при следующей фиксации
rename переименовать файлы; эквивалентно copy + remove
resolve повторить слияния или задать/посмотреть статус слияния файлов
revert восстановить файлы до их состояния в хранилище
rollback откатить последнюю транзакцию (опасно)
root напечатать корневой каталог текущего хранилища
serve запустить автономный веб-сервер
showconfig показать совмещенные настройки из всех файлов конфигурации
status показать измененные файлы в рабочем каталоге
summary показать сводку состояния рабочего каталога
tag присвоить одну или более метку текущей или заданной ревизии
tags перечислить метки в хранилище
tip показать оконечную (tip) ревизию
unbundle применить один или несколько файлов групп изменений
update обновить рабочий каталог (или переключить ревизию)
verify проверить целостность хранилища
version показать версию и копирайт
дополнительные разделы справки:
config Файлы конфигурации
dates Форматы дат
diffs Форматы файлов различий
environment Переменные окружения
extensions Использование дополнительных возможностей
filesets Задание набора файлов
glossary Глоссарий
hgignore Синтаксис файлов игнорирования Mercurial
hgweb Настройка hgweb
merge-tools Инструменты для слияния
multirevs Задание нескольких ревизий
patterns Шаблоны имен файлов
phases Работа c фазами
revisions Задание одной ревизии
revsets Задание набора ревизий
subrepos Подхранилища
templating Использование шаблонов
urls Пути URL
используйте "hg -v help" чтобы посмотреть встроенные псевдонимы и глобальные
параметры
Пичалька — англосаксонский только в командах, и то, их можно сокращать до двух букв. :))
У git нет API, позволяющего нормальную интеграцию с чем‐либо (делать каждый раз fork-exec и читать выхлоп из pipe — это очень медленно, как в смысле скорости разработки так и скорости исполнения. Даже несмотря на то, что интеграция пишется на языке, который успешно прячет fork-exec).
У git нет огромного количества хуков (например, preoutgoing, все pre-{command}, …).
У git нелогичное распределение функциональность по командам: checkout создаёт ветки или обновляет дерево, push отправляет изменения или удаляет их на том конце, diff может показывать изменения между ревизиями, а может — status, причём сам status этого не умеет…
У git иногда плохая обработка аргументов командной строки (pull принимает сначала аргументы для merge, затем для fetch).
У git плохая документация — она настолько подробна, что отыскать нужное зачастую не представляется возможным. Вместе с неочевидным распределением функциональности по командам это создаёт проблемы.
Аналог revsets у git обладает куда как меньшими возможностями.
Многие команды git, показывающие список ревизий, не имеют возможности настройки формата вывода.
У часто используемых команд вроде push/pull есть ненужные обязательные аргументы: «git push origin :branch».
У git нет аналога «hg incoming».
У git нет удобного аналога «hg grep».
Большую часть претензий можно игнорировать или терпеть. Но не первые две.