Нажмите на gerrit, используя SourceTree

Я не могу понять, как сделать SourceTree нажатием на Gerrit.

Я видел эту ссылку, но я до сих пор не понимаю, как это можно сделать: https://answers.atlassian.com/info/29361/configuring-sourcetree-push-for-gerrit

По-видимому, в соответствии с примечаниями к выпуску 1.3.3 есть способ сделать это, но я не могу понять: http://www.sourcetreeapp.com/update/ReleaseNotes.html#version-1.3.3

Есть ли пошаговое руководство где-нибудь, как это сделать?

Сейчас я запускаю эту команду на терминале, чтобы нажать

git push origin HEAD:refs/for/master

Ответ 1

Я считаю, что ответ, предложенный atlassian, говорит об изменении имени удаленной ветки, когда вы видите диалог Push.

  • Откройте диалоговое окно push
  • Нажмите имя удаленной ветки в столбце "Удаленная ветка" (мой сейчас "мастер" )
  • Введите новое имя ветки remo - для меня будет 'refs/for/master'
  • Нажмите "ОК".

Кажется, что это правильно переместило коммиты в Gerrit для меня. Проблема, которую я имею сейчас, заключается в том, что значение "refs/for/master" не сохраняется. Теперь, чтобы понять это. Я обновлю этот пост, как только узнаю об этом. Надеюсь, что это поможет даже опоздать на игру.

Обновление: выясняется, что вам нужно добавить кнопку push в удаленном начале в .git/config. Вы должны сделать это с помощью команды git config (чтобы я вручную отредактировал файл, я уверен, что это плохая практика). нажимаемая строка, которую я написал:

push = refs/heads/*:refs/for/*

для ясности здесь находится моя запись удаленного происхождения в .git/config:

[remote "origin"]
    url = ssh://gerrit-test.example.com:29418/mystuff.git
    fetch = +refs/heads/*:refs/remotes/origin/*
    push = refs/heads/*:refs/for/*

В SourceTree вы можете теперь нажать, и он будет нажимать на gerrit вместо окончательного репо. (теперь вы можете просто сделать git push без указания чего-либо еще, и он будет нажимать на gerrit). Обратите внимание, что после нажатия SourceTree по-прежнему будет показывать номер на кнопке "Push", в которой говорится, что у вас есть все, что нужно нажать. Это связано с тем, что он все еще извлекается из мастер-репо, и изменения, внесенные вами в gerrit, еще не объединены в master-репо. Как только ваши изменения будут объединены в мастер-репо, номер на кнопке исчезнет.

Ответ 2

Если у вас есть настройка с Git Поток (http://nvie.com/posts/a-successful-git-branching-model/) или аналогичный, вы часто хотите нажать свою локальную ветвь другая удаленная ветвь. В таком случае общее правило push (упомянутое mozart27) не будет работать, поскольку оно всегда подталкивает вашу локальную ветвь к соответствующей удаленной ветке.

Пример: У меня есть локальная ветвь "feature123", которая готова к просмотру (т.е. Gerrit). Наша интеграционная отрасль - это "происхождение/развитие". Если я использую правило общего толчка, тогда функция "feature123" будет нажата для просмотра на "origin/feature123", но я действительно хочу, чтобы он пересказывал ее для просмотра "origin/develop".

Решение: В SourceTree вы можете создать пользовательское действие:

Menu caption: Push for review
Script to run: cmd
Parameters: /c git push origin $SHA:refs/for/develop

Не забудьте добавить Git к вашему пути, чтобы позволить cmd использовать его.

Затем вместо нажатия кнопки "Push" вы щелкните правой кнопкой мыши фиксацию и выберите "Custom Actions → Push for review".

Конечно, эти 2 решения могут сосуществовать, имея общее правило push, гарантирующее, что вы всегда отправляете для просмотра при нажатии на удаленную ветвь и настраиваемое действие, когда вы хотите отправить ветвь функции для просмотра на ветке интеграции.