У меня есть разрабатываемое Android-приложение, которое использует отдельный отдельный проект библиотеки. Эти два проекта хранятся в отдельных хранилищах Git. Проект приложения ссылается на проект библиотеки с помощью файла .gitmodules
.
Теперь я пытаюсь работать над обоими этими проектами вместе (приложение и библиотека) на новой машине. Я клонировал проект приложения, который также привел к тому, что проект библиотеки был автоматически клонирован в мой каталог ~/ git/. Все идет нормально.
Я также замечаю, что в Eclipse Package Explorer корень проекта библиотеки имеет хеш фиксации в скобках (например, [MyLibraryName 0123ABC]
). Это, по-видимому, означает, что клон библиотеки имеет определенную точку фиксации, и я понимаю, что я мог бы это обновить (т.е. Вывести последние коммиты для этой библиотеки) с помощью git submodule foreach git pull
.
Вопрос в том, что для меня лучше всего продолжить отдельно разработку проекта библиотеки? Я попытался изменить файл и выполнить его, но при использовании Team- > commit диалог не перечислил измененный файл. Я предполагаю, что это может быть связано с тем, что он является подмодулем, указывая на конкретную фиксацию.
Должен ли я снова клонировать проект библиотеки, полностью отдельно в другой подкаталог и импортировать как отдельный проект в Eclipse, чтобы я мог работать в этой библиотеке?
Прочитав различные другие вопросы SO, кажется очевидным, что для этого нет элегантного решения. Шаги, которые я в конечном итоге решил решить, следующие:
Предполагая, что этого не сделано, клонируйте репозиторий приложений, который использует подмодули. Импортируйте все проекты в рабочее пространство Eclipse, включая репозиторий подмодулей (или репозитории). Обратите внимание, что репозиторий подмодулей представляет собой репозиторий в основном хранилище приложений, и он не находится на определенной ветки; это ссылка на конкретную фиксацию (отсоединенная головка).
В Проводнике пакетов переименуйте проект подмодуля, который был импортирован. Я дал ему имя, относящееся к приложению repo внутри. Например, для проекта приложения ABCD переименуйте его из SomeLibrary в SomeLibrary_ABCD.
Затем, клонируйте библиотеку отдельно от своего собственного хранилища Git. Теперь точка переименования проекта подмодуля заключается в том, что теперь можно импортировать проект Eclipse из автономного клона репозитория библиотеки, без Eclipse, при этом "Некоторые или все проекты не могут быть импортированы из-за того, что они уже существуют в рабочей области".
Сделав это, у нас есть проект SomeLibrary_ABCD, который не находится на ветке, но указывает на конкретный коммит и является подмодулем проекта ABCD. Этот подмодуль обновляется с помощью git submodule foreach git pull
. Затем у нас есть проект SomeLibrary, который находится на ветке (например, master).
Мой запланированный рабочий процесс заключается в локальном переключении проекта приложения на мой "автономный" проект библиотеки вместо версии подмодуля, когда я хочу сделать разработку в библиотеке. Затем я фиксирую изменения в SomeLibrary.
Любые лучшие предложения, кроме этого (или поправки ко всему, что я сказал), будут оценены, но пока это мой собственный ответ на проблему.