Как объединить большие проекты в Eclipse?

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

В настоящее время я работаю над продуктом, который состоит из нескольких проектов, которые должны быть разветвлены вместе. При слиянии изменения из магистрали в ветвь, обычно я бы выполнил следующее из корня проверки ветвей: (я использую Subversion в качестве примера здесь, но проблемы должны применяться и к другим инструментам SCM.)

svn update
svn merge ^/trunk
svn commit -m "Merged from trunk"

возможно, исправить некоторые конфликты в середине, но это все, что мне нужно сделать. Однако, в Eclipse я могу объединить только на уровне проекта, который имеет следующие недостатки:

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

эти ограничения кажутся довольно простыми из-за того, что это Eclipse не знает о корневой папке, поскольку она проверяет отдельные проекты из SVN.

мой вопрос: я что-то упускаю, или действительно невозможно использовать Eclipse так, как я бы сделал из командной строки? А если это действительно невозможно, то как с этим справляются другие? Все используют внешние инструменты, такие как командная строка, или TortoiseSVN?

4 ответов


ваше наблюдение верно. Eclipse управляет "командными" операциями, такими как svn, только на уровне проекта. Итак, вы ничего не упускаете; -)

Да, вы должны использовать внешние инструменты для слияния целых отраслей. Черепаха отлично справляется.


объединение нескольких проектов может быть сделано с помощью плагина Eclipse CollabNet Subversion Merge Client. Вы можете найти его в com.компанией collabnet.подрывная деятельность.слияние.

включить его в настройках:

Eclipse Preferences > Team > SVN > Diff/Merge 

и здесь: Merge Implementation: CollabNet Desktop


то, что вы упомянули, действительно является ограничением. Обычно я проверяю всю структуру папок, а затем импортирую отдельные проекты в eclipse. Когда мне нужно выполнить операцию над всем репозиторием, я делаю это вне eclipse, используя командную строку или Tortoise SVN.

Это также боль, что, когда кто-то добавляет новый плагин (я разрабатываю приложение Eclipse RCP), мне нужно вручную добавить его в список проектов, поскольку Eclipse не знает о корне всех проект.


в Eclipse ветвление и слияние SVN прекрасно работает для отдельных проектов, у меня не было никаких проблем при работе с отдельными проектами, которые были разветвлены и должны быть объединены.

однако, если несколько проектов должны быть рассмотрены с одной единицей, то это, по-видимому, невозможно сделать непосредственно в eclipse, каждый проект должен быть рассмотрен индивидуально.