2013-08-26 1 views
0

Не совсем уверен, как это объяснить, но здесь.Git объединяет каталоги, которые разделились

Из-за ошибки в Tortoise-git мы закончили ситуацию подобным образом;

Весь наш код должен находиться под такой структурой каталогов (это проект Symfony2);

src/XYZ/OurExitingBundle 
src/XYZ/AnotherExcitingBundle 

, но из-за (мы думаем) с ошибкой в ​​Tortoise-мерзавца, когда мы тянем код на коробке Linux, у нас есть;

src/XYZ/OurExcitingBundle 
src/XYZ/AnotherExcitingBundle 
src/xyz/ourexcitingbundle 
src/xyz/anotherexcitingbundle 

(т. Е. Фактические каталоги, а также нижний регистр). Файлы, создающие наш проект, кажутся случайным разбиением между каталогами CamelCase и нижнего регистра.

Поскольку мы разрабатываем на машинах Windows, это не имеет значения во время кодирования, но когда код переносится на наш Linux-сервер, все падает, поскольку файлы не там, где они должны быть, или файл существует в каталог CamelCase, но более новая версия находится в нижнем регистре.

Итак, мой вопрос: есть ли способ «объединить» все файлы в строчных каталогах в их эквиваленты в каталогах CamelCase, в результате чего весь последний код будет только в каталогах CamelCase?

Большое спасибо за помощь.

ответ

1

Здесь есть две вещи. Самый простой из них, чтобы убедиться, каждый клиент на окнах есть

core.ignorecase = true 

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

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

git filter-branch --tree-filter 'test -d src/xyz && for f in `git ls-files src/xyz`; do git mv "$f" src/XYZ; done' 

Там также были внесены изменения в Tortoise Git для улучшения поддержки для обработки чувствительность к регистру:

Так же стоит проверяя версию, которую вы используете.

+0

спасибо. Мы попробовали все, что вы предложили, но единственное, что сработало, - это вручную переместить все из неправильных каталогов в правильные. Проблема не повторилась, поэтому я подозреваю, что она не использовала старую версию Tortoise. –