一部のパス名にスペースが含まれているシステムがあります。これらはコア コードの一部であるため、名前を変更することはできません。コマンド ライン コマンドを呼び出すツールでこれを処理するには、二重引用符のセットを追加するだけでした。
しかし、Build Forge アダプターが使用する xml コードでこれを処理する方法が見つかりませんでした。
たとえば、アダプタに次のコマンドを実行させようとする場合:
cleartool describe "foo bar"@@\main\1
コードは次のようになります。
<match pattern="^(.*?)\@\@(.*?)$">
<run command="cc_describe" params="$1 $2"/>
<command name="cc_describe">
<execute>
pushd cleartool desc $1@@$2;
</execute>
</command>
$1 = "foo bar" および $2 = "\main\1" と仮定します。
実行時には、最初のパラメーターにスペースが含まれているため、2 番目のパラメーターはもちろん無視されます。
Preparsing Command Set: [pushd cleartool desc $1@@$2], using Params: 'foo bar main\1'.
Command Set Parsed To: [pushd cleartool desc "foo@@bar"]
呼び出しコマンドに二重引用符を追加して、これを修正しようとしました:
<run command="cc_describe" params=""$1" $2"/>
二重引用符はコマンドになりますが、違いはありません。
Preparsing Command Set: [pushd cleartool desc $1@@$2], using Params: '"foo bar" \main\1'.
Command Set Parsed To: [pushd cleartool desc "foo@@bar"]
試行された解決策: @@ を呼び出しコマンドに移動し、受信コマンドから削除し、追加のパラメーターを追加します (1 つのスペースを処理できるようにするため):
<run command="cc_describe" params="$1@@$2"/>
<command name="cc_describe">
<execute>
pushd cleartool desc $1$2$3;
</execute>
</command>
実行結果:
Preparsing Command Set: [pushd cleartool desc $1@@$2$3], using Params: 'foo bar \main\1'.
Command Set Parsed To: [pushd cleartool desc "foobar@@\main\1"]