Mercurial игнорирует переименование файла (сменный регистр)

Я работаю с проектом, который унаследовал от парня Windows. Это под контролем версии Hg. Он получил некоторое противоречивое соглашение об имени файла, которое я пытаюсь исправить, поэтому я переименовал файл с именем jquery.fullpage.js в jquery.fullpage.js (только верхний регистр "P" ), чтобы присоединиться к оригинальному автору этой библиотеки jQuery.

Однако Hg не обнаруживает изменения в нижнем регистре-верхнем регистре как переименование или даже как удаленный/созданный файл. В результате я не могу совершить это изменение и нажать его вживую. Он работает локально, но на удаленном промежуточном сервере, где я нажал, он дает 404 ошибки. По-видимому, файлы на пульте не были переименованы в верхний регистр P.

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

Как это исправить?

Ответ 1

Это проблема складывания случая. Попробуйте переименовать файл через Mercurial: hg rename jquery.fullpage.js jquery.fullPage.js.

Ответ 2

Если вы переименовываете файл, вы можете пойти с hg rename, как уже было сказано.

Однако (хотя бы на Windows), если вы переименовываете папку , вы не можете переименовать ее напрямую. Общим обходным путем является использование промежуточного элемента:

hg rename Foo tmp
hg rename tmp foo

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

Ответ 3

Если вы находитесь в OS X, и вы используете HFS, который учитывает регистр, но не чувствителен к регистру, то Hg (и Git, как я узнал) подберут изменение. Я использую Linux, и мой сотрудник использует OS X, и у нас была аналогичная проблема с Git. Прохождение промежуточного переименования - это одно решение или использование промежуточного удаления, как вы предполагали.

Я считаю, что предложение Jakub об использовании hg для выполнения переименования будет работать, но я его не пробовал, так как у меня нет hg.

Ответ 4

Также есть hg rename --after oldFile newFile если изменение уже hg rename --after oldFile newFile.