web-dev-qa-db-ja.com

P4Vのディレクトリを「無視」できますか?

多数のbinおよびobjディレクトリを生成するVisual Studioを使用します。 P4Vの「オフライン作業の調整」機能を使用すると、「ローカルファイルがデポにありません」リストに表示されます。

それらを除外したいです。私は この質問 を見つけましたが、それはファイルについて話しているので、それが示唆することを試してみると(ワークスペースビューに次を追加)、動作しません

//depot/Foo/... //Client/Foo/...
-//depot/Foo/.../*.user //Client/Foo/.../*.user
-//depot/Foo/.../bin/... //Client/Foo/.../bin/...
-//depot/Foo/.../obj/... //Client/Foo/.../obj/...

ファイルに対しても実際には機能していないようです。foo.csproj.userファイルはまだリストに表示されています。

P4Vからディレクトリを除外できますか?もしそうなら、どのように?私は何を間違えていますか?

49
Roger Lipscombe

更新された回答:これは、Perforceコマンドからディレクトリを除外する組み込みの方法がなかったため、過去には多少注意が必要でした。 2012年以降、これは変更されました。 この問題に関するニースperforceの記事 をご覧ください。

2012.1では、P4IGNORE環境変数を設定して、Perforceからファイルを除外するために使用するファイルを指定できます。 Perforceサーバー(p4d)とクライアント(p4、P4V)の両方が2012.1以上である必要があります。 P4IGNOREの目的は、新しいファイルをディポに追加してワークスペースを調整するときにファイルを無視することです。他のバージョン管理システムの同等の機能と同様に、P4IGNOREはリポジトリの管理下にあるファイルを無視するために使用できません。

P4Eclipseは、.p4ignoreファイルを独自の条件で管理します。 (この点に関するマニュアルを参照してください here

クライアントビューを使用してファイルとディレクトリを除外する:

Perforceでファイルとディレクトリを除外する従来の方法は、排他的なクライアントマッピングを使用することです。完全なドキュメントについては、ビューのコマンドリファレンスを参照してください。ビューの例:

表示:

//depot/... //test_ws/depot/...
-//depot/dir/etc/... //test_ws/depot/dir/etc/...

このビューは、dir/etc内のファイルがデポに追加されないようにします。ディレクトリを読み取り専用クエリから除外する場合は、クライアントまたは相対構文を使用します。

$ p4 files //depot/dir/etc/...
//depot/dir/etc/foo#1 - add change 1186 (text)
//depot/dir/etc/bar#1 - add change 1186 (text) 


$ p4 files //test_ws/dir/etc/...
//test_ws/test_ignore/ignoredir/... - file(s) not in client view. 

$ cd dir/etc
$ p4 files ...
... - file(s) not in client view.

または、シェルコマンドを使用して、必要に応じて出力をフィルタリングできます。

p4 files //depot/dir/... |
    awk -F# '{print $1}' |
    grep -v "//depot/dir/etc/" |
    p4 -x - fstat

//depot/dir/」の下のファイルを除き、「//depot/dir/etc/」の下のすべてのファイルでp4 fstatを実行します。このディレクトリの除外は、すべてのファイルを一覧表示し、grepを使用して、除外するディレクトリの下のこれらのファイルを削除することで実現されます。 「//depot/dir/etc/」の末尾のスラッシュは、「etc」で始まる「//depot/dir/」の下のディレクトリと一致しないようにするために必要です(例えば、「//depot/dir/etc2009」)。

注:

Awkコマンドは、「#」文字を含むファイル名がないことを前提としています。 grepコマンドは、ファイルからパターンを読み取ることもできます。これは、複数のディレクトリを除外する必要がある場合に便利です。入力を対応するコマンドの引数として使用するには、p4コマンドで「-x-」フラグを使用します。詳細については、Perforceコマンドラインのグローバルオプションを参照してください。

7
Thariama

バージョン2012.1以降、PerforceはP4IGNORE環境変数。これにより、新しいファイルを検索または追加するコマンドを使用するときに無視するファイルとディレクトリを指定できます(p4 addp4 status、およびp4 reconcile)。

無視ファイルを使用するには、ワークスペースのルートにファイルを作成し、意味のある名前を付けます。規則は。ignoreまたは。p4ignoreのようなもののようですが、何でもできます(私はp4ignore.txt。単純なダブルクリックで編集できます。次に、無視ルールを入力します。以下は、Visual Studioによって生成された不要なデブリを無視します。

#ディレクトリ
 bin 
 obj 
 
#files 
 *。suo 
 *。user 

このファイルを作成したら、P4IGNOREそれを指す環境変数。コマンドラインで、次の行に沿って何かを入力します。

p4 set P4IGNORE=C:\somepath\p4ignore.txt

絶対パスを使用してください!Perforce documentation はこれを指定せず、私の最初の試みは機能しませんでしたとにかくWindows)絶対パスを指定しなかったため。

これを行った後、無視リストにあるファイルまたはディレクトリを追加しようとすると拒否され、次のような警告が表示されます(抑制オプションが表示されます)。

P4V 'ignored' files message


2012.1より前のバージョンのPerforceサーバーを使用している場合、クライアント仕様でこれを実行できます。除外ルールの構文は少しずれています。あなたが欲しいのはこれです:

-// depot/Foo .../*。user // Client/Foo .../*。user 
-// depot/Foo ... bin/...// Client/Foo ... bin /...
-// depot/Foo ... obj/... //Client/Foo...obj/...

「Foo」の後、「bin」および「obj」の前にスラッシュがないことに注意してください。

73
raven

Perforceで直接行う方法があります。

  • 接続メニュー
  • 現在のワークスペースを編集...

プロジェクトツリーをナビゲートします。ファイルまたはフォルダーを右クリックします。ファイル、フォルダー、ツリー全体を含めるか除外するかを選択します。

6
Clint StLaurent

これは私に最適です:

//depot/... //my_workspace_name/...
-//depot/.../.git/... //my_workspace_name/.../.git/...
-//depot/.../xcuserdata/... //my_workspace_name/.../xcuserdata/...
-//depot/.../xcschemes/... //my_workspace_name/.../xcschemes/...
-//depot/.../xcdebugger/... //my_workspace_name/.../xcdebugger/...
3
funroll

これは関係ないかもしれませんが、パスのいずれかにスペースがある場合は、それらを「」で正しく囲み、引用符の中に-を入れないでください。

1
Toby Allen