Я должен признаться, что не использовал патчи много, так что это может быть не правильный рабочий процесс, но я бы попытался, если бы я был в этой ситуации, было применить исправление к набору изменений, изначально основанному на нем.
Других слов, это звучит, как у вас есть следующий случай:
+-- 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--------/
Если Сопровождающие Теперь тянуть от вас, они получают ту же самую историю в их хранилище.
Существует также некоторая поддержка для перераспределения, что означало бы, что вам не нужно было тянуть и сливаться, но сопровождающие выдавали команду «pull with rebase», по сути перемещая ваш набор изменений с его текущего положения на новый положение в их хранилище, это будет выглядеть так:
central: 1--2--3--4--5--6---7
^
clone: 1--2--3 | relocated here
| |
+------------+
Это будет работать только, если нет конфликтов слияния. Метод, в котором вы вытягиваете и объединяете, является лучшим для них, поскольку вы выполняете всю тяжелую работу, им нужно только убедиться, что код - это то, что они хотят.
Для получения дополнительной информации о форкинге, ознакомьтесь с видео Tekpub на CodePlex и Mercurial, здесь: , найдите около 21:15 для начала форсирования.
Обратите внимание, что «вилка» в основном является клоном, способ работы с файлами в CodePlex заключается в том, что он автоматизирует настройку клона в вашей собственной учетной записи и отправляет оригинальным сопровождающим запрос на вытягивание, но если вы создаете свой собственный учетной записи на Bitbucket или CodePlex или что-то еще, опубликуйте свой клон там и просто отправьте сопровождающим электронное письмо с URL-адресом репозитория, вот и все.
Как об обновлении обратно в ревизией патч был построен для, применяя его, совершая его, а затем слияние его с головой? –
@ Lasse благодарит за предложение. Я попробую и отправлю отчет. Это может стоить опубликовать в качестве ответа, так что легче поднять – greatwolf