Подтвердить что ты не робот

Что DVCS поддерживает имена файлов Unicode?

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

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

  • Что DVCS поддерживает имена файлов Unicode?
  • В Windows и Linux?
  • В идеале, с возможностью переноса репозиториев между компьютерами Windows и Linux с минимальными проблемами?
4b9b3361

Ответ 1

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

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

Ответ 2

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

Ответ 3

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. Я не уверен, когда это будет реализовано.

Ответ 4

git

Август 2009:

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


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

UTF-8 подходит для msysgit, совершает подобный "Обновление меньше настроек для UTF-8"

На странице Git для Windows + страницы:

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


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

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

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

Ответ 5

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

Ответ 6

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

Ответ 7

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

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

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

Нет перевода, никаких проблем.


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