Как проверить ветку исходного кода SVN, чувствительную к регистру, в систему, нечувствительную к регистру?

Я работаю над системой Macbook, которая отформатирована как нечувствительная к регистру система. Проблема в том, что мне нужно проверить ветку SVN, в которой есть файлы, чувствительные к регистру. Пример:

inbuilt-file.c
InBuilt-File.c

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


person gagneet    schedule 07.06.2010    source источник
comment
предложить использовать Vagrant / Virtual Box и запустить виртуальную машину Linux   -  person Phill Pafford    schedule 19.07.2013


Ответы (3)


Способы, которые сразу приходят на ум:

  1. Прекратите использовать имена файлов с учетом регистра. На самом деле нет причин, чтобы Foo.c и foo.c были разными вещами.

  2. Прекратите использовать файловую систему без учета регистра. Вы можете отформатировать тома HFS+ без учета регистра в Mac OS X, хотя Adobe Creative Suite и World of Warcraft будут жаловаться на это.

  3. Проверьте это на файл DMG, отформатированный с учетом регистра HFS +. Создайте его в Дисковой утилите или с помощью такой команды: hdiutil create -size 100m -fs "Case-sensitive HFS+" -volname CaseSensitive CaseSensitive.dmg

  4. Немного наивная идея: использовать git svn и написать несколько хуков, которые будут автоматически переводить имена файлов, где чувствительность к регистру — это проблема в измененном имени файла, которое соответствует определенному стандарту при извлечении, а затем снова возвращает их с правильным именем файла. Конечно, это нарушило бы ваши сценарии сборки, зависимости и т. д., потому что у файла еще не было бы правильного имени. Итак, вам нужно будет запустить ветку, которая вернет вас к необходимости использовать что-то вроде git svn. Это кажется излишне болезненным по сравнению с (1).

person Tom Morris    schedule 07.06.2010
comment
Первый пункт действителен только для языков, нечувствительных к регистру. Foo.c и foo.c могут ничем не отличаться от Foo.java и foo.java. - person Kees de Kooter; 12.03.2012
comment
часть двух первых ответов, которые не являются ответами (люди не всегда контролируют эти условия), решение 3 довольно умное. - person marcorossi; 12.10.2012

Недавно я столкнулся с той же проблемой (под управлением Windows) и не смог ее понять.

Однако для пользователей Mac кто-то написал инструкции:

  1. Используйте приложение Apple Disk Utility для создания нового разреженного образа диска типа Mac OS Extended (с учетом регистра, в журнале).
  2. Смонтируйте новый образ диска
  3. проверить источники домашних животных для этого изображения
person Lauri Lehtinen    schedule 07.06.2010

Ответ Лаури Лехтинена выглядит хорошо. Однако, если вам нужно работать с файлами в системе, нечувствительной к регистру, вам все равно придется переименовывать их. Вы можете переименовать их в репозитории перед извлечением с помощью команды svn move.

$ svn help rename
move (mv, rename, ren): Move and/or rename something in working copy or repository.
usage: move SRC... DST
person Doug Currie    schedule 07.06.2010