Я собираюсь взять ваш график и немного реорганизовать его:
/-----gamma-----/(3)---------->
/ /
/----beta---/(1)---/(2)--/---beta--------/--\
/ / / \
/------------alpha--/------/---\ \
/ \ \
------------trunk--------------------(a)----------------------(b)------------------>
Сначала удалите trunk
, поскольку вы его не используете. Да, вы сливаетесь обратно в магистраль, но никогда не извлекаете из нее код. Вместо этого beta
происходит от alpha
, а gamma
- от beta
. Можно также сэкономить все эти усилия, сливаясь с строкой кода, которую вы никогда не используете:
/-----gamma-----/(3)---------->
/ /
/----beta---/(1)---/(2)--/---beta--------/
/ / /
/------------alpha--/------/
/
trunk
Теперь давайте выпрямим ваш график, чтобы основная линия разработки была простой и понятной:
trunk-alpha-------beta-----------------------gamma-------------------------->
\ / / \ /
\---alpha-/------/ \---beta-------/
И, наконец, перевернуть все ...
/-alpha-\-----\ /--beta-------\
/ \ \ / \
trunk------/--(beta)---\-----\--------/-(gamma)---------\------(gamma)-------->
Вот твой сундук!
Я знаю, что ты делаешь. Вы не кодируете транк, потому что транк должен представлять ваш релиз. На вашей исходной диаграмме есть две версии ствола. Точка (а), где вы сливаете ветвь альфа обратно в ствол, и точка (б), где вы сливаете ветвь бета обратно в ствол. Это представляет вашу альфа-версию и бета-версию.
Однако вот для чего нужны теги! Вы делаете тег на выпуске, и ваш тег теперь представляет ваш выпуск. И это лучше, потому что тег сохраняет историю вашего файла.
Допустим, вы идете к своему сундуку в точке (b) и берете журнал определенного файла. Вы видите файл в точке (b) и другую версию в точке (а). Но вы понятия не имеете, как этот файл был изменен между точкой (а) и точкой (б). На самом деле, вы даже не знаете, кто является ответственным за конкретное изменение.
Однако, если вы добавили тег из ветви вместо слияния вашего кода обратно в транк, вы увидите всю историю этого файла, начиная с самой первой версии файла. Команда журнала Subversion (если вы не используете переключатель --stop-on-copy
) перенесет вас из тега в бета-ветку и обратно в транк.
Ах, вы говорите, но как я могу увидеть разницу между выпуском альфа и бета выпуском? В своей схеме я могу посмотреть историю багажника!
Однако, если вам нужно увидеть все изменения между одним выпуском и другим, вы можете легко сделать различие между двумя тегами. И, поскольку они являются тегами, гораздо проще найти реальную версию выпуска, чем пытаться выяснить, какая версия на стволе представляет ваш, какой выпуск.
Итак, у вас есть сундук, но вы просто так его не называете.