SVN: синхронизировать ветку с транком в Eclipse? - PullRequest
5 голосов
/ 22 сентября 2011

У меня есть ветка SVN и ствол.Ствол меняется регулярно, а ветвь - нет.

Время от времени (скажем, один раз в неделю) я хочу обновить локальную рабочую копию ветви с последними изменениями в стволе.

В идеале я хотел бы сделать этотак же, как я делаю это с последней версией ветки: с Eclipse: Team-> Synchronize, так что я могу просмотреть все изменения перед обновлением.

Возможно ли это с по-другому хранилище (например: ствол)?Если нет, то как люди проверяют изменения перед обновлением, тогда ??

Я посмотрел на Team-> Merge, но, похоже, это обновляет изменения непосредственно в моей рабочей копии, без возможности сначала просмотреть изменения (функция Preview, как мне кажется, сбивает с толку и не обеспечивает приятного параллельного представления изменений / конфликтов, которые есть у Synchronize).

Ответы [ 3 ]

6 голосов
/ 23 сентября 2011

Правильный способ сделать это с помощью Merge.Subclipse включает в себя клиент слияния, который делает это легко.Вы правы в том, что это не дает вам истинный предварительный просмотр, но то, как он работает, лучше с точки зрения Subversion.Пользовательский интерфейс представления результатов слияния в основном совпадает с представлением синхронизации.Он позволяет вам легко проверять каждое изменение, сделанное слиянием в вашей рабочей копии, и открываемый редактор сравнения Eclipse, позволяет очень легко вычеркнуть любые части изменения, которые вам не нужны, в вашем коде перед фиксацией.

Проблема с попыткой сделать это из представления Synchronize заключается в том, что вы затем выполняете слияние самостоятельно, используя редакторы кода, а Subversion не знает, что слито.Если вы позволите Subversion сначала выполнить слияние, то он сможет корректно обновить все свои метаданные, и вам будет вполне достаточно исправить код так, как вам нужно, прежде чем вы подтвердите результаты слияния.

0 голосов
/ 18 марта 2017

Я согласен, что это не совсем интуитивно понятно, но Марк прав, вы «синхронизируете» свои изменения при фиксации их обратно в транк:

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

, кроме того, точно так же, как вы слите ветку обратно в ствол хранилища

  • убедитесь, что все изменения вашей веткиПеренести в ветку репозитория
  • Переключиться на ствол Команда -> Переключить ...
  • объединить ваш ствол с вашей веткой Чайm -> Слияние ... (вкладка "Реинтеграция")
  • Теперь у вас есть локальная версия слияния, вы можете редактировать изменения и просматривать их, убедиться, чтотеперь у вас есть рабочая версия
  • синхронизация вашей локальной транка (объединенная версия) с транком хранилища
  • принятие всех изменений, которые вы хотите отобразить в транке

я рекомендую зафиксировать все изменения, которые вы внесли локально, в ваше слияние, так как вы проверяли их локально.если вы внесете всего несколько изменений, убедитесь, что версия репозитория все еще работает, а затем пропустите изменения

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

Я бы извлек и ветвь, и ствол как отдельные проекты затмения в рабочую область.Затем используйте инструмент слияния, например meld , чтобы объединить изменения между ними.После слияния вы можете обновить ветку в Eclipse и синхронизировать ее с репозиторием svn - теперь вы можете просмотреть все изменения.(это то, как я это делаю, так как я не верю плагину SVN Eclipse;))

...