2016-08-26 8 views
0

Я хочу использовать Git для моего нового проекта java, который я собираюсь разработать с использованием Java в Eclipse. Поэтому я планирую использовать Egit addon of eclipse.Как реализовать модульную разработку проекта в Git с помощью ветвления?

Теперь в этом проекте работает несколько членов, каждый из которых имеет разные модули. Хорошо ли создавать филиалы для каждого отдельного разработчика? Единственная ведущая ветвь, которая будет использоваться для объединения всех ветвей в нее в конце конкретной сборки релиза.

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

+2

Да, это звучит близко к нормальному [git flow] (http://nvie.com/posts/a-successful-git-branching-model/). Конфликты всегда должны быть обработаны, хотя - нет никакой волшебной пули, чтобы решить, что делать, когда два разработчика изменяют одну и ту же строку кода. –

ответ

1

Я использовал git и eclipse с командой из более чем 200 человек в проекте, который длился 3 года. Позвольте мне уточнить несколько вещей:

  1. Если один из ваших разработчиков полагается на код, который еще не поставлен, eclipse будет ссылаться на него как на ошибку и перестанет помогать вашему разработчику. Ваш разработчик все еще может использовать eclipse, но он будет только полезен, как любой текстовый редактор, например блокнот.
  2. Философия git заключается в том, чтобы заставить их работать с частной веткой в ​​своем локальном рабочем пространстве, чтобы они не полагались на центральный сервер для обновлений. Таким образом, по сути, они не используют общую ветку, как в CVS или ClearCase. Обновления и фиксации сделаны в частных репозиториях, и остальная часть команды не подвержена этому. По сути, ваша ветка никогда не находится в плохом состоянии, если вы этого не хотите.

Это модель, которую мы использовали:

  1. Базовый филиал будет опубликован командой сборки.
  2. Каждый разработчик опубликовал ветку/тег (в своей собственной системе теги становятся легче, как мы узнали по мере того, как наш проект рос на протяжении многих лет) из своего частного репозитория, основываясь на собственном статусе завершения кода. Этот код будет заменен на текущий базовый уровень, опубликованный командой сборки.
  3. Затем разработчик попросит команду сборщика объединить свой код в основную ветку для следующей базовой линии.
  4. Команда по сборке получала бы все такие опубликованные ветви плановым способом и объединила их и опубликовала новую базовую линию.
  5. Любые конфликты слияния затем будут обрабатываться с использованием одной из следующих стратегий:
    • Если слияние конфликт был просто один или оба из двух разработчиков, будет предложено решить, как объединить.
    • Если он был сложным, код был сброшен из слияния, и разработчик был проинформирован о том, чтобы слить его конец в новой базовой линии и опубликовать код для следующей базовой линии.
  6. Любой разработчик, опирающийся на код, не опубликованный командой по сборке, будет вытаскивать прямо из целевого разработчика с их согласия и продолжать свою работу.

Примечания: Полезные Git инструменты и команды для использования:

  1. мерзавец гуй
  2. gitk
  3. мерзавец тег
  4. мерзавец перебазироваться

Примечание: Команда сборки должен обладать некоторой властью в управлении git, чтобы иметь возможность использовать git правильно и публиковать чистые филиалы для использования вашей командой.

Некоторые рекомендации: 1. Обязательно объясняйте цель совершённого кода. 2. Сделать коммиты меньше, чтобы упростить слияние. 3. Не изменяйте опубликованные ветви, это поможет уменьшить массу боли (без переустановки опубликованных ветвей, особенно если кто-то их уже набрал)

Git - хороший инструмент, и я верю, что когда вы его используете, трудно вернуться к традиционным инструментам, таким как clearcase, cvs.

2

Вы должны прочитать некоторую документацию о стратегии ветвления, например. https://www.atlassian.com/agile/branching

Большинство команд разработчиков сегодня используют то, что называется ветвлением разветвления функций/разветвления задач.