2012-04-24 9 views
7

私のプロジェクトでgithubのようなフォーク/プルリクエスト機能を実装するには、自動マージ機能がプルリクエストを表示しているたびにソース/ターゲットリポジトリ間の競合を検出する必要があります。2つのgitリポジトリ間の競合を検出する方法。

「git request-pull」の出力を分析する方法が1つあります。競合を検出する簡単な方法はありますか?私は私の前の回答を削除した

+0

ここでは何が尋ねられていますか?マージツールを実装していますか?またはdiff-viewingツール?あるいは、単に「git push」が何をするつもりか不思議に思っていますか? –

+0

githubでは、web上のボタンをクリックするだけで、衝突のないプルリクエストをマージすることができます。ソース/ターゲットリポジトリはコミットし続ける可能性があるため、このプロセスでは競合の検出が必須です。私は競合を検出する簡単な方法を求めています。 – stcatz

答えて

-2

最後に、私は、競合を検出するために、私自身の機能を書きました。

すべての差分行をフェッチして、同じ変更があるかどうかを比較するだけです。

+2

将来の参考のためにここに掲載することは素晴らしいことです – CharlesB

2

、私は質問を理解していなかった...

は今ここにピカピカの新しい答えます:競合がない場合は、マージを行います

git merge --ff-only <branch> 

。競合が発生した場合は、Not possible to fast-forwardというメッセージが表示されます。この場合、コンソールの戻りコード(echo $?)は128です。

+0

これは質問にはあまり関係ありませんが、フェッチ後にマージする際にはうまくいきます。 –

0

私が知る限り、実際にこれらのブランチをマージするまで、マージで競合が発生するかどうかはわかりません。

これはすでにHow to test a merge without actually merging firstで指摘されていました。

このような機能を実装する必要がある場合は、ソース/ターゲットをマージし、マージするアクション(git reset --hardを使用)をロールバックすることをお勧めします。

私はgit request-pullを一度も使用していませんでしたが、出力を見ても、問題の解決に役立つ情報はありません。おそらくgit diffgit wtfgit remote show <name>を使用して同じ結果を得ることができます。

参考文献:

1

最新のプッシュコミットと既存のすべてのブランチをチェックするgit-conflict-detectorを作成しました。

これは、GitHub WebHook URLによって開始され、競合が検出されたときにHiChat通知を送信することを知っている単純な単一のスクリプトです。

我々はあなたが我々はそれはとてもすべて、楽しんで学び、貢献することができるオープンソースをしましたhere

を見ることができるようにgit merge --ff-only <branch>出力を分析する上で、当社のソリューションをベース。

関連する問題