Затмение слить ветку в ствол - PullRequest
13 голосов
/ 19 января 2010

Я пытаюсь слить ветку разработки обратно в ствол моего репо. Шаги, которые я предпринял:

  1. Переключиться на багажник
  2. проверить, что это актуально, разрешить любые конфликты
  3. Перейти в Team-> Объединить
  4. Выберите URL: ветка разработки
  5. Начать ревизию: ревизия при создании ветки
  6. Конец редакции: ГОЛОВА
  7. OK

Это должно сделать магию - он открывает представление синхронизации, что хорошо, показывает мне все конфликты, но там возникает проблема:

В редакторе сравнения я вижу два файла: Локальный файл | Удаленный файл (306)

Это действительно странно, номер редакции удаленного файла на самом деле совпадает с номером редакции файла в рабочей копии (транке) и содержимым. Локальный файл содержит содержимое файла в ветке.

Теперь стрелка правильно показывает, что я объединяюсь слева направо (ветвь к стволу). Это также происходит, когда я нажимаю ОК.

НО я могу перемещать изменения только справа налево !!! Это не то, что я хочу - я не хочу перезаписывать изменения в ветках старым содержимым транка. Я хочу переместить содержимое слева (ветвь) вправо (ствол). Но я даже не могу написать в нужном файле.

Я не знаю, почему он пишет там удаленный файл ?? Он ясно показывает файл рабочей копии в окне удаленного файла, а файл из ветви (для объединения) отображается в локальном файле.

Какая-нибудь ошибка в Subversive?

Thx, Martin

Ответы [ 3 ]

6 голосов
/ 20 января 2010

Слияния никогда не были простыми с subversive (как упоминалось в этом старом SO вопросе ), поэтому может быть проще выполнить слияние извне (или с подклипсом).

Есливаш клиент и хранилище, по крайней мере, в SVN1.5, новые возможности слияния Subversive лучше, но все же опасны, как показано этой цепочкой .

Поскольку Subversive был изменен дляSVN 1.5 все поведение слияния изменилось.Одна вещь, которая мне действительно понравилась, - это возможность выбрать, какие изменения я хотел, применить к моей рабочей копии, а затем зафиксировать в транке.
Теперь Subversive больше не делает этого, а принудительно вносит все изменения в вашу рабочую копию, а затем вы выбираете, что делать.положить в багажник.

Это не только нежелательное поведение, но и опасное (если вы все равно игнорируете возможность возврата).Я предпочитаю совершать вещи, которые я знаю, работают.У нас есть ветвь релиза, которая получает изменения, которые могут или не могут быть перенесены в транк.

2 голосов
/ 11 июля 2011

Что ж, поначалу это казалось загадочным, а сейчас я сделаю приличный удар по обновлению этого ответа для всех. Это касается слияния с использованием SVN Subversive client для Eclipse:

Вы выполняете слияние правильно, начиная с Транка, а затем указывая на свой файл в местном отделении. Ваши файлы открываются в окне «Сравнение текста» на вкладке «Синхронизация команды». Если вы не видите конфликтов в левой колонке навигации, значит, ваше слияние только что произошло. Да, это сбивает с толку и не интуитивно понятно.

Окно сравнения текста предлагает вам возможность отменить ваши изменения (или любые другие, которые могли попасть в ваш объединенный файл, не подозревая) до того, как вы его подтвердите. Помните, что вы извлекаете файл из Branch, поэтому идея заключается в том, что файл Branch находится в Trunk, но находится в своего рода виртуальном подвешенном состоянии до окончательной фиксации, и изменение или отмена нежелательных изменений здесь ссылается на файл в Branch (очевидно). Вот почему у вас есть только односторонний канал (Trunk to Branch), чтобы перезаписать изменения, объединенные в Trunk через вашу рабочую копию. Ваше слияние произошло, но оно еще не совсем официально.

Если все выглядит так, как должно, щелкните правой кнопкой мыши файл в окне навигатора (левая панель в моей установке Eclipse Helios) и выберите «Принять» из раскрывающегося списка. Затем вернитесь на главную вкладку просмотра кода (в моей установке это PHP, но это может быть все, что вы используете), а затем передайте файл в Trunk.

Если вы хотите проверить это, перед просмотром сделайте просмотр файла "как есть" в Trunk, и вы должны увидеть, как ваши изменения отражены там, если вы сделали слияние правильно. Похоже, именно так у меня работает на OSX Snow Leopard Macbook Pro. Не уверен, что это то же самое для Windows или Linux. Я предполагаю, что это по сути тот же / похожий процесс.

0 голосов
/ 21 сентября 2011

это просто

проверить транк с check as ... дать другое имя проекта.

Теперь у вас есть как локальная рабочая копия, так и ствол, который вы хотите зафиксировать, и ветка, над которой вы работаете, и чьи изменения вы добавили в хранилище. Теперь щелкните правой кнопкой мыши проект ствола (и я имею в виду проект, а не отдельные файлы) - объединение - выберите проект ветки (снова, ПРОЕКТ) принять все изменения в локальную копию совершить то, что вам нужно для транка, как раньше все хорошо, удалите ствол снова и продолжайте работать на ветке

особенно с ответвлениями, это кажется очень простым и работает для меня как шарм

...