Subversion branches
Содержание
Subversion/Ветви
Когда необходимо создавать ветвь
Создайте ветвь если:
- Вы хотите иметь стабильное окружение для работы над основными функциями исключив влияние других разработчиков.
- Вы не хотите беспокоиться по поводу возможного введения ошибок в остальной код.
- Вы хотите подготовиться к релизу и проверить стабильность работы программного обеспечения.
Создание ветви
Используйте svn copy для создания ветви в директории branches:
svn copy -m "Create branch1 branch." svn://svn.reactos.org/reactos/trunk svn://svn.reactos.org/reactos/branches/branch1
Поддержание синхронности ветви и транка
Если ветвь находится в разработке в течение долгого периода времени, настоятельно рекомендуется поддерживать её в синхронном состоянии с ветвью транка для того, чтобы эти две ветви не имели слишком больших различий. Это можно сделать, регулярно сливая изменения транка в ветви по прошествии некоторого времени (раз в две-три недели). Используйте для этого команду svn merge, но сначала вам неообходимо понять, из какой ревизии вы будете брать данные для слияния. Для первого слияния с ветвью, необходимо использовать ревизию, из которой была создана ветвь. Чтобы получить эту информацию, используйте команду svn log.
Если вы пользуетесь TortoiseSVN, тогда прочтите статью Subversion/Слияние в TortoiseSVN.
svn log --stop-on-copy svn://svn.reactos.org/reactos/branches/branch1
Приведённая ниже строка протокола показывает ревизию, из которой была создана ветвь:
r12735 | chorns | 2005-01-02 21:12:17 +0100 (sun, 02 jan 2005) | 1 line
Create branch1 branch.
Введите команду svn info в вашей рабочей копии для того, чтобы узнать текущую ревизию. Не забывайте перед этим выполнить команду svn up.
Path: branch_working_copy URL: svn://svn.reactos.org/reactos/branches/branch1 Repository UUID: e2f519d9-20a2-bc46-8705-e3bf7245ce19 Revision: 15132
Теперь вы можете выполнить слияние изменений, сделанных в транке со времени создания ветви (или со времени последнего слияния), используя команду svn merge:
svn merge -r 12735:15132 svn://svn.reactos.org/reactos/trunk branch_working_copy
Возможно возникновение конфликтов слияния. Разрешите их, выполните команду svn resolved на файлах или свойствах, всё протестируйте, и теперь вы можете отправить коммит с произведёнными вами изменениями. Крайне важно, чтобы вы указали диапазон ревизий, с которыми производилось слияние, в сообщении коммита, а также, необходимо будеть помнить его и в следующий раз, когда вы будете использовать слияние из транка.
svn ci -m "Merged 12735:15132 from trunk" branch_working_copy
В следующий раз, когда вам будет необходимо синхронизировать ветвь с транком, используйте команду svn log для того, чтобы найти сообщение коммита с последней синхронизацией, и используйте эту ревизию, как первую в диапазоне ревизий для слияния.
Обратите внимание! Вам не нужно поддерживать синхронизацию всей ветви, если вы работаете лишь над частью ветви. В этом случае, синхронизируйте лишь те части, над которыми работаете.
Слияние изменений в ветви обратно в транк
Когда вы удовлетворены результатами, достигнутыми в ветви, вы, вероятно, захотите произвести слияние своей ветви с ветвью транка. И вновь, используйте для этого команду svn merge.
Необходимо уточнить рабочую копию транка, в которую будет производиться слияние. Снова используйте svn log чтобы найти ревизию, из которой была создана ветвь (или ревизию, последний раз сливавшуюся с транком).
svn merge -r 12735:15132 svn://svn.reactos.org/reactos/branches/branch1 branch_working_copy
Разрешите конфликты слияния, протестируйте, и, наконец, отправьте коммит. Снова, укажите диапазон ревизий в сообщении коммита для использования его при следующем слиянии с транком (если это необходимо).
svn ci -m "Merged 12735:15132 from branch1" trunk_working_copy
Полезные советы
Если вы работаете с ветвями, то эти советы могут быть вам полезны:
- Если вы полностью переписываете файл в ветви, то удалите его в ветви и создайте вновь, а не просто изменяйте. Сделав это, вы избежите возможных конфликтов слияния при слиянии из ветви в транк. Когда вы будете это делать, то не получите уведомлений о конфликтах, так что делайте это внимательно, для того, чтобы исключить перезаписывание важных данных при слиянии.
Удалённые ветви
Эти ветви были удалены из репозитория.
- cis: 16812 - 40467
- expat-rbuild: 21182 - 40467
- old_reactx: 37254 - 40467
- winldr: 25066 - 40467
- xen: 14300 - 40467