Какие DVCS поддерживают имена файлов Unicode? - PullRequest
23 голосов
/ 06 мая 2009

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

Поддержка имен файлов, отличных от ASCII, необходима для моей японской компании. Я ищу тот, который внутренне хранит имена файлов как Unicode, а не зависящую от платформы кодировку, которая вызовет бесконечное горе. Итак:

  1. Какие DVCS поддерживают имена файлов Unicode?
  2. В Windows и Linux?
  3. В идеале, с возможностью переноса репозиториев между машинами Windows и Linux с минимальными проблемами?

Ответы [ 7 ]

9 голосов
/ 06 мая 2009

См. выпуск 80 в том же хранилище . В 2009 году в списке рассылки Git (например, 1 , 2 ) было обсуждение, в котором сопровождающий Git Джунио Хамано задал несколько вопросов по этому поводу. У меня нет этого прямо здесь. Присоединяясь к ветке конструктивно, вы можете помочь решить проблему.

В реализации Java JGit мы всегда используем UTF-8, когда создаем текстовые метаданные и имена файлов. Это единственный способ, но есть некоторые вещи, которые следует учитывать.

8 голосов
/ 13 августа 2009

мерзавец

Август 2009:

Проект msysgit занят исправлением поддержки UTF-8 для Git в Windows. Это может быть исправлено в следующем выпуске.


Обновление за февраль 2012

UTF-8 идет для msysgit, с фиксирует как этот "Обновить меньше настроек для UTF-8"

Со страницы Git для Windows Google+:

Karsten Blees 'Патчи UTF-8 для Git для Windows теперь объединены в' devel '.
Это означает, что следующий выпуск будет поддерживать имена файлов Unicode!


Обновление апрель 2012

Теперь он выпущен в mSysGit 1.7.10.

См. Страницу Поддержка Git для Windows Unicode .

8 голосов
/ 09 мая 2009

Mercurial

В Linux я думаю, что Mercurial просто кодирует в любой кодировке системы (поправьте меня, если я ошибаюсь). Поэтому лучше всего настроить Linux для UTF-8 для кросс-платформенной совместимости. Это значение по умолчанию для многих современных дистрибутивов.

В Windows Mercurial (из-за обработки байтовых строк в Python) использует системную кодовую страницу. Это примерно гарантирует плохую межплатформенную совместимость для не-ASCII символов.

fixutf8 Расширение для Windows (до Mercurial 2.0)

Существует внешнее расширение Mercurial, которое называется fixutf8 для Windows, которое правильно обрабатывает все символы Unicode (даже те, которые находятся за пределами текущей кодовой страницы) и кодирует имена файлов как UTF-8 в репозитории Mercurial. Таким образом, он обеспечивает взаимодействие с Linux, если Linux использует кодировку UTF-8. Я попытался включить его в настройках Windows на прошлой неделе, и у меня была пара проблем с установкой. С тех пор одна проблема была исправлена. Теперь единственная проблема заключается в том, что бинарные дистрибутивы Mercurial создаются с помощью Python 2.4, а для fixutf8 требуется, чтобы Mercurial собирался с Python 2.5 или выше для загрузки fixutf8. Я ожидаю, что это будет решено в ближайшем будущем.

Mercurial 2.0 и новее для Windows

fixutf8 кажется несовместимым с Mercurial 2.0 и более поздними версиями, согласно веб-странице fixutf8 . См. WindowsUTF8Plan для получения подробной информации о будущих решениях. Я не уверен, когда это будет реализовано.

8 голосов
/ 06 мая 2009

Bazaar VCS внутренне работает с именами юникода. И у него очень хорошая поддержка юникода как в Linux, так и в Windows.

2 голосов
/ 27 апреля 2012

Git в Windows 1.7.10 теперь использует UTF-8 для имен файлов независимо от локали пользователя.

0 голосов
/ 21 октября 2013

Это действительно сложная проблема. Проблемы возникают потому, что либо инструменты пытаются интерпретировать имена файлов, когда они точно не знают кодировку, либо потому, что они переводят, но переводят в форму, которая не может обрабатывать все случаи (например, ASCII или UTF-16). Ни одна из основных 3 ОС не согласна с тем, как кодируется имя файла, что еще более усложняет задачу.

Для лучшего понимания проблем предлагаю прочитать страницу стратегии кодирования Mercurial . В нем описывается, как различные платформы различаются, и почему Mercurial выбрал стратегию, которую он имеет.

Если вам действительно нужно это сделать, то самое основное - это то, что системы ALL должны быть настроены на использование имен файлов UTF-8, а не одной из многих японских кодовых страниц. Это легче сказать, чем сделать, но, как только это будет сделано, ни одна система не должна переводить имена файлов во что-либо еще.

Нет перевода, нет вопросов.


*: Да, я знаю, что у вас может быть системная кодировка по умолчанию, но это не то же самое, что кодировка файловой системы. Что происходит, когда файловая система используется несколькими системами или физически перемещается между системами?

0 голосов
/ 21 мая 2010

Согласно этой странице: базар, коденди, CVSNT, Monotone, Perforce, концерт Rational Team, Subversion, Surround SCM, Synergy. Но на этой странице много «Неизвестных».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...