2017-03-01 5 views
0

特定の名前を持つサブフォルダを別のフォルダに移動するためのコードを記述しようとしています。変更、コピー、同期、削除コマンドを使用しましたが、何が間違っているのか分かりません。PERFORCEコマンドを使用してあるフォルダから別のフォルダにファイルを移動できません

このコードを実行すると、私のPerl Tk GUIが "Released xxx"を吐き出しますが、フォルダは実際には移動しませんでした。同時に、これらのコマンドを実行すると、ファイルがP4Vに存在することさえも特定できません。

移動を扱うコードスニペットは次のとおりです。

my $changelistnumber 
    = qx{(p4 change -o | findstr /C:Description: /C:Change: /C:Client: /C:User: /C:Status: & echo Released $folder) | p4 change -i}; 

$changelistnumber =~ s/[^0-9]//g; 

my $printOutput 
    = qx{p4 copy -c $changelistnumber -v //syseng/Libraries/Concept/request_for_approval/$libfolderUnreleased/$folder/... //syseng/Libraries/Concept/released/$libfolder/$folder/...}; 

print "Hello!"; 

$printOutput 
    = qx{p4 sync -k //syseng/Libraries/Concept/request_for_approval/$libfolderUnreleased/$folder/...}; 

print "Hello1"; 

$printOutput 
    = qx{p4 delete -c $changelistnumber //syseng/Libraries/Concept/request_for_approval/$libfolderUnreleased/$folder/...}; 

print "Hello2"; 

$printOutput = qx{p4 submit -c $changelistnumber}; 

$d->Label(-text=> "Released $folder")->pack(); 
+0

パス名の後ろにある3つのドット '...'の目的は何ですか? –

+0

P4Vのドキュメントでそのコマンドがどのように指定されているのですか? - https://www.perforce.com/perforce/r16.2/manuals/cmdref/p4_copy.html – Shashank

+2

@HåkonHægland、p4の表記は、 "ここのすべてのファイルと子孫サブディレクトリ " – ikegami

答えて

2

実行中のさまざまなコマンドの出力を見ると便利です。チェンジリストが送信されない場合は、どこかにエラーメッセージが表示されます。このシナリオをコマンドラインから一度に1つずつ実行することをお勧めします。そのため、スクリプトを作成する前に各コマンドの出力がどのようになっているかを確認することをお勧めします。

私は、頭の上から外して、これらの文字の一部をエスケープしたり、%change%がp4 -Ztag changeの出力から取得するための正しいフィールドであることを確認する必要があるかもしれません):

$changenumber = `p4 --field "Description=I moved it!" change -o | p4 -Ztag -F %change% change -i`; 

私はまた、あなたが冗長な同期を行うことなく、ファイルのローカルコピーを持っているしたい場合は(moveコマンドはファイルだけを移動しますmove代わりのcopy -v + deleteを使用してお勧めしたいクライアント - 既に同期されている場合は側:

p4 sync //depot/oldpath/... 
p4 edit //depot/oldpath/... 
p4 move //depot/oldpath/... //depot/newpath/... 
p4 submit -d "I moved it!" 
+0

findstrは、Windowsバッチファイルプログラミングのgrepに似ています。/C:フラグで指定された文字列のいずれかと一致するすべての行が出力されます。彼は、Description:が最後に書かれたものであり、最後に説明文をつけてp4 client -iに送っているという事実を利用しています。 –

+0

ああ私は参照してください、そして数を選ぶのではなく、正規表現は数ではないすべてを削除します。私はそれが動作すると思いますか?しかし、 "-F"と "--field"を使用する方がずっと簡単です。 :) –

0

このうちのどれですか?実行するとチェンジリストが作成されますか?あなたは各コマンドの出力をキャプチャし、それをプリントして何が起きているのかを見ています。 スクリプトが実行される環境がP4PORT、P4USERなどの正しい値を持っているかどうかを確認することです。 私はサムが言ったことに同意します。コピーはコピー/削除よりも意味があります。ファイルを削除しているにもかかわらず、それらはまだサーバー上に存在し、スペースを占めています。プラスの動きは履歴を保持しますが、コピーは履歴を保持しません。

関連する問題