Это только моя точка зрения ниже. Я думаю, что есть много способов сделать это, но я думаю, что вы правильно поняли, что ветки лучше, чем ярлыки для такого рода вещей.
Вот как я об этом думаю:
Код в транке - это код, который собирается в производство. Если там есть код, который не будет использоваться в следующем выпуске, этот код следует переместить в ветку.
Затем используются ветви для отслеживания будущих разработок. Итак, завтра создайте ветвь (ветвь A) из ствола и начните добавлять функцию A. Как только SQA утвердит ветвь A, объедините ее обратно в ствол и отправьте ствол в производство.
Обратите внимание, в этом случае, что Патч X может быть сделан в ствол. Вам может понадобиться простое изменение в 1 строку и быстрый тест и регрессионный тест SQA для проверки исправления X. Но поскольку функция A разрабатывалась в ветви, она не задерживала выпуск исправления X.
Каждый раз, когда вы выпускаете Trunk в производство, добавьте ярлык ко всем транкам, который будет отмечен при выпуске определенной версии. Суть метки заключается в том, чтобы на более позднем этапе получить точный код, выпущенный в определенный момент.