2012-03-29 4 views
11

Я не могу понять, как заставить PushTree нажать на Gerrit.Push to gerrit using SourceTree

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

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

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

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

git push origin HEAD:refs/for/master 

ответ

27

Я считаю, что ответ предоставляется Atlassian говорит, чтобы изменить имя удаленного филиала, когда вы увидите диалоговое окно принудительного.

  1. Открыть толкающий диалог
  2. Нажмите на имя удаленного филиала в колонке «Remote Branch» (шахта в настоящее время «мастер»)
  3. Введите новое имя Remo филиала - который был бы «рефов/for/master 'для меня
  4. Нажмите OK.

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

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

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

здесь для ясности моего удаленный ввод координат в .git/конфигурации:

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

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

+1

Мне удалось изменить имя удаленной ветви, но это не помогло, поскольку он использовал мастер для локальной ветви, а не HEAD. Но ваши обновленные комментарии действительно помогли, добавив строку «push» в моем .git/config. – JoseM

+7

Еще раз спасибо. Вот как это сделать с помощью команды git config: 'git config remote.origin.push refs/heads/*: refs/for/*' – JoseM

+0

nice. намного лучше с помощью соответствующего инструмента командной строки. – mozart27

1

Если у вас есть установка с Git Flow (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», щелкните правой кнопкой мыши фиксацию и выберите «Пользовательские действия -> Нажмите для просмотра».

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

Смежные вопросы