Предварительные просмотр при объединении


Учитывая, что результатом слияния являются локальные модификации, такая операция не является опасной. Если в начале, при выполнении объединения вы ошиблись, просто отмените изменения (svn revert) и попробуйте еще раз.

Однако, возможна ситуация, когда рабочая копия уже содержит локальные изменения. Изменения, примененные при слиянии будут смешаны с уже существующими и svn revert запустить будет нельзя. Если нельзя будет разделить два набора изменений.

В такой ситуации лучше будет попробовать спрогнозировать или проверить объединения до того, как они произойдут. Самым простым вариантом является запуск svn diff с теми же аргументами, что и для svn merge, это мы уже показывали в первом примере объединения. Другим вариантом предпросмотра является передача команде объединения опции --dry-run:

$ svn merge --dry-run -r 343:344 http://svn.example.com/repos/calc/trunk U integer.c $ svn status # nothing printed, working copy is still unchanged.

Опция --dry-run не вносит локальные изменения в рабочую копию. Показываются только коды статуса которые будут выведены при настоящем объединении. Это полезно для получения «обобщенной» информации об объединении для тех случаев, когда запуск svn diff выдает слишком детальную информацию.

Subversion и наборы изменений

У каждого найдется свое, немного отличающееся определение «набора изменений», или во всяком случая того, что это должно означать применительно к системе управления версиями «поддерживающей наборы изменений». Для нашего случая будем считать, что набор изменений это просто модификации объединенные под уникальным именем. Изменения могут заключаться в редактировании текста файлов, модификации структуры файлов или корректировке метаданных. Проще говоря, набор изменений это просто патч с заданным для него именем.

В Subversion глобальный номер правки N относится к дереву в хранилище: так выглядит хранилище после фиксации N. Кроме того, это имя для неявного набора изменений: если сравнить дерево N с деревом N-1 вы получите полный патч того, что было зафиксировано. В этом смысле, о «правке N» можно думать не как о дереве файлов, а как о наборе изменений. Если вы пользуетесь системой отслеживания релизов для управления ошибками, вы можете использовать номера правок для того, что бы ссылаться на конкретные патчи, которые исправляют ошибку — например, «этот релиз был исправлен правкой 9238.». После этого, для того, что бы прочитать о том наборе изменений, который исправляет ошибку можно выполнить svn log -r9238, а для того, что бы увидеть сам патч, выполнить svn diff -r9237:9238. В Subversion команда merge тоже использует номера правок. Можно объединить набор изменений из одной ветки в другую указав его в качестве аргумента: команда svn merge -r9237:9238 внедрит набор изменений #9238 в вашу рабочую копию.



Содержание раздела