Как я могу использовать Perforce Shelving, чтобы один человек создал изменение, а другой отправил его?

Я хочу, чтобы UserA мог создать список изменений в Perforce, а затем отложить его. Затем я хотел бы, чтобы UserB мог отменить этот список изменений и отправить его.

Это звучит просто, но не перкуссия Perforce, похоже, не работает так, как я ожидал. Когда пользователь B запускает "p4 unshelve -s 1234", он освобождает все измененные файлы от изменения 1234, но не приносит с собой метаданные изменения (описание, исправления задания)! Это означает, что UserB может скопировать отложенный CL в совершенно новый CL и отправить его (путем ручного воссоздания описания и исправлений), но это оставляет старый отложенный CL висящим вокруг.

Логичной вещью здесь было бы для UserB

  1. Отключить CL
  2. Посмотреть метаданные CL на полках
  3. Скопируйте эти метаданные в новый CL
  4. Отправить новый CL
  5. Удалить старые полки CL
Это то, что документация Perforce даже рекомендует. Возникла бы одна маленькая проблема: UserB не может удалять отложенные CL другого пользователя! Только пользователь A и администратор p4 могут удалить свой отложенный CL. Я не понимаю, почему документация закрывает глаза на это.

Кто-нибудь когда-либо имел эту проблему раньше? Как вы решили это?

РЕДАКТИРОВАТЬ: я должен уточнить, что мой вопрос очень обобщенный. Я работаю над инструментом, в котором UserA - разработчик, а UserB - сама система сборки. Разработчик откладывает CL, а затем отключает систему сборки и проверяет ее серией сборок и тестов (автоматически отправляя CL, если он прошел все эти тесты). Ожидание того, что каждый разработчик не забудет удалить свои отложенные CL, если система сборки представила их, кажется неизбежным!

2 ответа

Как насчет того, чтобы система сборки отправляла уведомление об успехе или неудаче и позволяла разработчику отправлять список изменений самостоятельно?

Попытка автоматизировать отправку списка изменений может быть затруднена, если необходимо разрешить какие-либо файлы. Возможно, вы сможете автоматизировать некоторые из них, но не при наличии каких-либо конфликтов.

Эта функция, представленная в 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.
Другие вопросы по тегам