Что из проекта Eclipse .metadata можно безопасно игнорировать в Git / Mercurial? - PullRequest
37 голосов
/ 25 ноября 2010

У нас есть код для приложения Eclipse RCP в рабочей области Eclipse, содержащей несколько проектов Java.Мы используем Mercurial с простым .hgignore просто * .class (но та же проблема будет касаться Git).

Даже небольшое изменение кода может привести к изменению многих файлов в .metadata.

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

Кто-нибудь знает, что мы можем безопасно исключить?В качестве альтернативы, как мы можем воссоздать его, если перенесем код на новый компьютер?

Ответы [ 5 ]

51 голосов
/ 25 ноября 2010

GitHub поддерживает проект сообщества "gitignore", который каталогизирует предлагаемые спецификации файлов для игнорирования для различных платформ, редакторов и языков: https://github.com/github/gitignore

Eclipse игнорирует здесь: https://github.com/github/gitignore/blob/master/Global/Eclipse.gitignore

(Если есть другие спецификации файлов, о которых они должны знать, сообщите им!)

32 голосов
/ 03 декабря 2011

Метаданные и рабочая область

Я бы никогда не поделился папкой .metadata. На самом деле, если у вас нет особой причины, я бы даже не поделился папкой рабочей области, а вместо этого поделился каждым проектом отдельно с git. Таким образом, папка .metadata всегда будет находиться в родительской папке вашего репозитория git, и вам не нужно думать о том, нужно ли ее игнорировать:

|-- workspace/
|  \-- .metadata/
|  |-- yourProjectOne/
|  |  \-- .git/
|  |  |-- .project
|  |  |-- src/
|  |  |-- ...
|  |-- yourProjectTwo/
|  |  \-- .git/
|  |  |-- .project/
|  |  |-- src/
|  |  |-- ...

для конкретного проекта

Вы, вероятно, всегда должны предоставлять общий доступ к файлу .project, а не к файлам .settings/. .classpath может зависеть от вашей среды, но я бы не советовал им делиться, потому что это может вызвать конфликты (например, если один пользователь использует openjdk, а другой использует sun-jdk. .settings содержит настройки и настройки для eclipse и сильно изменяется, поэтому не должен делиться им. Если вы правильно импортируете проект после того, как клонируете его из git, у вас также не будет никаких проблем.

В документации eclipse говорится о файле .project:

Цель этого файла - сделать проект самоописываемым, поэтому что проект, который заархивирован или выпущен на сервер, может быть правильно воссоздан в другом рабочем пространстве.

и

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

Я также предлагаю использовать Maven, так как это избавит вас от многих проблем с управлением зависимостями и .classpath

Maven

Основным отличием проекта Maven является то, что вы можете импортировать проект как Maven -> «Существующие проекты Maven», и, таким образом, вам нужно только поделиться файлами pom.xml и .project в git. Eclipse автоматически создаст для вас .classpath, .settings/ файлы. Таким образом, очевидно, вам не нужно делиться ими. Если что-то меняется в pom.xml, вы просто запускаете Maven -> «Обновить конфигурацию проекта» и Maven -> «Обновить зависимости».

Без Maven

Вы должны совместно использовать файл .project, а не папку .settings/. Вы можете рассмотреть возможность совместного использования .classpath, но это может привести к конфликтам, как описано выше. Я бы посоветовал не делиться этим. Используйте метод ниже, чтобы импортировать проект:

После того, как вы клонировали git-репозиторий, вы можете просто использовать Import -> «Existing Project from Workspace», eclipse распознает файл .project, но воссоздает файлы .classpath и .settings/. После импорта вам нужно будет вручную настроить classpath из Eclipse (и каждый раз, когда ваша команда хочет использовать другую библиотеку).

Если вы не передаете файл .project, то невозможно импортировать проект с Eclipse. Сначала вам нужно будет создать новый проект с помощью мастера проектов, а затем выбрать импорт «General-> File System», при этом все файлы будут скопированы в вашу рабочую область. Вероятно, это не то, что вам нужно, потому что это означает, что вы не можете клонировать репозиторий git в рабочую область, вы должны клонировать его где-то еще, а затем импортировать его оттуда. Поэтому вы всегда должны делиться файлом .project.

Пожалуйста, оставьте комментарий, если у вас есть предложения к этому объяснению или вы не согласны с ним. Я надеюсь, что это помогает одному или другому.

15 голосов
/ 25 ноября 2010

Файлы, которые мне лично известны:

  • version.ini (не очень захватывающий)
  • .plugins / org.eclipse.jdt.core / variableAndContainers.dat(переменные classpath)
  • .plugins / org.eclipse.core.resources / .projects / * /. location (проекты в рабочей области)

Где-то у меня есть рабочая область Eclipseиспользуется для тестирования некоторых инструментов, связанных с Eclipse, которые довольно сильно урезаны, но работают.Я посмотрю, смогу ли я выкопать это.

4 голосов
/ 25 ноября 2010

Я обычно храню .project и .classpath, они не только безопасны для git, но и полезны.

.class и .settings находятся в моем gitignore.Они генерируются и зависят от конкретного человека.

4 голосов
/ 25 ноября 2010

Метаданные рабочей области действительно не должны храниться в системе контроля версий.Базовая конфигурация рабочего пространства может быть передана через набор командных проектов .

...