Как объединить крупные проекты в Eclipse? - PullRequest
8 голосов
/ 15 января 2010

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

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

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

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

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

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

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

Ответы [ 4 ]

3 голосов
/ 18 января 2012

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

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

Eclipse Preferences > Team > SVN > Diff/Merge 

и там: Merge Implementation: CollabNet Desktop

3 голосов
/ 16 января 2010

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

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

0 голосов
/ 16 января 2010

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

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

0 голосов
/ 15 января 2010

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

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

...