2013-12-16 14 views
8

this answermy own questionに続いて、私は単純な(そう望む)質問があります。なぜGerritがブランチを単独で作成できないのですか?

私が正しく設定されているすべての必要な参照文献で、特定のブランチをプッシュしていた場合:

git checkout 82-blah-blah 
git push origin HEAD:refs/for/82-blah-blah 

は、なぜ私は常に入手できます:

! [remote rejected] HEAD -> refs/for/82-blah-blah (branch 82-blah-blah not found) 

と私はいつもヘリットのUIに行かなければならないとそのブランチを手動で作成しますか?

Gerritが簡単に自動化できるのは明らかなステップではありませんか?または私は何かを逃していますか?

+0

まず最初にブランチ自体を作成するための直接的なプッシュを行います – HiB

+0

私が行うと、ブランチが作成されますが、変更自体は(Gerritの)**では発生しません。混乱、この状況を修正することはできません。これらの2つの質問を参照してください:[1](http://stackoverflow.com/q/20542903/1469208)と[2](http://stackoverflow.com/q/20606552/1469208)。 – trejder

+1

最初に新しい変更を加えずにローカルブランチを作成します - 'git checkout -b origin/master'そしてリモート:' git push origin 'またはGerrit UI – HiB

答えて

1

この機能は、最近、was implementedで、Gerrit v2.9で利用可能になります。

+1

OMG!そのような基本的な、基本的な機能が実装されていないバージョン '2.9'まで! :] – trejder

+3

AFAICT新しいブランチの作成Gerrit 2.9で利用できるRESTとSSHコマンドは元の問題を解決しません。手動でブランチを作成する2つの新しい方法ですが、1日目以降は 'git push 'を使ってブランチを作成することができます。私は、これが基本的で基本的な機能であると@trejderが考えるのは、ブランチの作成は、変更をアップロードするときに多かれ少なかれ実行される一般的な作業であるという誤解に由来すると考えています。できなくなった。 –

+0

@MagnusBäck:あなたは間違っています。このコミットがレビューをパスした後、新しい機能がターゲットブランチ*を作成します。これはOPが欲しいということです。 – mvp

17

ユーザーがSSHを使用して分岐を作成できる機能を示しています。追加するのはCreateBranchCommandです。元のissue requestは、実際に@trejderが望むものを参照するかもしれませんが、実装はSSHコマンドによるブランチの作成に過ぎません。

私は、あなたが作成した参照権を持っていれば、ref/for/new-branchにプッシュできるという印象を受けましたが、間違っていてテストしただけで動作しません。新しいブランチを作成することができますが、直接ブランチにプッシュすることができます。

git checkout master 
git push origin HEAD:new-branch 
git checkout new-branch 
git push origin HEAD:/refs/for/new-branch 
+1

私の答えは間違っているわけではなく、新しいGerrit機能はOPが求めているものとまったく同じです。 [これを注意深く読んでください](http://code.google.com/p/gerrit/issues/detail?id=1156):私が本当にGerritでできることを望んでいるのは、 'git push origin HEAD:refs/for/some-new-branch'を実行し、プッシュされたコードがレビューを渡すと、新しいブランチを作成します。 – mvp

+2

私はmvpに同意する必要があります。私は実際に、なぜジェリットが自動化できるのか、同じことをするためにUIを使わなければならないのかと問いかけています。 Git BashとGerritのUIの両方で同じブランチ名_を正確に使用するために 'Ctrl + C'、' Ctrl + V'を使用していると仮定して、ブランチ名の綴りを間違えたり、 Gerritが私のためにそのプロセスを自動化するかどうかは、私が持っているように。 – trejder

+3

私はtrejderが何を望んでいるのかはっきりしていると思います。[issue 1156](https://code.google.com/p/gerrit/issues/detail?id=1156)の元の機能要求が要求されていますが、問題の修正が最初に要求されたとおりに実装されたという証拠はありません。別のコメントに示されているように、[Change 52500](https://gerrit-review.googlesource.com/52500)は、問題の最後の段落で説明したバックアップ計画のみを実装します。 –

0

は、新しい枝が "myNewBranch"

git checkout master 
git push origin HEAD:myNewBranch 

をした後、新しいコミットをプッシュするいくつかの変更をコミットしているとしましょう::

git push origin myNewBranch 

はそれを成し遂げるための最速の方法があると思います

私のために働きます。しかし..

私は同じレビューをマスターで公開すると、 "myNewBranch"に同じコミットをプッシュすることはできません。そうするためには、広報担当者を捨てて、新しい地元支店にチェリーピックアップしてから、リモート "myNewBranch"にプッシュしなければならなかった。

幸い!

関連する問題