5

Perfarce 拡張機能で、乗り越えられないように見える問題に遭遇しました。最初に、次の方法で P4 デポの一部を複製しました。

hg clone --startrev 71555 p4://perforce:1666/greg_nt_main-hg lwnthg

私は、現在のヘッド リビジョンよりほんの数チェンジリスト遅れた開始リビジョンを選択しました。startrev なしで完全なクローンを試行してもうまくいきませんでした。

クローン中に次のエラーが発生しました。

"abort:untracked file in working directory differs from requested revision on 'MAIN/apps/Win32/BenchMark/Jamfile'”

しかし、ディスクに表示された内容を調べると、実際にはすべてのファイルが正常に複製されているように見えました。言及されたファイルは Peforce のものと同一であり、lwnthg フォルダーはクローン プロセスの前は空でした。「hg ステータス」には、まだコミットされていない多くのファイルが表示されました。クローンが中止されたためでしょうか? だから私はそれらをコミットしました、そしてすべてが素晴らしいように見えました.

ファイルにいくつかの編集を加え、問題なくローカル リポジトリにコミットしました。Mercurial の愛らしさを満喫しました ;)

しかし、変更を Perforce にプッシュしようとすると、次のエラーが発生します。

abort: no p4 changelist revision found

有効な P4 ログイン チケットがあること、P4 が起動していることなどを確認しましたが、すべて問題ありませんでした。

したがって、Perfarce は P4 から最後に同期した変更リストをどこかに保存しており、この情報が書き出される前に最初の中止が発生したと推測されます。P4 からプル操作を試みると、同じエラーが発生します。私の理論が正しいと仮定すると、ローカルの Perfarce 構成でこの情報を再構築する方法はありますか?

「Perfarce」はタイプミスではありません。Perforce にリンクするMercurial 拡張機能の名前です。質問を「Perforce」に変更すると、質問の意味が一部失われます。質問を解決するための助けに感謝しますが、常に最初に事実を確認する価値があります:)

4

1 に答える 1

1

私自身の質問に答えるには、答えはノーのようです。

私はさらに掘り下げて、元の作成者である Frank Kingswood と連絡を取り合っています。解決策は、そもそもデポがエラーなしでインポートされるようにすることです。それが完了すると、Perfarceは絶対的な扱いになります.

インポートの最初の中止は、私の使用法にかかっていました。Stack Overflow を含む他の場所で見つかったさまざまな指示に従った後、hg clone の destination パラメータを使用して正しいリポジトリ名を取得しようとしていました。しかし、インポートの成功は、Perforce クライアント仕様のルートと、hg clone へのこの最後の引数として指定された宛先フォルダーとの間の相互作用に左右されるようです。

基本的に、これらのフォルダが重複しないようにしてください。

Perforce のファイルによっては、オーバーラップがあって機能する可能性がありますが、将来、大きな問題が発生する可能性があります。

フォルダを分けておくことをお勧めします。私の問題は、hg フォルダーのデフォルトのフォルダー名を Perforce クライアントの仕様名として使用したくないことでした。これは、宛先フォルダーを指定しない場合の動作です。ただし、おそらくバグが原因で、宛先フォルダーを指定する場合、クライアント仕様のルートと一致する必要があります。この動作のため、フォルダーは実際には同じでなければならないと思っていました。

Mercurial では、リポジトリが作成された後に最上位のフォルダーの名前を変更しても安全です。そのため、Perforce クライアント仕様の名前によって名前が決定されたくない場合は、後で名前を変更できます。それが私が取ったアプローチです。

これが、Mercurial の水域につま先を浸そうとする他の人の助けになることを願っています。

更新 Frank は Perfarce 拡張機能を更新して、このケースをより適切にトラップできるようにしました。Perfarce リポジトリから最新のものを入手してください。

于 2011-03-22T20:44:49.300 に答える