Git, Bazaar и русские имена файлов
Я уже давно проникся идеей распределенных систем контроля версий (VCS) и до сих пор использовал Git, которым был в целом доволен. Но так как в последнее время я частично стал пользоваться Linux’ом, то возникла одна проблема с хранением исходников Outwiker’а, о которой я уже как-то говорил, но напомню еще раз.
Суть проблемы состоит в том, что в исходниках Outwiker’а лежат файлы справки, которые имеют русские имена. Эти файлы создавались в Windows, поэтому кодировки имен — cp1251. При получении этих файлов из репозитория под Linux’ом кодировка имен файлов сохраняется, и по умолчанию в консоли показываются вопросики вместо имен. Это решается сменой кодировки консоли, но Outwiker будет видеть эти файлы все-равно искореженными. Имена файлов под Linux’ом можно преобразовать в нужную кодировку, но тогда с точки зрения git это будут новые (точнее переименованные) файлы, что нам не надо.
Я долго искал решение этой проблемы, хотелось, чтобы каждая ОС получала бы файлы с именами в своей кодировке. Решения так и не нашел, идеология git — это хранить файлы в том виде, в котором они были созданы (об этом говорил Торвальдс во время доклада про git), поэтому промежуточные преобразования там стараются не делать (хотя параметр AutoCRLF этой идеологии противоречит.
После этого понял, что надо пробовать другие VCS, Mercurial отбросил сразу,так как на одном форуме сказали, что там те же самые проблемы, а вот как дела обстоят с Bazaar было не ясно, пришлось пробовать. И оказалось, что в описанной ситуации, когда имеются файлы с русскими именами, такой проблемы не возникает — под Windows имена получаются в кодировке cp1251, а под Linux’ом — utf-8.
Похожее поведение и с текстом комментариев к коммитам. По умолчанию в Bazaar под Windows комментарии вводятся в кодировке cp-1251, что позволяет вводить их из командной строки, но в то же время они будут нормально читаться из Linux’а, где кодировка для комментариев — utf-8. И наоборот. Команда bzr log, в отличие от одноименной команды git, тоже более удобно работает с русскими буквами.
Я пока еще слишком мало копался в Bazaar, чтобы развивать тему Bazaar vs. Git, надо будет попробовать работу с ветками и всякие другие фичи, но похоже, что Outwiker надо переводить на Bazaar, другого решения проблемы с русскими именами файлов я не вижу.
PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
Евгений:
Для Mercurial существует расширение, исправляющее данную проблему:
10 октября 2010, 5:52 ппhttp://mercurial.selenic.com/wiki/FixUtf8Extension
Jenyay:
Спасибо, буду знать, что на Mercurial проблему тоже можно обойти. Но пока перешел на Bazaar.
10 октября 2010, 10:41 ппPavel Vyazovoi:
А как же github? Я вот собирался дома форкнуть проект на github и вносить свои contributions. А теперь актуальное дерево где?
11 октября 2010, 3:08 ппJenyay:
Сейчас свежие исходники лежат на launchpad — https://launchpad.net/outwiker
Еще один плюс лаунчпада, что он предоставляет репозиторий для deb-пакетов. Сейчас как раз делаю так, чтобы outwiker мог работать не только в портабельном режиме, но и мог нормально ставиться как все приличные программы под Linux.
11 октября 2010, 9:24 пп