5

「p4 resolve」によって示される差分チャンクに基づいて解決決定を行うシェル スクリプトを設計したい

私のスクリプトの現在の状態は次のようなものです-

p4 integ -b @=CL #これにより、デフォルトの CL でファイルが開かれます。

p4 resolve #デフォルト CL で開かれたファイルを 1 つずつ解決するようになりました

現在、私の問題は、p4 resolve を使用すると、その出力をファイルにリダイレクトしたり、diff チャンクを読み取ったりできないことです。これは、1 つのファイルの diff チャンクを表示し、解決の決定のためにユーザー入力を待機するためです。私はスクリプトが非常に明白な決定を下すことを望んでいます。

では、デフォルトの CL でファイルの差分チャンクを見つける方法はありますか? とにかく、これらの差分チャンクを読んで、これらの明らかな解決決定を下すことができますか?

4

3 に答える 3

2

似たようなことをしたかったのです。関連する開発エンジニアに情報を送信できるように、Jenkins ジョブで実際の競合を出力します。

jwd による便利な p4-dump-conficts スクリプトに気付きました。それに基づいて、おそらく次で十分です

echo -e "d\ns\n" | P4EDITOR=cat p4 resolve

(つまり、p4 を (d)iff に解決してから (s)kip に解決し、catを使用して結果を出力します。これは、ワークスペース内のすべての「保留中」ファイルに対して機能します)

于 2016-04-15T07:17:02.220 に答える
1

最近、同様のニーズがあり、シェルスクリプトを使用してソリューションをハックしました。

私にとっての問題は、p4 resolveインタラクティブにしたいということでしたが、ファイル内の競合を確認したかっただけです。

p4 resolve -fPerforceでファイルが解決済みとしてマークされるため、実行したくありませんでした。

競合を表示したかっただけで、実際に解決することなく、他の誰かに電子メールで送信したかっただけです。(e)ditのおよび(s)kipコマンドを使用して対話的にこれを行うことができますがp4 resolve、私はハンズオフ バージョンが必要でした。

このスクリプトを次の名前で保存しますp4-dump-conflicts

#!/usr/bin/env bash

function cat_to_file() {
    cat "$@" > "$OUTFILE"
}
export -f cat_to_file
destFileName=$(dirname "$1")/CONFLICTS_$(basename "$1")
OUTFILE="$destFileName" P4EDITOR=cat_to_file p4 resolve "$1" <<END_INPUT
e
s
END_INPUT

を実行すると、競合マーカーを含む がp4-dump-conflicts myfile出力されます。CONFLICTS_myfileただし、ファイルは Perforce で未解決のままになります。

注: そのままの状態で、1 つのファイルに対してのみ機能します。

特にあなたの質問については、 CONFLICTS_xxx ファイルを必要に応じて処理し、その結果を最終的なマージ解決に使用できます。

于 2015-08-27T18:46:32.013 に答える
1

はい、 を使用して、入力を求めたりアクションを実行したりせずにp4 resolve -n、 と同じ出力を印刷できます。p4 resolve docsp4 resolveから:

-n 実際に解決を実行せずに、解決が必要なファイルをリストします。

于 2014-09-02T22:14:35.747 に答える