Создание запроса на вытягивание из определенного коммита через службы группы VS

Я пытаюсь создать запрос на перенос из определенного коммита. Является ли это возможным?

Подробно:

В ветви b1 есть фиксация c1, c2, c3, и фиксация c3 также находится в ветви b2. Создайте запрос на перенос, чтобы объединить коммит c2 в ветку b2.

Мои неудачные попытки:

  • Создайте новую ветку из определенного коммита, не удалось найти для этого API служб VS team.
  • Создайте тег для конкретной фиксации, не знаю как, только нашел получить api тега.
  • Создайте временную ветвь b3 от b2, выберите «вишневый», зафиксируйте c2 на b3 и создайте запрос на перенос от b3 к b2. Я не вижу способа выбрать существующую фиксацию в ветке из официальный документ.

person mosyu    schedule 08.10.2016    source источник
comment
На сервере нет специальной команды для Cherry Pick. Выбор вишни - это просто фиксация. Вам нужно будет создать желаемый коммит и передать его остальному API.   -  person jessehouwing    schedule 08.10.2016
comment
@jessehouwing Я обновил вопрос. Не могли бы вы взглянуть? Я тоже пробую ваше предложение.   -  person mosyu    schedule 08.10.2016
comment
Самый простой способ сделать это - клонировать репозиторий локально, выполнить команды и отправить их обратно в службу. Прямо сейчас REST API работает только для коммитов простых типов, и всю тяжелую работу должны делать вы. Намного проще позволить обычным инструментам командной строки справиться с этим.   -  person jessehouwing    schedule 08.10.2016
comment
Это можно сделать следующим образом: клонировать целевую ветку, создать новую ветку на ее основе, выбрать фиксацию, зафиксировать, нажать новую ветку, создать запрос на перенос.   -  person jessehouwing    schedule 08.10.2016
comment
Спасибо за ответ @jessehouwing. Да, это можно сделать с помощью местного репо. Но я хочу добавить это в систему непрерывной интеграции, таким образом, мне нужно клонировать код на стороне сервера и поддерживать этот код в актуальном состоянии.   -  person mosyu    schedule 08.10.2016
comment
Да, придется. Но кроме создания коммита самостоятельно и выполнения всех слияний самостоятельно, нет никакого способа сделать это. Серверный API выглядит глупо и не выполняет слияния, разрешения конфликтов и т. Д. Он просто перезаписывает контент или применяет патч, который вы отправляете. Поскольку вы выполняете CI, разве репо еще не доступно? Или вы обновляете другое репо? Разве вы не можете добавить другое репо в качестве удаленного к тому, которое у вас есть локально, и решить все проблемы локально, а затем нажать?   -  person jessehouwing    schedule 08.10.2016
comment
У этого CI нет локального репо :) Он просто вызывает другую существующую службу, чтобы завершить ее глобальную. По вашему предложению. Я согласен, это самый простой способ. Спасибо!   -  person mosyu    schedule 08.10.2016
comment
Давайте продолжим это обсуждение в чате.   -  person mosyu    schedule 08.10.2016


Ответы (1)


Поскольку REST Api не имеет каких-либо функций для выполнения слияний или разрешения конфликтов, все, что связано с слияниями, перемещениями, выбором вишен и т. Д., Необходимо выполнять локально, прежде чем отправлять данные фиксации обратно в VSTS.

Самым простым решением было бы выполнить клонирование целевого репо, а затем выполнить изменения, прежде чем возвращать их.

В зависимости от того, чего вы пытаетесь достичь, может хватить неглубокого клона, хотя, если вы хотите выбрать старые коммиты, это может не сработать для вас.

person jessehouwing    schedule 09.10.2016