Лучший подход для поддержки скелета для моих проектов с помощью git - PullRequest
3 голосов
/ 11 февраля 2011

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

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

mkdir new_project
cd new_project
git init

Время слияния скелета:

git remote add skeleton git@domain:skeleton.git
git fetch skeleton
git merge skeleton/master

Теперь здесь идет настройка проекта, изменение ini-файлов, добавление пользовательских шаблонов, модулей, докладчиков и так далее.Сейчас проект живет своей жизнью.Через некоторое время происходит слияние с обновленным скелетом:

git fetch skeleton
git merge skeleton/master --no-commit

Мне нравится просматривать все изменения, приходящие от скелета к проекту, поэтому --no-commit опция.

И вот мой вопрос приходит. Каков наилучший способ поддержки скелета? При добавлении новых функций в каждый проект, использующий скелет в качестве основы, существуют функции, относящиеся только к текущему проекту.Но в ядре приложения есть функции, и они понадобятся мне и в моем следующем проекте, поэтому мне нужно объединить их со скелетом назад.

Я не нашел в git / merge или какой-либо другой команде git команды для поддержки скелета.Поэтому я вручную сравниваю проект со скелетом (используя meld, хотя и отличный инструмент) и применяю изменения, предназначенные для скелета, затем я фиксирую скелет.

Я пытался сохранить скелет, чтобы добавить проект как удаленный, получить проект и затем объединить со скелетом, но таким образом все изменения в проекте, которые относятся только к проекту, возвращаются в скелет, и это недопустимо.

1 Ответ

1 голос
/ 11 февраля 2011

Одним из подходов может быть создание новой ветки в вашем проекте под названием skeleton-improvements.Когда вы делаете улучшение скелета во время работы над проектом, делайте это в ветке улучшений.Затем включите его в свой мастер (или рабочую ветку, что угодно):

git merge skeleton-improvements

Если вы хотите обновить репозиторий скелета, добавьте ваш проект в качестве удаленного, извлеките, а затем объедините ветку skeleton-improvements.

...