Perforce Streams - изоляция импортированных библиотек
Мне нужно некоторое руководство по случаю использования, с которым я столкнулся при использовании Perforce Streams. Скажем, у меня есть следующая структура:
//ProductA/Dev:
share ...
//ProductA/Main
share ...
import Component1/... //Component1/Release-1_0/...
//ProductA/Release-1_0
share ...
//Component1/Dev
share ...
//Component1/Main
share ...
//Component1/Release-1_0
share ...
ProductA_Main
импортирует код из Component1_Release-1_0
, Всякий раз, когда Component1_Release-1_0
будет обновлен, он будет автоматически доступен для ProductA
(но только для чтения).
Сейчас. Проблема, с которой я сталкиваюсь, заключается в том, что с ProductA_Release-1_0
наследуется от Main
и, таким образом, также импортирует Component1_Release-1_0
любой код или изменения, внесенные в компонент, будут немедленно влиять на ProductA
Релиз. Этот вид побочного эффекта кажется очень рискованным.
Есть ли способ изолировать код таким образом, чтобы в потоке релиза отслеживались ВСЕ изменения кода (даже код, который был импортирован), и было 0 побочных эффектов от других потоковых хранилищ, но для основного и и потокового кода этот код импортирован. Таким образом, релиз будет иметь 0 побочных эффектов, в то время как main и dev удобно импортируют любые изменения, сделанные в депо.
Я знаю, что одним из вариантов было бы создать какой-то поток релиза для конкретного продукта в Component1
депо, но это кажется чем-то вроде кучи Component1
не нужно никаких ссылок на ProductA
,
1 ответ
Если вы просто хотите восстановить предыдущие версии, вы можете использовать метки, чтобы синхронизировать поток с той ситуацией, в которой он был в то время, указав номер списка изменений (или метку) для p4 sync
,
Если вы ищете явное отслеживание изменений, вы можете добавить компонент в строку выпуска. Это сделает выпускную копию библиотеки полностью невосприимчивой к изменениям в другом потоке, если только вы не выберете ветвление и согласование данных оттуда. Если вы думаете, что можете вносить независимые изменения в библиотеки, чтобы исправлять ошибки, это может быть чем-то, что следует учитывать. Конечно, Perforce не будет копировать файлы из вашей базы данных на сервер, а просто будет указывать на них в метаданных, и, поскольку вы уже импортируете их в поток, вы уже размещаете копии файлов на своих машинах сборки. поэтому не должно быть никаких "отходов", кроме как на фронте метаданных.
В конце концов, это выглядит как политический вопрос. Восстановление может быть выполнено путем синхронизации с предыдущей версией, но если вы хотите поместить исправления библиотеки в основную строку кода, оставьте все как есть; если вы хотите заблокировать библиотеки и сделать изменения явными, я просто добавлю библиотеки.
Интеграция в вашу ветку релизов
В ответ на вопрос в комментариях, если вы решите интегрировать непосредственно в ветку релиза, вам нужно удалить import
строка из спецификации потока и замените ее на isolate
строка, которая затем поместит код только в ветку релиза. Тогда вы бы использовали стандарт p4 integrate
команда (или p4v) для интеграции с //Component1/Release-1_0/...
в //ProductA/Main/Component1/...
,
Укрепление отдельного потока компонентов
Одна заключительная мысль состоит в том, что вы можете создать еще один поток на //Component1
линия, чтобы действовать в качестве заполнителя для релиза.