Windows и Mercurial изменяет случаи имен классов
Я унаследовал проект Java, который включает в себя несколько классов, которые не названы в соответствии с соглашением об именах UpperCamelCase.
Это особенно относится к аббревиатурам (например, HTMLButton, а не HtmlButton). Хотя я знаю, что есть некоторые расхождения во мнениях относительно использования CamelCase с сокращениями, мы хотели бы перейти только на заглавную букву для первой буквы аббревиатуры. (В настоящее время существует несколько одновременных соглашений об именах.)
Я бы хотел убрать это. Мы используем Mercurial как наш репозиторий исходного кода и работаем на машинах Windows (включая XP, Vista, 7). Однако, если я изменю имя класса из HTMLButton в HtmlButton, Mercurial распознает это как изменение имени класса, но не как изменение имени файла. (И впоследствии любые вытаскивания из Mercurial не меняют имя файла.)
Я знаю, что Windows работает в файловой системе с жестким диском, и я понимаю, что Mercurial берет эту функцию при приеме нажатий из окна Windows...
Итак...:
- Есть ли параметр, который я могу изменить, чтобы заставить Mercurial использовать имена файлов с учетом регистра?
- Есть ли параметр, который я могу изменить, чтобы заставить Windows использовать имена файлов с учетом регистра?
(Это отдельные вопросы. Мой приоритет - заставить Mercurial принимать изменения имени файла, если это необходимо, мы можем вручную принудительно переименовать файлы в нашей среде IDE. Однако было бы предпочтительным прямое решение!)
(Если все остальное не удается, я могу попробовать переименовать HTMLButton в HtmlButtonA, зафиксировать и нажать и переименовать HtmlButtonA в HtmlButton, а также сделать еще один фиксатор и нажать... Однако я не уверен, какое влияние это окажет на Windows имена файлов, если кто-то еще сделал попытку после второго нажатия...)
Ответы
Ответ 1
Если вы выполните:
hg rename foo bar
hg rename bar Foo
Вам не нужно на самом деле совершать и нажимать до конца. Другими словами, ваш репозиторий не будет знать об этом обходном пути для Windows.
Другой вариант - переименовать файл в Windows, а затем вызвать:
hg rename foo Foo --after
чтобы уведомить Mercurial об этом изменении.
Источник: http://hgbook.red-bean.com/read/mercurial-in-daily-use.html#id364064