Я смотрю Mercurial-хранилища некоторых известных продуктов, например TortoiseHg и Python, и хотя я вижу, что несколько человек совершают изменения, временная шкала всегда выглядит довольно чистой, только одна ветвь движется вперед.
Однако скажите, что у вас 14 человек, работающих над одним и тем же продуктом, не скоро ли они попадут в ветхий кошмар с 14 параллельными ветвями в любой момент времени?
Например, только с двумя людьми и с продуктом в редакторе X теперь обе разработчики начинают работать над отдельными функциями в понедельник утром, поэтому оба начинаются с одного и того же родительского набора изменений.
Когда они фиксируют, теперь у нас есть две ветки, а затем с 14 людьми, у нас быстрая ветка 10+ (возможно, не 14...), которые должны быть объединены обратно в значение по умолчанию.
Или... Что я не вижу здесь? Возможно, это не проблема?
Изменить. Я вижу там некоторую путаницу в отношении того, о чем я действительно спрашиваю здесь, поэтому позвольте мне уточнить.
Я полностью и хорошо знаю, что Mercurial легко обрабатывает несколько ветвей и объединяется, и, как говорится в одном из ответов, даже когда люди работают над одними и теми же файлами, они не часто работают на одних и тех же строках, и даже тогда конфликт легко обрабатывается. Я также знаю, что если два человека создают адский ад, потому что они меняют много одного и того же кода в одних и тех же файлах, здесь наблюдается общая ошибка планирования, поскольку мы разместили две функции в одном и том же месте на двух разработчиков, вместо того, чтобы, возможно, пытаться их работать вместе или просто дать как одному разработчику в первую очередь.
Так что не это.
Мне интересно, как этот проект с открытым исходным кодом управляет такой чистой историей. Мне не важно (как один комментарий задавался вопросом), что история чиста, я имею в виду, что мы работаем параллельно, что репозиторий способен отражать это, тем лучше (на мой взгляд), однако эти хранилища я ' ve посмотрел, не имеет этого. Похоже, что они работают по модели Subversion, где вы не можете зафиксировать ее до того, как будете обновлены и объединены, и в этом случае история будет только одной прямой.
Итак, как они это делают?
Являются ли они "переустановкой" изменений, чтобы они, по-видимому, следовали за последним концом ветки, хотя первоначально они были немного исправлены в истории веток? Пересадить изменения, чтобы заставить их казаться "совершенными в основной ветке, чтобы начать?"
Или проекты, на которые я смотрел так медленно (на данный момент, я не смотрел далеко назад в истории), добавляя новые вещи, которые на самом деле они работали только один человек за раз?
Или они подталкивают изменения к одному центральному разработчику, который просматривает, а затем интегрирует? Это не похоже на то, что многие из проектов, на которые я смотрел, имели разные имена в наборах изменений.