Добрый день!
В своих проектах я использую субмодули git. Каждый проект логически состоит из частей. Эти части хранятся в своих репозиториях и обычно входят в другие проекты. Проекты хранятся в своих репозиториях. Все репозитории хранятся на bitbucket. Таким образом, если зайти на bitbucket и ткнуть sources, можно посмотреть весь проект вместе с субмодулями. Когда кликаешь на субмодуль, автоматически переходишь в его репозиторий. Проект выглядит связано. Очень красиво.
Знатоки Git, посоветуйте пожалуйста как лучше сделать.
Как лучше организовать рабочий процесс?
Допустим другой разработчик делает форк проекта и отдельные форки субмодулей. Когда он заходит в свой репозиторий и кликает на субмодули, он видит что они ссылаются на мои репозитории. (Это все потому что в .gitmodules url указаны на репозитории в моем аккаунте. Файл .gitmodules индексируется)
Разработчик делает git clone ..., затем git submodules update --init. Потом он может поменять .gitmodules, задав свои url, и тогда bitbucket будет красиво показывать проект в его аккаунте.
Потом он создаст ветку, что-то изменит и сделает пулл реквест. А когда я его буду смотреть, то изменения в .gitmodules будут тоже отправлены. А мне этого не нужно.
Если изменения будут внесены в несколько субмодулей и в проект, как их объединить в один пулл реквест?
Вообще, как правильно поступать, когда нужно чтобы части проектов существовали отдельно и их можно было дорабатывать из любого проекта? Например, есть модуль Minilib, в нем находятся классы, которые нужны почти в каждом проекте. Например, логгер, класс исключений, функции для работы со строками, и т д. Ведь не правильно будет его копипастить в каждый проект, где он может понадобиться. Потом новый функционал придется вручную переносить в несколько проектов. Хорошей идеей будет расположить его в своем репозитории и подключать в виде субмодуля в каждый проект.
Тогда как можно решить описанные проблемы: добиться связности проекта и субмодулей в разных аккаунтах bitbucket и организовать пулл реквесты из нескольких репозиториев. Может есть другой, более правильный подход при работе с bitbucket?
А может это особенность bitbucket и стоит перейти на другой подобный сервис?