Я должен признаться, что не использовал много патчей, так что это может быть не правильный рабочий процесс, но я попытался бы, если бы в этой ситуации применил патч к ревизии, на которой он изначально был основан.
Другими словами, похоже, что у вас есть следующий случай:
+-- you're here
|
v
1---2---3---4---5---6
\
\
X <-- patch was built to change 2 to X
Что бы я сделал, при условии, что я знаю, что набор изменений, на котором изначально был патч, будет обновляться до этого набора изменений, применять патч, это добавит еще одну головку, а затем объединит ее с кончиком вашего хранилища.
После этих действий хранилище должно выглядеть так:
+-- you're here
|
v
1---2---3---4---5---6---8
\ /
\ /
7-------------/
^
|
+-- this is the changeset you committed after applying the patch
Теперь по другому.
Является ли использование патча единственным способом? Один из распространенных способов использования Mercurial заключается в том, что вы настраиваете свой собственный репозиторий, форк, изначально содержащий полный клон центрального репозитория, но у вас есть доступ для фиксации.
Таким образом, вы можете зафиксировать свои новые наборы изменений в своем собственном клоне.
Если в центральном хранилище добавлены новые наборы изменений после вашего клона, в какой-то момент вы извлекаете его из своего клона и объединяетесь.
Затем, когда вы удовлетворены, вы отправляете запрос на извлечение для сопровождающих центрального репозитория, говоря им: «Эй, у меня есть некоторые изменения для вас, вы можете извлечь их из моего клона здесь: http: //. .. ".
Таким образом, сопровождающим действительно легко получить все, поскольку вы сделали всю тяжелую работу для них.
Это будет означать, что у вас есть два таких хранилища:
central: 1--2
clone: 1--2
Вы добавляете свою работу:
central: 1--2
clone: 1--2--3
Они добавляют несколько наборов изменений:
central: 1--2--3--4--5--6
clone: 1--2--3
Тогда вы тянете:
central: 1--2--3--4--5--6
clone: 1--2--4--5--6--7
\
\
3 <-- this is your changeset
Тогда вы сливаетесь:
central: 1--2--3--4--5--6
clone: 1--2--4--5--6--7--8
\ /
\ /
3--------/
Если сопровождающие теперь отстраняются от вас, они получают ту же историю в своем хранилище.
Существует также некоторая поддержка для перебазирования, что означает, что вам не нужно тянуть и объединять, но сопровождающие будут выдавать команду «вытягивать с ребазой», в результате чего ваш набор изменений из текущей позиции переместится в новую позицию. в их хранилище это будет выглядеть так:
central: 1--2--3--4--5--6---7
^
clone: 1--2--3 | relocated here
| |
+------------+
Это будет работать, только если нет конфликтов слияния. Для них лучше всего использовать метод слияния и объединения, поскольку вы выполняете всю тяжелую работу, им нужно только убедиться, что код соответствует их желанию.
Для получения дополнительной информации о разветвлении, посмотрите видео Tekpub о CodePlex и Mercurial, здесь: Tekpub: 7 - Mercurial С CodePlex , ищите около 21:15 для начала разветвления.
Обратите внимание, что "форк" - это просто клон, способ разветвления работает в CodePlex, это то, что он автоматизирует настройку клона на вашей собственной учетной записи и отправляет оригинальным сопровождающим запрос на извлечение, но если вы создаете свою собственную учетную запись в Bitbucket или CodePlex или где-либо еще, опубликуйте там свой клон и просто отправьте сопровождающим письмо по электронной почте с вашим URL-адресом хранилища, и это все, что нужно.