Які файли Eclipse належать до контролю версій?


242

Які файли Eclipse доцільно поставити під контроль джерел, окрім джерел, очевидно?

У моєму проекті, зокрема, мені цікаво:

.metadata / *
project-dir / .project
project-dir / .classpath
project-dir / .settings / *

Якщо є якісь із них, від яких це залежить, будь ласка, поясніть свої вказівки.

Відповіді:


175

Метаданими не слід керувати в контролі джерел. Вони містять в основному дані, що стосуються вашої робочої області.

Єдиним винятком є .launchфайли XML (визначення запуску).

Вони знайдені в

[eclipse-workspace]\.metadata\.plugins\org.eclipse.debug.core\.launches

І вони повинні бути скопійовані у ваш каталог проектів: Коли ваш проект буде оновлено, ці конфігурації відображатимуться у діалоговому вікні «Запустити конфігурацію».

Таким чином, тими файлами параметрів запуску також можна керувати в SCM.

(Увага: зніміть опцію «Видаляти конфігурації , коли пов'язаний ресурс видалений» в Run / Запуск / Конфігурація Запуск панелі уподобань: він є загальним для м'якого видалення проекту для того , щоб імпортувати його назад - щоб змусити переініціалізація метадані eclipse. Але якщо це встановлено, цей параметр видалить ваші детальні параметри запуску!)

project-dir/.project
project-dir/.classpath
project-dir/.settings/* 

має бути у вашій SCM (особливо .projectта .classpathвідповідно до документації Eclipse ).

Мета полягає в тому, що кожен може перевірити / оновити свою робочу область SCM та імпортувати проект Eclipse в робочу область Eclipse.

Для цього ви хочете використовувати лише відносні шляхи у своєму .classpath, використовуючи пов'язані ресурси .

Примітка: краще, якщо project-dirпосилається на "зовнішній" каталог проектів, а не на каталог, створений у робочій області eclipse. Таким чином, два поняття (затемнення робочої області проти робочої області SCM) чітко розділені.


Як згадує ipsquiggle у коментарі, і як я вже нагадав у старій відповіді , ви можете фактично зберегти конфігурацію запуску як спільний файл безпосередньо у каталозі проекту. Після цього всю конфігурацію запуску можна виконати як інші файли проекту.

(З допису в блозі Порада: Створення та спільний доступ до конфігурацій запуску від KD)

alt текст


16
(IMO) значно кращий робочий потік для роботи з чим-небудь в .metadata для файлів .launch, це: коли ви редагуєте конфігурацію запуску, на commonвкладці виберіть Save as > shared file. Це безпосередньо виводить його в папку проекту, тому він може бути SCM'd з рештою проекту.
Ipsquiggle

3
Чому .project повинен бути в SCM? Наприклад, я хочу використовувати інструмент метрики коду, який викликає зміни в .project при включенні. Я не хотів би це змушувати всіх користувачів проекту.
jfritz42

8
@ jfritz42: якщо ви зробите локальну та пунктуальну зміну, дійсну лише для вас, тоді зробіть цю версію .projectігнорованою на даний момент лише для вашої робочої області. Але не позбавляйте всіх інших користувачів загального визначення проекту Eclipse, вони можуть швидко імпортувати їх у робочу область Eclipse, лише тому, що у вас є одне додаткове визначення, яке б відповідало лише вашим потребам на даний момент.
VonC

7
Дякую. Я уважно вивчу ці посилання, але вже помічаю, що в першому з ваших посилань одна відповідь починається «остаточно так», а в наступному - «точно» ні. Google сповнений різноманітних, непривітних для новачків порад. Я розумію мету, але як її досягти - це питання. Я походжу з Xcode, де параметри джерела та користувача чітко відокремлені від результатів, що генеруються Xcode та створені компілятором, так що на це питання є проста відповідь. Новачка Eclipse виявляється, що ці файли змішані між собою та розкидані навколо. Я шукаю простий зрозумілий answr
garyp

3
Я родом з землі VisualStudio, і я другий @garyp тут - це справді гарячий безлад - якщо Eclipse потрібно робити тимчасові та / або непотрібні для відстеження файли для користувачів, він повинен розмістити їх де-небудь ще, так що визначення проектів та побудови можна відслідковувати, і все тимчасове сміття не заважає. Хіба десь немає офіційних вказівок команди Eclipse? (Досить зрозуміло, що команда затемнення не проводить тестування [або якщо вони роблять, вони не роблять це ефективно], але принаймні скажіть мені, що вони використовують джерело управління! XD)
BrainSlugs83

19

Зараз я працюю над проектом, де у нас є файли .project та .cproject під контролем джерела. Ідея полягала в тому, що налаштування, пов’язані з бібліотечними шляхами та директивами про посилання, поширюватимуться в команді.

На практиці це не спрацювало дуже добре, злиття майже завжди повертаються в конфліктний стан, який потрібно знеструмити поза затемненням, а потім проект закрити і знову відкрити, щоб зміни вступили в силу.

Я б не рекомендував тримати їх у контролі джерел.


14

Нічого не варто, що файли конфігурації CDT не є зручними для контролю джерел. Там подано помилку для .cproject-файлів, які змінюються дуже часто і викликають конфлікти, див. Спільний доступ до файлів cdt-проекту у сховищі завжди викликає конфлікти .


Yikes - цьому клопі шість років і досі його не чіпають. Очевидно, що підтримка контролю джерел не є пріоритетним завданням для команди Eclipse!
BrainSlugs83

2
Слід також зазначити, що файл .cproject містить інформацію про конфігурацію, яку ви, швидше, не змушуйте інших розробників вручну відтворювати. Тьфу.
Крістофер Барбер

7

Деякі проекти, як-от такі, що використовують Maven, люблять генерувати файли .project на основі POM.

Однак, крім цього - .метадані НЕ повинні знаходитись у контролі джерел. Ваш проект повинен визначитися, чи робить projectdir / .settings, виходячи з того, як ви плануєте керувати стандартами та ін. Якщо ви можете чесно довіряти своїм розробникам, щоб створити їхнє середовище на основі стандарту, і вам не потрібно налаштовувати нічого особливого для будь-якого проекту, тоді вам не потрібно їх вносити. Мені, я рекомендую налаштувати кожен проект конкретно . Це дозволяє розробникам працювати над кількома проектами в одній робочій області, не змінюючи налаштування за замовчуванням вперед і назад, і це робить налаштування дуже чіткими, переосмислюючи всі налаштування за замовчуванням, щоб відповідати стандартам проекту.

Тільки складна частина полягає в тому, щоб усі вони залишалися синхронізованими. Але в більшості випадків ви можете скопіювати файли .settings з проекту в проект. Якщо в контролі джерела є якісь конкретні ви не хочете, виконайте еквівалент налаштування svn: ігноруйте їх, якщо ваш SCM це підтримує.


2
Ми використовуємо Maven 1 і 2, і він генерує файл .project лише в тому випадку, коли ви попросите його. І навіть якщо ви це робите, це робиться на основі вмісту POM, тож якщо інший розробник вже зробив цей крок для вас і перевірив результат на контроль версій, чому б не скористатися цим?
Ендрю Лебедь

6

Файл .classpath, безумовно, є хорошим кандидатом для перевірки в scm, оскільки його встановлення вручну може бути багато роботи і буде важким для нових розробників, які потраплять у проект. Це правда, що його можна генерувати з інших джерел, і в такому випадку ви перейдете до іншого джерела.

Що стосується .установок, це залежить від налаштувань. Це сіра зона, але деякі налаштування майже обов'язкові, і зручно мати можливість перевірити проект, імпортувати його в Eclipse і мати все, що налаштовано, і добре.

Тому в нашому проекті ми підтримуємо копію папки .settings під назвою CVS.settings, і ми маємо завдання мурашки скопіювати її у .settings. Коли ви отримуєте проект із CVS, ви викликаєте завдання "eclipsify" ant, щоб скопіювати налаштування за замовчуванням у нову папку .settings. Коли ви налаштовуєте налаштування, необхідні всім, хто розробляє проект, ви об'єднуєте їх назад у папку CVS.settings і передаєте їх CVS. Таким чином збереження налаштувань у SCM стає усвідомленим процесом. Тут потрібні розробники, щоб час від часу об'єднувати ці налаштування у свої папки з налаштуваннями, коли перевіряються великі зміни. Але це проста система, яка працює на диво добре.


4

Я б сказав, що жоден з них. Вони, швидше за все, містять інформацію, що стосується лише вашої робочої станції (я думаю про шляхи до бібліотек та всіх). Також що робити, якщо хтось із вашої команди не використовує Eclipse?


3
Ні, ви можете мати відносні шляхи у своєму .classpath. Див. Stackoverflow.com/questions/300328#300346 .
VonC

7
Здається, це досить непослідовна / неефективна команда, якщо вони не використовують один і той же розробник. інструменти, проект, налагодження та визначення побудови тощо. Далі ви скажете мені не використовувати загальний стандарт кодування або JDK. - В ідеалі, користувач повинен мати можливість зняти проект з управління джерелом і перейти прямо без багато додаткових налаштувань чи інструкцій. Тож ця відповідь для мене просто неприйнятна.
BrainSlugs83

1
Це набагато неефективніше вирішувати конфлікти у файлах уподобань під час злиття лише тому, що хтось відкрив проект із нового робочого простору - це кошмар у великих проектах. Крім того, примушування використовувати той самий IDE з точно такою ж конфігурацією звучить як зайве обмеження.
А. Родас

Я згоден з [~ agnul]. Проекти повинні використовувати певний інструмент збирання (gradle, maven, ant, тощо.), І IDE має бути в змозі відкрити та налаштувати проект із файлу конфігураційного інструменту збирання (build.gradle, pom.xml, build.xml, тощо ...) Жодні файли IDE не повинні контролюватися версією. Це всі файли для розробника, а не конкретні проекти. Вони прості не належать до контролю версій.
аксіопісти

2

Поміркуйте:

.classpath
.project
.launch

Ці ОСОБЛИВО мати контроль над версіями до тих пір, поки ви дотримуєтесь використання шляхів відносно проекту. Це дозволяє іншим розробникам перевірити проект і почати працювати відразу, не переживаючи всі болі за налаштування, які пройшли також інші розробники.

Ви можете спокусити включити .metadata до контролю версій, щоб розробники Eclipse могли перевірити цілу робочу область і заздалегідь налаштувати всі потрібні проекти, але вона включає в себе багато інформації, що відповідає користувачеві, що будь-коли хтось над цим працює, це буде зміни, тому я б радив НЕ ВКЛЮЧАТИ .метадані. Побудувати локальну робочу область просто, імпортуючи всі існуючі проекти Eclipse.


На мій досвід, це, як правило, різними способами порушується, коли ви оновлюєте Eclipse до нової версії або перемикаєтесь між смаками.
Thorbjørn Ravn Andersen

1

Я витратив занадто багато годин на налаштування параметрів робочої області затемнення для нових колег (і для себе). Що в кінцевому підсумку я зробив, це скопіювати власні .metaдані на нову машину розробника.

Якщо ви працюєте над командою, я вважаю, що наступні дуже хороші кандидати, які слід тримати під контролем версій:

  • Встановлено JRE та їх назви
  • Середовище виконання сервера
  • Шаблони редактора Java
  • Комбінації клавіш для управління версіями
  • Налаштування плагіна, які не передбачають конкретних параметрів проекту
  • Налаштування Maven
  • Попередньо налаштовані перспективи
  • ...
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.