Два приложения имеют общие модули. Как залить изменения в git и не загрузить лишнего?
Сейчас работаем над одним приложением, функционал разделён на модули. Появилась потребность во втором приложении, который должен использовать некоторые модули из первого.
В случае с первым приложением сейчас создан репозиторий, где у каждого программиста своя ветка, затем всё мержится в основную.
Планируется добавить ещё одну основную для второго приложения.
Можно ли как-то сделать так, чтобы при слиянии в одну ветку какие-то файлы не загружались, а в другую загружались?
Или делать разные коммиты в разные ветки?
Поэтому вам нужно сделать общие модули как дополнительные зависимости, завести отдельный репозиторий для ваших модулей и делать их релизы отдельно от ваших проектов, потому что а вдруг их станет 5? 10?
sofdob: в таком случае, вам следует абстрагировать ваши модули от моделей либо признать эти модули недостаточно независимыми и оставить как есть
Вы либо делаете одно приложение(и не воротите обходные пути), либо два разных, но разные приложения могут иметь общие части только посредством зависимостей, для которых нужен другой репозиторий, на мой взгляд.
Подождем что ещё скажут люди)
Decadal: второе приложение не совсем разное, оно пока должно просто расширять первое. Было бы удобно, если бы была возможность использовать разные gitignore (с каким-нибудь префиксом, например). =(
sofdob: это будет печально потому что можно запутаться
Но тогда зачем вам реальное разделение проектов? Сделайте структурное разделение при помощи наследования, т.е. два разных поведения будут в двух разных классах одного уровня иерархии
Decadal: в этом случае мне не понятно как это реализовать (за неимением достаточно опыта). Если у нас так и будет один проект, то как определить, какое "приложение" используется, что бы объявить используемые классы? Сделать разные точки входа?
sofdob:
да, конечно! Вы использовали например yii2? там есть advanced-шаблон с двумя точками входа: для админки и для фронт-части (само веб-приложение)
sofdob: и там такая архитектура: backend для админки (не имеетя в виду серверная часть, имеется в виду именно админка, в которой есть и бекенд и фронтенд); frontend для веб-приложения, которое видят собственно юзеры (например магазин или соцсеть или еще что), и common где вынесены общие классы, модели и прочее.
Таким образом оба приложения работают независимо друг от друга но в рамках одного проекта, и влияние одного приложения на другое оказывается только посредством данных (через общую бд), но и это не обязательно.