この質問は本質的にはすでに尋ねられていることを理解していますが、その質問には明確な答えがありませんでしたので、ご容赦ください.
背景: 私の会社では、バージョン管理の一環として Perforce 提出番号を使用しています。この方法が正しいかどうかは別として、そういうものです。現在、多くの開発者はコードとドキュメントを別々に提出しています。最初にコードを提出し、次にドキュメントを提出して、新しいバージョン番号でクライアント向けドキュメントを更新します。このプロセスを簡素化したいと思います。
私の考えは次のとおりです: Perforce トリガー (サーバー側で実行される) を作成し、提出されたドキュメント ファイル ( など) をスキャンし.txt
て一意の用語 ( など#####PERFORCE##CHANGELIST##NUMBER###ROFL###LOL###WHATEVER#####
) を探し、それを変更リストの値に置き換えます。提出時。 この値を決定する方法はすでに知っています。 私が理解できないのは、ファイルを更新する方法または場所です。
change-content
トリガーを使用することを(可能かどうかに関係なく)すでに決定しています。
"変更リストの作成とファイル転送の後、データベースへの送信をコミットする前に発生",
行く方法です。この時点で、ファイルはサーバー上のどこかに存在する必要があります。sed
プレースホルダーの値を更新したり、意図した値に置き換えたりできるように、たとえば Python スクリプト内からこれらのファイルの (一時的な?) 場所を特定するにはどうすればよいですか? これまでに見つけた Perforce のオンライン ドキュメントでは、これが可能かどうか、またはこの段階での提出の仕組みがどのように機能するかについて、あまり明確ではありませんでした。
編集
基本的に私が探しているのは、RCS のような機能ですが、それに付随する見苦しい特殊文字シーケンスはありません。さらに掘り下げた後、私が求めているのはこの質問と同じです。ただし、トリガーはサーバー側で実行されており、ファイルは既にサーバーに転送されているため、これは可能であるに違いないと思います。したがって、スクリプトからアクセスできる必要があります。
例
リリース ノート ドキュメントからの次のスニペットを検討してください。
[#####PERFORCE##CHANGELIST##NUMBER###ROFL###LOL###WHATEVER#####] Added a cool new feature. Early retirement is in sight.
[52702] Fixed a really annoying bug. Many lives saved.
[52686] Fixed an annoying bug.
これはユーザーが提出するものです。次に、送信プロセス中に (前述のように、change-content
ステージで) トリガーがこのファイルをインターセプトし、Perforce 内に最終的に格納されるものが次のようになるように変更します。
[52738] Added a cool new feature. Early retirement is in sight.
[52702] Fixed a really annoying bug. Many lives saved.
[52686] Fixed an annoying bug.
52738は、ユーザーが送信した変更リストの最終番号です。(前述のように、この数は既に特定できているので、この点については詳しく説明してください。) つまり、ユーザーが Perforce クライアント コンソールで見るのは、次のようなものです。
Changelist 52733 renamed 52738.
Submitted change 52738.