РТК:Устранение разрывов в потоках?
-
13-12-2019 - |
Вопрос
У меня есть файл в RTC (назовем его foo.c
), который я изменил и включил в набор изменений (CS1
), а также некоторые другие изменения.Затем я снова изменил этот файл и включил его в другой набор изменений (CS2
) вместе с другими изменениями.
Я столкнулся с ситуацией, когда хочу доставить CS2
в поток, но RTC выдает ошибку, что доставка создаст разрыв в потоке (из-за изменения CS1
).Я не хочу доставлять все CS1
тем не менее, поскольку он содержит некоторые изменения, которых еще не должно быть в сборке.Исходное изменение на foo.c
в CS1
было незначительное удаление #include
, и больше ни на что не влияет.
Есть ли способ устранить этот пробел?
В документации RTC я вижу кое-что о применении патчей, но не понимаю, к чему это приведет.
Есть ли способ разделить набор изменений на несколько наборов изменений, что позволило бы мне доставить только один файл?
Решение
Обновление с 2012 года (и исходный «обходной путь» доставки всего и возврата того, что вам не нужно):
Видеть эта тема:
В RTC 4.0.5 мы предоставили дополнительную поддержку при попытке принять наборы изменений, в которых есть пробел (часто встречается при попытке обратного переноса исправлений).
В очень кратком описании этой функции можно сказать, что при принятии наборов изменений с пробелами теперь вы можете следовать рабочему процессу, который принимает по одному набору изменений за раз, а для наборов изменений, содержащих пробелы, создает новый набор изменений (с помощью трассируемость), который содержит эквивалентные изменения.
Это означает, что пользователям не придется принимать наборы изменений «как патч».Применение наборов изменений в виде патчей имеет ограничения по сравнению с новым рабочим процессом.
Эта особенность обобщена в Страница RTC 4.0.5 «Новое и заслуживающее внимания».Ниже приведены несколько видеороликов, демонстрирующих эту функцию:
Это Найдите наборы изменений особенность:
В RTC 5.0 мы добавили функцию «заполнить пробел», при которой пользователю показываются наборы изменений, заполняющие пробел, что позволяет ему либо принять все наборы изменений, либо продолжить рабочий процесс, который был доступен в RTC 4.0.5. .
Эта особенность обобщена в Страница RTC 5.0 «Новое и заслуживающее внимания»:
Классы, задействованные для заполнения этого пробела, включают (доступны в RTC 5.0):
client side: IWorkspaceConnection.findChangeSetsToAcceptToFillGap(...) server side: IScmQueryService.findChangeSetsToAcceptToFillGap(...)
Обе функции подробно описаны в разделе «Улучшенная обработка пробелов для SCM" статья.
Оригинальный ответ (2012 г.)
Есть ли способ разделить набор изменений?
Я так не думаю, читая справочная страница набора изменений:
Файл или папка в компоненте не может быть частью более чем одного активного набора изменений.
Когда файл или папка включены в активный набор изменений, все изменения в нем становятся частью этого набора изменений, независимо от того, является ли набор изменений текущим, и изменения в этом файле или папке не могут быть явно возвращены в новый набор изменений до тех пор, пока активный набор изменений, включающий его, не будет завершен..
Наличие foo.c в CS1 и CS2 означает, что CS1 «завершен» (по сути, заморожен), и было бы плохо пытаться его разделить.
Патч-решение означает:
- отмена CS1
- добавление дополнительных изменений в foo.c в CS2
- повторение изменений CS1
Видеть "Как удалить набор изменений из потока?"
Рассказ 149483 Речь идет об усовершенствовании этого громоздкого рабочего процесса, а также улучшается обнаружение пробелов (Улучшение 24822)
А ОП Тимвой заключает:
В итоге я просто доставил все это, а затем отменил то, что мне не нужно..
Другие советы
Проблема:CS1 меняет foo.c, CS2 дополнительно меняет foo.c.Вы хотите предоставить только CS2, но RTC сообщает вам, что это приведет к появлению пробелов.
Решение:Создайте патч для CS2 и приостановите CS1 и CS2.Затем примените патч, объедините его с вашим рабочим пространством и зарегистрируйте изменения, которые создадут еще один набор изменений, CS3, идентичный CS2, но не зависящий от CS1.Теперь вы можете доставить CS3.
После доставки CS3 вы можете отказаться от CS2 и возобновить CS1, что потребует слияния с CS3.
Тогда вы должны оказаться в состоянии, когда CS1 основан на CS3, и вы можете выбрать, выпускать ли CS1 в будущем.