Perforceツリーで追跡されていない(実際には:追加されていない)ファイルを見つけるためのスクリプトまたはエイリアスを持っている人はいますか?
編集: 2009 年 1 月のリリースで P4V がこれのサポートを追加したように見えるので、これに関する受け入れられた回答を更新しました。
Perforceツリーで追跡されていない(実際には:追加されていない)ファイルを見つけるためのスクリプトまたはエイリアスを持っている人はいますか?
編集: 2009 年 1 月のリリースで P4V がこれのサポートを追加したように見えるので、これに関する受け入れられた回答を更新しました。
編集:p4 status
今すぐ使用してください。フープを飛び越える必要はもうありません。@ColonelPanic の回答を参照してください。
P4V の 2009 年 1 月バージョンでは、ワークスペース ツリー内の任意のフォルダーを右クリックし、[オフライン作業の調整...] をクリックできます。
これにより、少し処理が行われ、チェックアウトされていないがデポ バージョンとは異なるファイル、またはまったくチェックインされていないファイルの分割ツリー ビューが表示されます。それがもたらす他のいくつかのカテゴリさえあるかもしれません.
このビューでファイルを右クリックして、チェックアウト、追加、元に戻すこともできます。
これは、私のお尻を数回救った非常に便利なツールです。
編集:ああ、具体的にはスクリプトについて尋ねられた質問ですが、念のためにこの回答をここに残します。
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
Unix の場合:
find -type f ! -name '*~' -print0| xargs -0 p4 fstat 2>&1|awk '/no such file/{print $1}'
これにより、クライアントまたは Perforce デポに追加されていないファイルのリストが出力されます。! -name '*~'
~ で終わるファイルを除外していました。
ああ、Perforce の古典の 1 つです :) はい、デフォルトのコマンドにこれを組み込むための簡単な方法がまだないのは本当に残念です。
最も簡単な方法は、コマンドを実行してクライアントのルートの下にあるすべてのファイルを検索し、それらをデポに追加しようとすることです。すべての新しいファイルの変更リストが作成され、既存のファイルは無視されます。
例 dir /s /b /AD | p4 -x - 追加
(nix コマンド ラインから「find . -type f -print」を使用します)。
(コンソールまたはファイルで)物理的なリストが必要な場合は、差分の結果をパイプできます(または変更リストにも必要な場合は追加します)。
これを P4Win 内で実行している場合は、$r を使用して現在のワークスペースのクライアント ルートを置き換えることができます。
Is there an analogue of
svn status
orgit 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
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
はないようです。-n
p4 reconcile
もしそうならp4 status
、ファイルを見て「ああ、私はそれらを必要としない」と考えてp4 revert
ください。同じワークスペースで編集を続けたい場合は、ファイルが必要になります。そうしないと、変更p4 status
セットに追加された変更が次回チェックインされます。
ローカルワークスペースとデポのパス名の詳細を除いて、p4 status
ではなく使用する理由はほとんどまたはまったくないようです。p4 reconcile -n
非読み取り専用コマンドに「ステータス」を選択した人は、英語やその他のバージョン管理ツールのコマンドが限られているとしか思えません。
---+ P4V
GUI
GUIp4v
の reconcile コマンドは、編集のために追加、削除、または開く必要がある可能性があるローカルの変更を検出します。幸いなことに、デフォルトでは変更リストに追加されません。ただし、変更をコミットしたくない場合は、確認後に調整ウィンドウを慎重に閉じる必要があります。
リポジトリとは異なるワークスペース内のファイルをバックアップするツールで次を使用します (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.
ほら!
Quick 'n Dirty: p4v で問題のフォルダーを右クリックし、その下にあるすべてのファイルを新しい変更リストに追加します。変更リストには、現在デポに含まれていないすべてのファイルが含まれます。
次のコマンドは、ステータスに似た出力を生成しますが、各ファイルのステータスの 1 行の要約を提供するsvn status
orとまったく同等のものはありません。git status
p4 status
p4 opened
p4 diff -ds
コメントするには十分な評価ポイントがありませんが、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"
===ジャック
P4V で、[表示] メニュー項目の下にある [フォルダー内のファイル] を選択すると、右側のペインに新しいタブが表示されます。タブの右端には、「フォルダ内のファイル」という 2 つのアイコンを含むウィンドウを表示する小さなアイコンがあります。じょうごのような左のアイコンを選択すると、いくつかのオプションが表示されます。「デポにないアイテムを表示」を選択すると、フォルダー内のすべてのファイルが表示されます。次に、追加したいファイルを右クリックして、「Mark for Add...」を選択します。「保留中」タブで確認できます。通常どおり送信するだけです (Ctrl+S)。