Как исправить версию проекта в истории работы SVN?
Я работаю над проектом, который может содержать несколько версий для нескольких клиентов. Т.е. 2.65 - версия для клиента 1, а 2.67 - версия для клиента 2; как правило, различия между 2,65 и 2,67 действительно невелики - и поэтому нет необходимости в нескольких филиалах для каждого клиента. Все, что мне нужно, - исправить версию в рабочей истории и, если потребуется в будущем, оформить особенно выбранную версию (т.е. проверить версию 2.65, когда рабочая копия 3.4 - и добавить некоторые изменения для соответствующего клиента).
Я использую VisualSVN на сервере и TortoiseSVN на клиенте. Спасибо)
2 ответа
В чем проблема использования ветки для каждого клиента, внесения необходимых изменений в каждую ветку и создания нового тега для каждой ветви?
Пример:
В настоящее время филиал client1 имеет тег "2.65", а филиал client2 имеет тег "2.67".
Теперь вы делаете некоторые исправления в стволе и хотите передать их обратно в ветку client1 только потому, что client2 не имеет функции, к которой было применено исправление.
Объедините изменения из транка в филиал client1, создайте новый тег "что угодно" и передайте эту новую маркированную версию клиенту.
Кстати: TortoiseSVN имеет интегрированную функциональность Merge, с которой я никогда не работал (возможно, не понял). Использование Git в другом проекте показало мне, что интеллектуальное (автоматическое) объединение может действительно работать...
Вы описываете один из прототипов вариантов использования для веток. Шутки в сторону.
Тем не менее, я предполагаю, что вы отбрасываете ветки, потому что перенос изменений между ветками - сложная и трудоемкая задача. Это медленно, и вы должны исправить конфликты, которые трудно понять. Ну, это не ограничение ветвей: это ограничение Subversion. Очевидно, что Subversion не хранит достаточно информации о ваших изменениях, и это действительно затрудняет правильное слияние.
Говорят, что другие современные системы контроля версий обрабатывают ветвления лучше, чем Subversion: git, Mercurial, Bazaar... Вы могли бы рассмотреть возможность переключения.
Как бы то ни было, вы можете обрабатывать параллельные ветви даже в Subversion. Взгляните на "Ветвление и слияние" в книге "Управление версиями с помощью Subversion". TortoiseSVN может быть очень удобен, потому что, когда вы пытаетесь выполнить слияние, он выделяет ревизии, которые уже были перенесены.