Пабло, вот реальный пример, поддерживающий слияние на уровне элементов: давайте возьмем основную ветку M
и ветку клиента C
.Ветвь C
была разветвлена некоторое время назад, возможно, недели или месяцы назад, а M
значительно выросла.Теперь вам нужно сделать оперативное исправление для клиента и, следовательно, изменить код в C
.Кроме того, вам необходимо ввести изменение в M
.
. Наш рабочий процесс будет заключаться в том, чтобы выполнить полное, правильное исправление в M
, протестировать M
и выпустить новую версию продукта общего назначения.Затем мне нужно объединить соответствующие части исправления с C
, чтобы иметь возможность предоставить пользовательскую сборку для клиента, затронутого проблемой.Следовательно, мне нужно перевести некоторые изменения из M
в C
.Такая операция будет иметь следующие аспекты:
- некоторые файлы объединяются «как есть»,
- некоторые файлы объединяются вручную, но очень важно знать, что слияние произошло, *Файлы 1023 *
- , объединенные из
M
, не обязательно должны быть из самого последнего регистратора изменений в M
, они могут охватывать несколько наборов изменений.
Таким образом, чтобы иметь возможность отслеживать такую операцию при проверкеИстория хранилища, «потоки данных (кода)» между файлами должны быть записаны в каждом отдельном случае.Результирующий «набор изменений слияния» будет состоять из автоматических слияний 1: 1, а также слияний, скорректированных вручную.
ОБНОВЛЕНИЕ: Соотношение скорости и юзабилити: насколько я понимаю, вы делаете ставку на функциикак действительно хорошее слияние .И я держу пари, что большинство пользователей не будут заботиться о суперскорости - но они будут заботиться о действительно хорошем слиянии.
Около десяти лет назад добавление 1000 файлов в ClearCaseзаняло 10 минут.Потребовалась 1 минута, чтобы добавить их в Subversion.Вот почему мы выбрали Subversion вместо ClearCase.Однако, если бы ClearCase заняла 2 минуты, мы бы - скорее всего - выбрали ClearCase из-за его тогда еще лучших функций.
Если я получу хорошие, рабочие функции, которые поддерживают реальный мир разработка коммерческого программного обеспеченияСценарии Меня не волнует, будет ли это на 50% быстрее или медленнее, чем моя текущая VCS (Subversion).Но, с другой стороны, если вы предоставляете плохие функции и / или что-то, что блокирует юзабилити по сравнению с другими инструментами VCS, пользователи не переключатся.
Чтобы сделать вывод об объединении на уровне изменений или на уровне элементов: придерживайтесь свободы - и это, по крайней мере, с моей точки зрения, слияние на уровне элементов.