8

UserAが Perforce で変更リストを作成し、それを棚上げできるようにしたいと考えています。次に、 UserBがそのチェンジリストの保留を解除してサブミットできるようにしたいと考えています。

これは簡単に聞こえますが、Perforce のシェルフ解除は期待どおりには機能しないようです。UserB が 'p4 unshelve -s 1234' を実行すると、変更 1234 から変更されたすべてのファイルが取り消されますが、変更のメタデータ (説明、ジョブ修正) は取り込まれません! これは、UserB が棚上げされた CL をまったく新しい CL にコピーして送信できることを意味します (説明と修正を手動で再作成することによって) が、古い棚上げされた CL がそのまま残ります。

ここでの論理的なことは、UserB

  1. CL の棚上げを解除する
  2. 棚上げされた CL のメタデータを表示する
  3. そのメタデータを新しいCLにコピーします。
  4. 新しい CL を提出する
  5. 古い保留 CL を削除する
これは、Perforce のドキュメントでも推奨されていることです。ちょっとした問題が 1 つあります。UserB は、別のユーザーの保留された CL を削除することはできません! UserA と p4 管理者のみが、保留中の CL を削除できます。ドキュメントがこれを正しく説明していない理由がわかりません。

以前にこの問題が発生したことはありますか? どのように解決しましたか?

編集:私の質問は非常に一般化されていることを明確にする必要があります。UserAが開発者で、UserBがビルド システム自体であるツールに取り組んでいます。開発者は CL を棚上げしてから、ビルド システムの棚上げを解除し、一連のビルドとテストでそれを検証します (これらのすべてのテストに合格した場合、CL を自動的に送信します)。ビルド システムが保留中の CL を提出した場合、すべての開発者が忘れずに CL を削除することを期待するのは、失敗する運命にあるようです!

4

2 に答える 2

2

ビルド システムが成功または失敗の通知を送り返し、開発者が自分で変更リストを送信できるようにするのはどうですか?

ファイルを解決する必要がある場合、変更リストの送信を自動化しようとすると、注意が必要になります。その一部を自動化できるかもしれませんが、競合がある場合はできません。

于 2012-03-19T14:20:17.577 に答える
1

PERFORCE 2013.1 で導入されたこの機能が役立つ場合があります。

    #539809 (Bug #53058) **
        Shelved changes containing files that do not require resolve
        may be submitted directly without unshelving first via
        'p4 submit -e <shelvedChange#>'. See 'p4 help submit' for
        details and restrictions.
于 2013-08-14T16:51:33.613 に答える