私はPerforceを初めて使用します。誰でも他のユーザーのワークスペース オプションを変更できるため、現在のサーバーには構成ミスがあるようです。
その問題をすばやく修正する方法を知っている人はいますか?
ありがとう、
トーマス
私はPerforceを初めて使用します。誰でも他のユーザーのワークスペース オプションを変更できるため、現在のサーバーには構成ミスがあるようです。
その問題をすばやく修正する方法を知っている人はいますか?
ありがとう、
トーマス
問題を簡単または迅速に解決する方法がわかりません。
とはいえ、そこにいる能力は本当に問題なのでしょうか?それとも、さまざまな人がさまざまなワークスペース構成の所有権を持っていると考えているのでしょうか? ここで私が働いている場所では、自分のワークスペースとして維持したいワークスペースにユーザー名のプレフィックスを付け、共有ワークスペースから除外します (または、別のプレフィックスを使用することもあります)。
ワークスペースの所有権が不明で、それが原因で問題が発生している場合は、これで問題が解決します。同僚が所有権を無視し、意図的に変更を加えている状況である場合は、他の問題を心配する必要があります。
直接的な修正ではありませんが、「スペック デポ」を実装することで、クライアント スペックに加えられた変更を追跡できます。こちらのKB 記事を参照してください。
あなたの質問を読む前に、管理者権限なしで別のユーザーのクライアント仕様を変更できることにさえ気づいていなかったことを認めなければなりません。Perforce を 9 年間使用してきましたが、これが人々にとって実際の問題であると感じたことはありません。
クライアント仕様の前にユーザー名/イニシャルを付けるという cjhuitt の提案は適切であり、特に大規模なインストールではかなり一般的な方法です。
ワークスペースをロックするのが最善の方法です、Heath に感謝します。
既存のすべてのワークスペースをロックする小さな PERL スクリプトを作成しました。
#*******************************************************************************
# Module: LockClients.pl
# Purpose: A perl script using the CLI to lock all clients on a server
#
# Debug Flag:
$DEBUG_FLAG = 1 ; # 1 for TRUE, 0 for FALSE
# Get the list of clients on the server:
@list = `p4 clients`;
foreach $client (@list) {
# Get client name:
$clientname = (split / /,$client)[1];
if ( $DEBUG_FLAG ) { print ("Client name: $clientname \n"); }
# Prepare temporary file name (will contain the new config spec of the client):
$filename = sprintf("tmp_%s.txt",$clientname);
if ( $DEBUG_FLAG ) { print ("Temporary file: $filename \n"); }
# Get client spec:
@clientspec = `p4 client -o $clientname`;
# Write client spec to file:
open (VIRTUAL , ">$filename" ) || die "ERROR: Could not create $filename \n";
foreach $line (@clientspec) {
if ($line =~ m/^Options:.*$/m){
if ( $DEBUG_FLAG ) { print ("Line before substitution: $line"); }
$line =~ s/unlocked/locked/;
if ( $DEBUG_FLAG ) { print ("Line after substitution: $line"); }
}
print VIRTUAL $line;
}
close (VIRTUAL);
# Import new config spec in client:
`p4 client -i -f < $filename`;
if ( $DEBUG_FLAG ) { print ("Workspace $clientname locked !\n\n"); }
}
exit 0;
ワークスペースが作成または編集された後、トリガーを使用してロック オプションを強制しようとします。:)
トーマス