Обновление репозитория git файлами с измененными регистрами - PullRequest
1 голос
/ 18 февраля 2020

Из-за соглашения о присвоении имен для разработчиков мне пришлось переименовать группу файлов приложения laravel, например. s upplyController. php до S upplyContoller. php. Файлы создаются в windows, поэтому filesys нечувствителен к регистру, но рабочий VPS имеет debian / регистрозависимый, поэтому важно иметь правильное имя для развертывания.

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

Ответы [ 2 ]

2 голосов
/ 18 февраля 2020

Несмотря на то, что git mv будет работать, требуется, чтобы вы предоставили отображение от fileName до FileName, что может быть утомительным - и большинство попыток автоматизировать это будет подвержено ошибкам.

С другой стороны, если у вас есть клон, рабочее дерево которого имеет желаемую капитализацию, вы можете перестроить индекс из этого рабочего дерева. (Может показаться рискованным стереть индекс таким образом; но даже если что-то пойдет не так, вы можете легко перестроить индекс с помощью reset или, в самом худшем случае, восстановить из источника - это является частью точки распределенное управление исходным кодом.)

То есть, когда репо находится в чистом состоянии (нет неотслеживаемых файлов, которые не игнорируются, нет неустановленных изменений и, предпочтительно, также нет поэтапных, но незафиксированных изменений):

git rm --cached -r -- :/:
git add -- :/:

Трюк здесь прост: в конфигурации без учета регистра git поймет, что файл рабочего дерева MyFile совпадает с записью индекса myFile - так что просто делает add не меняет имя в индексе. Но если в индексе нет соответствующей записи, регистр имени файла будет совпадать с тем, что в настоящее время находится в рабочем дереве.

(Похоже, вы говорите, что это не то поведение, которое вы ожидаете; я просто перепроверил, и по крайней мере, с 2.25.0. windows .1 такое поведение я вижу. Я не помню ни одной версии, которая вела себя по-другому.)

0 голосов
/ 18 февраля 2020

git mv действительно ваш лучший вариант.

Что вас может заинтересовать, так это, вероятно, способ массового изменения множества различных файлов?

Если это так в таком случае ваш реальный вопрос может быть: как сгенерировать al oop, который будет последовательно выполнять различные git mv?

Например:

$ git mv controllers/abccontroller.php controllers/AbcController.php
$ git mv controllers/defcontroller.php controllers/DefController.php
$ git mv controllers/ghicontroller.php controllers/GhiController.php
$ git mv controllers/jklcontroller.php controllers/JklController.php
...

Я думаю, это было бы проще для не Windows ОС по двум причинам: оболочка + ОС действительно .

...