103

PERFORCEのP4VIDEにある「オフライン作業の調整...」機能を使用して、P4デポから切断されている間に作業していたファイルを同期することがあります。'FolderDiff'を実行する別のウィンドウを起動します。

ソース管理にチェックインしたくないファイルがあります(DLL、コード生成出力などのbinフォルダーにあるファイルなど)これらのファイル/フォルダーを「新規」として表示されないようにフィルターで除外する方法はありますか?追加した。それらは私が実際に興味を持っているファイルのリストを乱雑にする傾向があります。P4にはSubversionの「ファイルを無視する」機能と同等の機能がありますか?

4

10 に答える 10

59

バージョン 2012.1 の時点で、Perforce はP4IGNORE環境変数をサポートしています。ディレクトリの無視に関するこの質問への回答を、その仕組みの説明で更新しました。それから私はこの答えに気づきました。これは今では不要だと思います。


"CLIENT" という名前のクライアント、"foo" という名前のディレクトリ (プロジェクトのルートにある) があり、そのディレクトリ ツリー内のすべての .dll ファイルを無視したい場合、次の行をワークスペース ビューに追加して、次のことを実行できます。これ:

-//depot/foo/*.dll //CLIENT/foo/*.dll
-//depot/foo/.../*.dll //CLIENT/foo/.../*.dll

最初の行はそれらをディレクトリ「foo」から削除し、2 行目はそれらをすべてのサブディレクトリから削除します。これで、[オフライン作業の調整...] を実行すると、すべての .dll ファイルがフォルダー差分表示の下部にある [除外されたファイル] フォルダーに移動されます。それらは邪魔になりませんが、本当に必要な場合は表示して操作することができます。

別の方法で「除外ファイル」フォルダーを 1 つだけに減らすこともできますが、パスが破損するため、そこに含まれるファイルを操作することはできません (ただし、単にそれらを削除したい場合)。あなたのやり方で、それは問題ではありません)。

-//depot/foo.../*.dll //CLIENT/foo.../*.dll
于 2008-09-10T23:48:48.123 に答える
52

はい、でも。

Perforceバージョン2012.1には、Gitに触発されたp4ignoreと呼ばれる機能が追加されました。ただし、PERFORCEの開発者は、正当な理由なしに動作に変更を加えたため、機能の有用性が大幅に低下しました。

Gitはすべての.gitignoreファイルからルールを取得しますが、Perforceは、環境変数でファイル名を指定するまで、どこを見ればよいかわかりませんP4IGNORE。この自由は呪いです。無視ファイルに異なる名前を使用する2つのリポジトリをハックすることはできません。

また、PERFORCEの無視機能はそのままでは機能しません。自分で簡単に設定できますが、明示的にオプトインしない限り、他の人にはメリットがありません。誤って歓迎されないファイル(binビルドスクリプトによって作成されたフォルダーなど)をコミットしていない寄稿者。

Gitの無視機能は、すぐに使用できるので優れています。.gitignoreファイルがリポジトリに追加された場合(誰もがこれを行う)、それらはすべての人のためのボックスを解決します。誰も誤って秘密鍵を公開することはありません。

面白いことに、PERFORCEのドキュメントでは、無視ルールの例として「.p4ignore」が示されています。これは逆方向です。ルールが役立つ場合は、リポジトリの一部として共有する必要があります。


PERFORCEはまだこの機能でうまくいく可能性があります。たとえばp4ignore.txt、ファイル名の規則を選択して、機能がすぐに機能するようにします。環境変数を削除するP4IGNOREと、逆効果になります。ドキュメントを編集して、開発者が有用なルールを共有するように促します。Gitと同様に、ユーザーがホームフォルダー内のファイルに個人ルールを記述できるようにします。

Perforceの誰かを知っている場合は、この投稿を電子メールで送信してください。

于 2012-10-29T17:17:09.400 に答える
22

これはPerforce2013.1の時点で機能し、新しいP4IGNOREメカニズムはリリース2012.1で最初に追加され、Perforceブログで次のように説明されています。

https://www.perforce.com/blog/new-20121-p4ignore

現在説明されているように、環境変数「P4IGNORE」を、無視するファイルのリストを含むファイル名に設定します。

だから、あなたはそれをチェックして、あなたがそれをどのように気に入っているかを見ることができます。

于 2012-02-15T00:41:15.687 に答える
7

コピーする必要なくすべてのワークスペースに適用されるソリューションが必要な場合、ユーザー (またはシステム管理者) は、p4 保護テーブルで以下のような行を使用して、これらのファイル タイプの送信を拒否できます。

write user * * -//.../*.suo
write user * * -//.../*.obj
write user * * -//.../*.ccscc

以前にこれを行ったことを覚えていますが、ここでこれをテストするために必要な権限がありません。Perforce の Sysadmin ガイドをチェックして、試してみてください。

于 2010-06-11T08:03:27.370 に答える
6

Perforce Streams は、バージョン 2011.1 の時点で、ファイルを無視することをより簡単にします。ドキュメントによると、ディレクトリ内の特定の拡張子または特定のパスを無視できます。

からp4 help stream

Ignored: Optional; a list of file or directory names to be ignored in
                 client views. For example:

                     /tmp      # ignores files named 'tmp'
                     /tmp/...  # ignores dirs named 'tmp'
                     .tmp      # ignores file names ending in '.tmp'

                 Lines in the Ignored field may appear in any order.  Ignored
                 names are inherited by child stream client views.

これは基本的に@ravenの回答が指定することを行いますが、そのストリームを使用してすべてのワークスペースに自動的に伝播するため、ストリームを使用すると簡単に実行できます。これは、無視タイプを指定したストリームから継承するすべてのストリームにも適用されます。

p4 stream //stream_depot/stream_namep4v のストリーム ビューで ストリームを編集するか、ストリームを右クリックします。

また、@svec が指摘したように、ワークスペースごとにファイルを無視するように指定する機能は間もなく登場し、実際にはP4 2012.1 ベータ版です。

于 2012-03-02T18:10:38.537 に答える
3

のみを使用するという Will の提案は.p4ignore、WebSphere Studio (P4WSAD) プラグインで機能するようです。ローカルの Windows ボックスで試してみたところ、リストしたファイルとディレクトリは無視されませんでした。

クライアントの仕様を変更するという Raven の提案は、Perforce では正しい方法です。コード/データ/実行可能ファイルと生成された出力ファイルを適切に編成すると、ファイルをチェックインから除外するプロセスがはるかに簡単になります。

より厳格なアプローチとして、変更リストに特定のファイルまたは特定の拡張子を持つファイルが含まれている場合などに変更リストの送信を拒否する送信トリガーをいつでも作成できます。

于 2008-09-11T13:11:55.010 に答える
2

歴史的な答え - もはや正しくありません。これが最初に書かれた時点では、それは真実でした。

サーバーがルールを無視するために使用するファイルを書き込んでチェックインすることはできません。perforce では、一般的な glob または regexp ファイルのパターンは無視されます。

他の回答には、グローバルな(フォルダーごとではなく)グローバルサーバー構成があります。他の回答は、フォルダーごとにビューに1行を掛けて、その単一フォルダーで無視したい拡張機能の数が必要な場合、またはWebSphere Studioプラグインでのみこの機能を提供する場合、またはサーバーの機能を提供する場合に、うまくいく可能性があることを示しています管理者は利用できますが、ユーザーは利用できません。

要するに、Perforce はこの分野で本当に弱いと思います。Eclipse プラグインを使用する人が を使用できることはありがたいことですし.p4ignore、それは素晴らしいことだと思いますが、そうでない私たちにとっては暗闇の中に置き去りにされてしまいます。

更新: 2012 年半ばに追加された新しい P4IGNORE 機能については、受け入れられた回答を参照してください。

于 2010-10-07T16:16:35.793 に答える
1

次のような BASH スクリプトを使用すると、オフライン作業を調整するのが最も簡単であることがわかりました。

#!/bin/bash
# reconcile P4 offline work, assuming P4CLIENT is set
if [ -z "$P4CLIENT" ] ; then echo "P4CLIENT is not set"; exit 1; fi
unset PWD # confuses P4 on Windows/CYGWIN

# delete filew that are no longer present
p4 diff -sd ... | p4 -x - delete

# checkout files that have been changed.  
# I don't run this step.  Instead I just checkout everything, 
# then revert unchanged files before committing.
p4 diff -se ... | pr -x - edit

# Add new files, ignoring subversion info, EMACS backups, log files
# Filter output to see only added files and real errors
find . -type f \
 | grep -v -E '(\.svn)|(/build.*/)|(/\.settings)|~|#|(\.log)' \
 | p4 -x - add \
 | grep -v -E '(currently opened for add)|(existing file)|(already opened for edit)'

これは、この Perforce ナレッジ ベースの記事から引用したものです。

于 2011-02-11T19:10:14.897 に答える
0

.p4ignore のようなソリューションも探しています (特定の IDE に関連付けられたものではありません)。これまでのところ、私が見つけた最も近いものは p4delta です。別の間接的なレイヤーを介してはいるものの、元のポスターが求めていたことを正確に実行するように思えます.

http://p4delta.sourceforge.net

残念ながら、これはファイルの適切なリストを生成するように見えますが、「p4delta --execute」を機能させることができず (「凍結された文字列を変更できません」)、プロジェクトは年内に更新されていません。おそらく、他の人はもっと幸運になるでしょう。

于 2011-07-26T14:00:24.150 に答える
-1

Eclipse Perforce プラグインを使用している場合、プラグインのドキュメントには、ファイルを無視する方法がいくつかリストされています。

于 2010-01-25T09:43:35.517 に答える