Часть разработки, которую я сделал для проекта, не может быть развернута, и должна была быть выполнена в отдельной ветке.Я объединил изменения в обратном направлении (с помощью черепахового «возврата изменений из этой ревизии» и тщательного редактирования), отменил работу, которая должна была быть в отдельной ветви, и зафиксировал этот обратный патч в стволе.Теперь я хотел бы создать ветку, включающую изменения, которые были отменены в вышеупомянутом патче.Вот что я сделал:
Я создал новую ветку для новой разработки в редакции, предшествовавшей отмене ревизии.
Я слил отмененную ревизию в новую ветку путем объединения диапазонаревизии в черепахе SVN.
Я открыл журнал изменений, выбрал «Включить объединенные ревизии» и «отменить изменения из этой ревизии».Это отменило эти изменения в моей рабочей копии.Это то, что я хотел бы, чтобы филиал был похож.Я совершил эти изменения.Этот коммит перечисляет патч отмены в «включить объединенные ревизии»;Я не верю, что это должно быть сделано;Кажется, здесь есть проблема.Ключ, вероятно, заключается в том, чтобы записать этот патч (обратный квадрат или произведение оригинальных модификаций) таким образом, что subversion не знает о операции, выполненной для его создания.
Затем я объединил все измененияиз ствола в новую ветку тем же способом (объединение ряда ревизий).Это включало оригинальное исправление отмены во второй раз, делая мою ветвь идентичной стволу (перечисляя это теперь трижды как включенную объединенную ревизию).Это не желаемый результат.
Следующее является желаемым поведением и работает правильно:
Сначала я создал пустой репозиторий с тегами папок, ствола, ветви.В транке я создал файл file.txt с содержанием (rev1):
one
two
three
Затем отредактировал файл на
one
two_edit
three
И зарегистрировался (rev2).Затем я выбрал rev2 в журнале и выбрал отмену изменений из этой ревизии и зарегистрировался (rev3).Теперь файл снова выглядит следующим образом:
one
two
three
Затем я создал ветвь ствола от rev3 до ветвей \ b1 (rev4, was5; этот шаг выполняет оба действия).В филиалах \ b1 файл выглядит следующим образом:
one
two
three
Затем я возвращаю слияние rev2 из транка в ветви / b1, игнорируя происхождение (rev5).Теперь ветка выглядит следующим образом, и теперь совершенно очевидно, что история содержит нечто подобное:
one
two_edit
three
Я редактирую ствол (rev6), чтобы он выглядел следующим образом:
one
two
three
four
Я объединяю все изменения из ствола в ветви / b1 (rev7).ветки / b1 теперь правильно выглядят так:
one
two_edit
three
four
Как это должно работать
Следующее является желаемым поведением и работает правильно, если выделенный курсивом шаг выполняется следующим образом:
Сначала я создал пустой репозиторий с тегами папок, ствола, ветки.В транке я создал файл file.txt с содержанием (rev1):
one
two
three
Затем отредактировал файл на
one
two_edit
three
И зарегистрировался (rev2).Затем я выбрал rev2 в журнале и выбрал отмену изменений из этой ревизии и зарегистрировался (rev3).Теперь файл снова выглядит следующим образом:
one
two
three
Затем я создал ветку ствола от rev2 до ветви \ b1 (rev4).В филиалах \ b1 файл выглядит так:
one
two_edit
three
Затем я объединяю rev3 из транка в ветви \ b1 (rev5), теперь ветка выглядит так:
one
two
three
Я редактирую ветвь 3 (rev6) так, как если бы я был на этой точке.Теперь совершенно очевидно, что история содержит нечто подобное:
one
two_edit
three
Я редактирую ствол (rev7), чтобы он выглядел следующим образом:
one
two
three
four
Я объединяю все превращается из ствола в ветви / b1 (rev8).Branch / b1 теперь выглядит так:
one
two_edit
three
four
Как это работает
Ниже приводится фактическое поведение;он работает некорректно, если выполняется курсив, что необходимо из-за сложности обратной ветви.Ошибка находится во второй строке последнего шага.
Сначала я создал пустой репозиторий с тегами папок, ствола, ветви.В транке я создал файл file.txt с содержанием (rev1):
one
two
three
Затем отредактировал файл на
one
two_edit
three
И зарегистрировался (rev2).Затем я выбрал rev2 в журнале и выбрал отмену изменений из этой ревизии и зарегистрировался (rev3).Теперь файл снова выглядит следующим образом:
one
two
three
Затем я создал ветвь ствола от rev2 до отделения \ b1 (rev4).В филиалах \ b1 файл выглядит так:
one
two_edit
three
Затем я объединяю rev3 из транка в ветви \ b1 (rev5), теперь ветка выглядит так:
one
two
three
В ветвях \ b1 я выбрал в журнале rev5, выбрал отмену изменений из этой ревизии и зарегистрировался (rev6).Теперь файл снова выглядит следующим образом:
one
two_edit
three
Я редактирую ствол (rev7), чтобы он выглядел следующим образом:
one
two
three
four
Я объединяю все переходит из ствола в ветки / b1 (rev8).ветки / b1 теперь выглядят так:
one
two
three
four