Вот прохладная схема Xach, который подводит итог текущей ситуации.
нет необходимости во внешних инструментах вообще, если вы работаете на машине unix (или имеете правильную настройку cygwin под Windows, не тестировали ее). Единственное предостережение: Perforce p4 diff
дает результат, который немного несовместим с patch
, поэтому вам нужно, чтобы он указывал на вашу команду unix diff. В корневом каталоге клиента вы можете сделать
P4DIFF=/usr/bin/diff p4 diff -du > pending-changes.patch
необязательно (если вы хотите вернуть открытые файлы из командной строки, в противном случае используйте p4v):
p4 revert `p4 opened|awk -F\# '{print $1}'`
Позже вы откроете файлы для редактирования (можно автоматизировать путем извлечения затронутые файлы из файла исправлений pending-changes.patch
, а затем:
patch < pending-patches
В зависимости от макета пути в корневом каталоге клиента, вы должны использовать параметр -p # num
патча, чтобы патч был аккуратно применен.
У вас должна получиться полка. Это способ сохранить список изменений для будущего редактирования. Ссылка ниже - это надстройка Python для Perforce, которая реализует полку. Кроме того, я знаю, что у Practical Perforce есть несколько способов отложить текущие изменения без внешнего скрипта. У меня нет книги передо мной, но я постараюсь обновить этот вопрос сегодня вечером, когда сделаю это.
Связанный с P4Shelve, это P4tar , который выглядит очень полезным и выполняет операции на клиенте, а не на сервере.
Конечно, я скоро займемся подобными вещами.
Теперь у вас есть те "различия", которые вы хотели надежно заархивировать. Когда вы будете готовы применить эти изменения позже, просто интегрируйте их обратно в ствол.
Это то, что делает сценарий Python, о котором Бретт упомянул . Это способ сделать это вручную без каких-либо специальных инструментов.
См. Также этот вопрос:
Отправка моего списка изменений кому-то другому без регистрации.
Это в основном то же самое.