92

Perforceツリーで追跡されていない(実際には:追加されていない)ファイルを見つけるためのスクリプトまたはエイリアスを持っている人はいますか?

編集: 2009 年 1 月のリリースで P4V がこれのサポートを追加したように見えるので、これに関する受け入れられた回答を更新しました。

4

16 に答える 16

86

編集:p4 status今すぐ使用してください。フープを飛び越える必要はもうありません。@ColonelPanic の回答を参照してください。

P4V の 2009 年 1 月バージョンでは、ワークスペース ツリー内の任意のフォルダーを右クリックし、[オフライン作業の調整...] をクリックできます。

これにより、少し処理が行われ、チェックアウトされていないがデポ バージョンとは異なるファイル、またはまったくチェックインされていないファイルの分割ツリー ビューが表示されます。それがもたらす他のいくつかのカテゴリさえあるかもしれません.

このビューでファイルを右クリックして、チェックアウト、追加、元に戻すこともできます。

これは、私のお尻を数回救った非常に便利なツールです。

編集:ああ、具体的にはスクリプトについて尋ねられた質問ですが、念のためにこの回答をここに残します。

于 2009-06-09T16:28:42.070 に答える
50

Linux の場合、または Windows に gnu-tools がインストールされている場合:

find . -type f -print0 | xargs -0 p4 fstat >/dev/null

これにより、不明なファイルごとにエラー メッセージが表示されます。その出力をキャプチャする場合:

find . -type f -print0 | xargs -0 p4 fstat >/dev/null 2>mylogfile
于 2008-08-12T21:56:45.180 に答える
19

Unix の場合:

find -type f ! -name '*~' -print0| xargs -0 p4 fstat 2>&1|awk '/no such file/{print $1}'

これにより、クライアントまたは Perforce デポに追加されていないファイルのリストが出力されます。! -name '*~'~ で終わるファイルを除外していました。

于 2008-09-19T06:55:08.377 に答える
12

ああ、Perforce の古典の 1 つです :) はい、デフォルトのコマンドにこれを組み込むための簡単な方法がまだないのは本当に残念です。

最も簡単な方法は、コマンドを実行してクライアントのルートの下にあるすべてのファイルを検索し、それらをデポに追加しようとすることです。すべての新しいファイルの変更リストが作成され、既存のファイルは無視されます。

例 dir /s /b /AD | p4 -x - 追加

(nix コマンド ラインから「find . -type f -print」を使用します)。

(コンソールまたはファイルで)物理的なリストが必要な場合は、差分の結果をパイプできます(または変更リストにも必要な場合は追加します)。

これを P4Win 内で実行している場合は、$r を使用して現在のワークスペースのクライアント ルートを置き換えることができます。

于 2008-08-12T21:55:08.087 に答える
12

Is there an analogue of svn status or git status?

Yes, BUT.

As of Perforce version 2012.1, there's the command p4 status and in P4V 'reconcile offline work'. However, they're both very slow. To exclude irrelevant files you'll need to write a p4ignore.txt file per https://stackoverflow.com/a/13126496/284795

于 2012-12-13T16:35:39.980 に答える
7

2021-07-16: この回答は廃止される可能性があります。

私が使用していたPerforceのバージョンに関係なく、2016年には正確であったと確信しています(必ずしも最新ではありませんでした)。しかし、この問題または設計上の制限は、Perforce の後続のリリースで修正されたようです。これに対するスタック オーバーフローのエチケットが何であるかわかりません。この回答を削除する必要がありますか?

2016年の答え

受け入れられた回答と他のいくつかには、重大な問題があると思われるものがあるため、回答を追加する必要があると感じています。読み取り専用のクエリコマンドと変更を行うコマンドの違いを理解していません。

この回答に対する信用は期待していませんが、受け入れられているがIMHOの間違った回答に従うことで、他の人が時間を無駄にしたり間違いを犯したりするのを避けるのに役立つことを願っています.

---+ 概要

perforce ワークスペースで追跡されていないすべてのファイルを見つける最も便利な方法は、p4 reconcile -na.

-a「リポジトリにないファイル、つまり追加する必要のあるファイルを教えてください」と言います。

-n「変更しない」と言います-つまり、予行演習です。(メッセージには「opened for add」と書かれているかもしれませんが、精神的には「opened for add if not -n」と解釈する必要があります)

おそらく、オフライン中に行われたすべてのローカル変更を見つける最も便利な方法です。追加する必要があるファイルだけでなく、削除する必要があるファイル、または を介し​​て編集用に開かずに変更されたファイルも含まれp4 editますp4 reconcile -n

いくつかの回答にはスクリプトが含まれており、多くの場合p4 fstat. これらのスクリプトのすべてを検証したわけではありませんが、同様のスクリプトを使用して perforce コマンドの欠点を補うp4 reconcile -nことがよくあります。

---+ 警告

p4 status他のバージョン管理システムのステータス コマンドに対応するものではありません。

p4 status読み取り専用クエリではありません。p4 status実際に同じ種類の変更を見つけてp4 reconcile、リポジトリに追加します。のような予行演習オプションp4 statusはないようです。-np4 reconcile

もしそうならp4 status、ファイルを見て「ああ、私はそれらを必要としない」と考えてp4 revertください。同じワークスペースで編集を続けたい場合は、ファイルが必要になります。そうしないと、変更p4 statusセットに追加された変更が次回チェックインされます。

ローカルワークスペースとデポのパス名の詳細を除いて、p4 statusではなく使用する理由はほとんどまたはまったくないようです。p4 reconcile -n

非読み取り専用コマンドに「ステータス」を選択した人は、英語やその他のバージョン管理ツールのコマンドが限られているとしか思えません。

---+ P4VGUI

GUIp4vの reconcile コマンドは、編集のために追加、削除、または開く必要がある可能性があるローカルの変更を検出します。幸いなことに、デフォルトでは変更リストに追加されません。ただし、変更をコミットしたくない場合は、確認後に調整ウィンドウを慎重に閉じる必要があります。

于 2016-10-08T20:07:03.357 に答える
4

リポジトリとは異なるワークスペース内のファイルをバックアップするツールで次を使用します (Windows 用)。埋め込まれた空白、星、パーセント、およびハッシュマークなど、Perforce があまり好まないいくつかの奇妙なケースを処理します。

dir /S /B /A-D | sed -e "s/%/%25/g" -e "s/@/%40/g" -e "s/#/%23/g" -e "s/\*/%2A/g" | p4 -x- have 1>NUL:

" dir /S /B /AD " は、ディレクトリ (/ AD )を除く、このフォルダー ( /S )以下のすべてのファイルを「ベア」形式 ( /B ) で一覧表示します。「sed」は、危険な文字を「%xx」形式 (HTML 風に) に変更し、「p4 have」コマンドは、サーバーに対してこのリスト (「-x-」) をチェックし、サーバーが実際にリポジトリ内で見つけたファイルに関するものはすべて破棄します。 (" 1>NUL: ")。結果は、次のような一連の行です。

Z:\No_Backup\Workspaces\full\depot\Projects\Archerfish\Portal\Main\admin\html\images\nav\navxx_background.gif - file(s) not on client.

ほら!

于 2009-06-08T18:59:57.010 に答える
4

または、P4Win から、左側のビュー パネルの [デポにないローカル ファイル] オプションを使用します。

私は P4V をあまり使用しませんが、ワークスペース ビュー タブのフィルター ドロップダウンで [ローカル ワークスペース ファイルを非表示] を選択することと同等だと思います.p4 help fstat

P4V 2015.1 では、次のようにフィルター ボタンの下にこれらのオプションがあります。 ここに画像の説明を入力

于 2008-08-28T21:19:01.103 に答える
2

Quick 'n Dirty: p4v で問題のフォルダーを右クリックし、その下にあるすべてのファイルを新しい変更リストに追加します。変更リストには、現在デポに含まれていないすべてのファイルが含まれます。

于 2012-03-23T18:11:26.933 に答える
1

次のコマンドは、ステータスに似た出力を生成しますが、各ファイルのステータスの 1 行の要約を提供するsvn statusorとまったく同等のものはありません。git status

  • p4 status
  • p4 opened
  • p4 diff -ds
于 2016-07-18T10:22:18.577 に答える
0

コメントするには十分な評価ポイントがありませんが、Ross のソリューションには、追加のために開いているファイルもリストされています。ワークスペースをきれいにするために彼の答えを使用したくないでしょう。

以下は のp4 fstat代わりに (Mark Harrison に感謝) を使用p4 haveし、デポなく、追加用に開かれていないファイルをリストします。

dir /S /B /A-D | sed -e "s/%/%25/g" -e "s/@/%40/g" -e "s/#/%23/g" -e "s/\*/%2A/g" | p4 -x- fstat 2>&1 | sed -n -e "s/ - no such file[(]s[)]\.$//gp"

===ジャック

于 2015-11-25T21:23:53.660 に答える
-1

P4V で、[表示] メニュー項目の下にある [フォルダー内のファイル] を選択すると、右側のペインに新しいタブが表示されます。タブの右端には、「フォルダ内のファイル」という 2 つのアイコンを含むウィンドウを表示する小さなアイコンがあります。じょうごのような左のアイコンを選択すると、いくつかのオプションが表示されます。「デポにないアイテムを表示」を選択すると、フォルダー内のすべてのファイルが表示されます。次に、追加したいファイルを右クリックして、「Mark for Add...」を選択します。「保留中」タブで確認できます。通常どおり送信するだけです (Ctrl+S)。

于 2013-09-19T22:07:42.410 に答える