Разработка проекта библиотеки Git, который также является подмодулем другого проекта

1

У меня есть разрабатываемое Android-приложение, которое использует отдельный отдельный проект библиотеки. Эти два проекта хранятся в отдельных хранилищах Git. Проект приложения ссылается на проект библиотеки с помощью файла .gitmodules.

Теперь я пытаюсь работать над обоими этими проектами вместе (приложение и библиотека) на новой машине. Я клонировал проект приложения, который также привел к тому, что проект библиотеки был автоматически клонирован в мой каталог ~/ git/. Все идет нормально.

Я также замечаю, что в Eclipse Package Explorer корень проекта библиотеки имеет хеш фиксации в скобках (например, [MyLibraryName 0123ABC]). Это, по-видимому, означает, что клон библиотеки имеет определенную точку фиксации, и я понимаю, что я мог бы это обновить (т.е. Вывести последние коммиты для этой библиотеки) с помощью git submodule foreach git pull.

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

Должен ли я снова клонировать проект библиотеки, полностью отдельно в другой подкаталог и импортировать как отдельный проект в Eclipse, чтобы я мог работать в этой библиотеке?

  • 0
    Если вас устраивает git из командной строки, вы можете зафиксировать изменения в вашем подмодуле, сначала перейдя к нему. Понятия не имею, когда дело доходит до Eclipse Package Explorer.
  • 0
    У вас все еще есть два независимых проекта, поэтому вам нужно работать в соответствующем проекте, чтобы выполнить коммит. Кроме того, вам нужно убедиться, что вы находитесь на ветке (в подпроекте), а не на отстраненной голове, чтобы вы могли перенести свои изменения в свой золотой репо.
Теги:
git-submodules

1 ответ

0

Прочитав различные другие вопросы SO, кажется очевидным, что для этого нет элегантного решения. Шаги, которые я в конечном итоге решил решить, следующие:

  • Предполагая, что этого не сделано, клонируйте репозиторий приложений, который использует подмодули. Импортируйте все проекты в рабочее пространство Eclipse, включая репозиторий подмодулей (или репозитории). Обратите внимание, что репозиторий подмодулей представляет собой репозиторий в основном хранилище приложений, и он не находится на определенной ветки; это ссылка на конкретную фиксацию (отсоединенная головка).

  • В Проводнике пакетов переименуйте проект подмодуля, который был импортирован. Я дал ему имя, относящееся к приложению repo внутри. Например, для проекта приложения ABCD переименуйте его из SomeLibrary в SomeLibrary_ABCD.

  • Затем, клонируйте библиотеку отдельно от своего собственного хранилища Git. Теперь точка переименования проекта подмодуля заключается в том, что теперь можно импортировать проект Eclipse из автономного клона репозитория библиотеки, без Eclipse, при этом "Некоторые или все проекты не могут быть импортированы из-за того, что они уже существуют в рабочей области".

Сделав это, у нас есть проект SomeLibrary_ABCD, который не находится на ветке, но указывает на конкретный коммит и является подмодулем проекта ABCD. Этот подмодуль обновляется с помощью git submodule foreach git pull. Затем у нас есть проект SomeLibrary, который находится на ветке (например, master).

Мой запланированный рабочий процесс заключается в локальном переключении проекта приложения на мой "автономный" проект библиотеки вместо версии подмодуля, когда я хочу сделать разработку в библиотеке. Затем я фиксирую изменения в SomeLibrary.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню