2012-03-29 49 views
11

SourceTreeをGerritにプッシュする方法がわかりません。 SourceTreeを使用してgerritにプッシュ

私は、このリンクを見ましたが、私はまだそれを行うことができる方法を理解していない: https://answers.atlassian.com/questions/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 

答えて

27

をプッシュするために、端末上でこのコマンドを実行し、私はアトラシアンが提供する答えはあなたがプッシュダイアログが表示されたときにリモートブランチの名前を変更すると言うと信じています。

  1. オープンプッシュダイアログ
  2. 新しいレモの支店名で「リモートブランチ」欄(私が「マスター」現在です)
  3. タイプの下にリモートブランチ名をクリック - 「レフリーだろう/ for/master 'for me
  4. [OK]をクリックします。

これは、コミットをGerritに適切にプッシュしたようです。私が今問題にしているのは、 'refs/for/master'の値が維持されないということです。今それを理解する。私はそれを理解したら、この投稿を更新します。これがゲームに遅れているのにも役立つことを願っています。

更新:.git/configのリモートオリジンの下にプッシュエントリを追加する必要があることが判明しました。 git configコマンドでこれを行う必要があります(私は手動でファイルを編集しましたが、これは悪い習慣であると確信しています)。私が書いたプッシュラインは次のとおりです。ここではわかりやすくするために

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

は.git/configに私のリモートoriginエントリです:SourceTreeで

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

あなたが今プッシュすることができ、それは代わりのヘリットにプッシュします最終レポ。 (もう何も指定せずにgit pushを実行することができ、gerritにプッシュされます)。プッシュした後でも、SourceTreeはプッシュボタンにまだプッシュするものがあるという番号を表示します。これは、まだマスターレポからフェッチしているため、あなたがgerritにプッシュした変更がまだマスターレポに統合されていないためです。変更がマスターレポにマージされると、プッシュボタンの番号は消えます。

+1

リモートブランチ名を変更できましたが、ローカルブランチではなく、HEADではなくマスターを使用していたので、それは役に立ちませんでした。 更新されたコメントは私の.git/configの 'push'行を追加して助けてくれました。 – 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/)などの設定をしている場合、ローカルブランチを別のリモートブランチにプッシュしたいことがよくあります。そのような場合、一般的なプッシュルール(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 

は、それを使用するCMDを有効にするために、あなたのパスにGitリポジトリを追加することを忘れないでください。

次に、「プッシュ」をクリックする代わりに、コミットを右クリックし、「カスタムアクション - >プッシュしてレビューする」を選択します。

これらの2つのソリューションは共存することができます。一般的なプッシュルールを使用すると、リモートブランチにプッシュするときに常に確認用に送信し、統合ブランチでレビューするために機能ブランチを送信するときにカスタムアクションを実行できます。

関連する問題