Представьте, что у вас есть следующая установка:
//depot/source/sourcefile.cpp
//depot/build/product.exe
В 8 утра вы регистрируете исходный файл.cpp (сейчас ревизия 2, в списке изменений 100). Машина сборки начинает сборку, и в 9 утра машина сборки проверяет product.exe, ревизию 2 в списке изменений 104. Круто. К сожалению, вы, возможно, не заметили, но в 8:15 кто-то проверил ревизию 3 исходного файла.cpp в списке изменений 103.
Каковы ваши варианты? Если вы просто записываете список изменений источника (100) и продукта (104), вы можете синхронизировать весь проект с исходным кодом, а затем синхронизировать содержимое списка изменений 104. Этот процесс выполняется несколько вручную — вам нужно записать два числа. и выполните двухэтапную операцию.
Вы можете сделать метку, но, к сожалению, метки не допускают множественных изменений, так что это не очень удобно.
Наконец, в какой-то момент после возврата ревизии 104 вы можете создать ветку. По сути, это копия метаданных интересующих вас ревизий, чтобы в будущем вы могли выполнить синхронизацию одним щелчком мыши. Вы можете заблокировать ветку, чтобы предотвратить изменения.
p4 integ //depot/source/...@102 //depot/milestone1/source/...
p4 integ //depot/build/...@104 //depot/milestone1/build/...
Необычные детали — вы можете настроить файлы так, чтобы они содержали ограниченное количество ревизий — например, вам могут понадобиться только последние 16 ревизий product.exe. (Измените тип файла на +S16). Если вы (или кто-то другой сделает это), первые две процедуры в конечном итоге потерпят неудачу, потому что ревизия была удалена из-за слишком большого количества ревизий. Если вы используете ветку, ваш product.exe не устареет.
person
John Harvey
schedule
17.12.2013