2016-10-28 4 views
5

私のチームはgithubとsourcetreeを使用してワークフローを管理しています。最近、githubのスカッシュマージ機能を試し始めました。私たちは本当に私たちの仕事の歴史をきれいに保つ方法が本当に好きであり、本質的にPRごとに1つのコミットを持っています。スカッシュ使用時にブランチがマージされているかどうか判断できません

スカッシュコミットを使用すると予期せぬ欠点の1つは、ローカルブランチをいつ削除できるかを知ることが難しいことです。私のチーム全体は、コミットされたことをコミットグラフで視覚的に見ることができることに基づいて地元の支店を管理していると思われます。数日おきに地元の支店を1つずつ調べて、それがあればローカルで削除してください。スカッシュマージを有効にすると、このビジュアライゼーションが削除され、ブランチがマージされたかどうかを判断することが困難になります。

スカッシュコミット機能を使用するのが本当に好きですが、ブランチがマージされていてローカルで削除するのが安全かどうかを判断する信頼できる方法が必要です。私たちがこれを達成するために考えなかった良い方法がありますか?

+0

シェルにアクセスできる場合は、 'git diff 'を実行できます。または、どのコミットがマージであるかを知ることができない場合は、おそらく 'git checkout ; git rebase origin/master; git diff HEAD origin/master' – 0x5453

+0

githubとsourcetreeは '--first-parent'オプションを提供していませんか?リニアライズされた履歴は見やすくなりますが、より正確に「ロボタイマー化」されています。時にはそれだけで必要なものはすべてありますが、これは人生の手段としての制限です。 – jthill

+0

@ 0x5453各ブランチのgitコマンドを実行しても、非常にスケーラブルなソリューションのようには見えません。すべてのローカルブランチを繰り返し処理し、マージされたものを削除するスクリプトなどを作成する必要があります。それはうまくいくかもしれません。 jthill私は彼らがそう信じていません。 – spierce7

答えて

4

私のチーム全体を視覚的に見ることができることに基づいて、地元の支店を管理するように思わ

ここでこの権利は、実際の問題であると思われるが、それがマージされていますことをグラフにコミット。既にGitHubプルリクエストワークフローを使用している場合は、プルリクエストのステータスがこの質問に対する正式な回答である必要があります。 PRは受け入れられましたか?良い!支店が統合され、あなたの人生に移動します。あなたが検討する必要があります


1つのオプションは、あなたが唯一のシングルコミットプル要求を受け入れているワークフローを採​​用する(そしておそらく強制)されます。ローカルリポジトリで何をしたいのかを人々に教えてもらいますが、プルリクエストを提出するときには、提出する前に適当なコミットを一緒にスクアッシュします(リベースワークフローをローカルで自由に使用して、プルリクエストを変更する必要がある場合にローカルに更新します)。

これは、GitHubでコミットを合成しなくなるため、「視覚的検査」メソッドが引き続き機能するという利点があります。


更新私がコミット与えSHAに関連したプルリクエストがクローズされているかどうかを判断するために一緒にGitHubのAPIを使用していますa small toolを入れている

。あなたの$PATHどこかにgit-is-mergedスクリプトをドロップした後、あなたが行うことができますこの:

$ git checkout my-feature-branch 
$ git is-merged 
All pull requests for 219e0f04a44053633abc947ce2b9d700156de978 are closed. 

または:

  • ませプル:

    $ git is-merged my-feature-branch 
    All pull requests for 219e0f04a44053633abc947ce2b9d700156de978 are closed. 
    

    スクリプトが用ステータステキストと終了コードを返します。要求が存在する

  • すべてのプルリクエストは閉じています
  • いくつかのプル要求が閉じている
  • すべての要求が潰れたコミットのために

開いているプル、あなたはつぶれのコミットSHAコミットオリジナルのプルリクエストまたはの一部であったコミットシャスのいずれかを使用することができます。

このツールは公開されたリポジトリでのみ動作しますが、認証をサポートするPyGithubモジュールを使用しています。

+0

問題は、PRが受け入れられたかどうかを管理することが難しいことです。 PRがマージされるとすぐにローカルブランチを削除しません。はい、GithubでPRをブランチに一致させるのは簡単ですが、PRがマージされてから1週間後には、削除する必要のある12のローカルブランチがあります。 github、合併を確認して削除することができます。 単一のコミットプル要求は興味深い考えですが、特定のPRで変更が要求されたときには強制するのが難しくなります。 – spierce7

+0

質問に答えるためにGitHub APIを利用するソリューションで私のアップデートを見てください。 – larsks

関連する問題