Nano Hash - криптовалюты, майнинг, программирование

Следует ли фиксировать файлы, измененные Eclipse?

Я унаследовал проект Java в форме проекта Eclipse. После изменения конфигурации Tomcat (с v6 на v7) Subclipse предложил мне зафиксировать следующие файлы:

  • .classpath
  • org.eclipse.core.prefs
  • org.eclipse.common.project.facet.core.refs
  • org.eclipse.common.project.facet.core.xml

Поможет ли их совершение членам моей команды или испортит их рабочее пространство?

Каков наилучший подход к этому?

27.01.2011

  • См. stackoverflow.com/questions/116121/ или stackoverflow.com/questions/2024307/ или (более общий вариант) stackoverflow.com/questions/1880817/ 27.01.2011
  • Ух ты. Я попытался немного осмотреться. Я думаю, что мой вопрос можно разбить на два или три и получить на каждый из них правильные ответы. Я считаю, что лучшим ответом будет ваш комментарий :-) 27.01.2011

Ответы:


1

Вообще говоря, вы должны регистрировать (и фиксировать после изменений) все, что вносит вклад в сборку, И не может быть повторно сгенерирован путем полной перестройки И зависит от рабочей станции. (Последствия этого утверждения зависят от вашего процесса / процедуры сборки, которая предназначена.)

Это означает, что вы должны исключить все, что повторно создается при полной сборке и т. Д., Чтобы это не регистрировалось (и не предлагалось для регистрации).

27.01.2011
  • Это также означает, что все файлы в вопросе должны быть проверены на предмет зависимых от рабочей станции вещей, таких как пути к файлам и пользовательские настройки. И если в некоторых из них нет ничего зависящего от рабочей станции или пользователя, то нет ничего плохого в фиксации этих конкретных файлов. Например, .classpath может содержать пути к файловой системе, но, возможно, он просто содержит имена библиотек, не зависящих от рабочей станции, а пути к ним определены в другом месте. 27.01.2011
  • @Sergey Tachenov: Да, и это то, что я имел в виду. Значение этого утверждения зависит от вашего процесса / процедуры сборки, которая предназначена. 27.01.2011
  • Я проверил все и увидел, что все файлы не зависят от пути. Я думал, что в Eclipse все будет либо независимо от пути, либо зависимо, но не то и другое вместе ... 27.01.2011

  • 2

    Как правило, вам следует избегать фиксации файлов, содержащих пользовательские настройки и детали проекта, которые Eclipse и / или ваши плагины могут восстановить.

    Но в некоторых случаях все немного туманно. Например, файл .classpath может быть основным источником пути сборки Eclipse; например если у вас есть файлы JAR в дереве проекта, а не с помощью Maven. (С Maven плагин m2eclipse генерирует файл .classpath из информации о зависимостях в файле POM, и, следовательно, этот файл не следует возвращать.)

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

    Отделение групповых / проектных предпочтений от личных предпочтений - одна из областей, в которой (IMO) Eclipse серьезно не хватает.

    27.01.2011
  • Другие IDE лучше, и если да, то как? Я думаю, что eclipse так себе: здорово иметь основные конфигурации проекта в виде текстовых файлов в каталоге проекта. Не так уж и хорошо, если они распределены по разным файлам в разных форматах. 27.01.2011
  • @Michael - Другие IDE лучше - серьезно, я не знаю. И это, вероятно, одна из тех вещей, которую слишком сложно / слишком поздно исправить. 27.01.2011

  • 3

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

    Вы можете использовать какой-нибудь инструмент для сборки, чтобы преодолеть это. (например, Maven)

    Как будто кто-то из членов команды не использует eclipse (используя какой-то другой ide), эти файлы не имеют для них значения.

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

    РЕДАКТИРОВАТЬ:

    Больше объяснений;

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

    Когда люди привыкают к своим IDE, они изучают сокращения, они знают, где искать некоторые функции (рефакторинг / генерация установщика getter / реализация переопределения требуемых методов ....), поэтому, если вы заставите их использовать какую-то другую IDE, они просто сделают вещи труднее для них и медленнее для всего процесса. ИМХО, и по моему опыту всегда хорошо иметь гибкую кодовую базу. Я любитель Eclipse и, вероятно, не хотел бы работать с какой-либо другой IDE, так как я знаю множество сокращений, которые делают работу быстрее / проще для меня, и эти сокращения различаются в разных IDE.

    Все файлы IDE могут быть автоматически восстановлены самой IDE, вероятно, всего за пару кликов.

    И в моем текущем проекте есть 3 разработчика, каждый из которых без проблем использует разные IDE eclipse (я), NetBeans, IDEA. Я не хочу видеть файлы конфигурации IDEA или NetBeans, которые не имеют смысла для eclipse, когда я проверяю источник из репо. То же и для них.

    27.01.2011
  • +1 для аспекта, специфичного для рабочей станции. В свою очередь, я позволил себе добавить этот аспект к своему собственному ответу. 27.01.2011
  • кем? Почему? :) полное предложение вопроса заставит меня понять, в чем вопрос? 27.01.2011
  • @fatih: Хорошо. Кто проголосовал против этого? И почему? Лучше? 27.01.2011
  • Голос против был от меня, потому что ни один из этих аргументов (кроме ссылки на Maven) не является хорошим аргументом в пользу того, чтобы избежать существенных преимуществ проверки этих файлов. 27.01.2011
  • Стандартизация среды IDE или предоставление всем возможности использовать то, что они знают лучше всего, - это компромисс с преимуществами и недостатками с обеих сторон. Но нежелание видеть файлы конфигурации из других IDE по-прежнему является очень плохой причиной их отсутствия в системе контроля версий. Они помогают людям с этой IDE и в худшем случае являются незначительным раздражением для всех остальных. 27.01.2011
  • Пожалуйста, назовите несколько преимуществ, которые заставят людей использовать какую-то конкретную IDE. Как упоминалось ранее, все файлы, специфичные для среды IDE, создаются автоматически и могут быть легко восстановлены в среде IDE, однако это может облегчить жизнь тем, кто не знает, как это сделать в среде IDE, которую они используют, но я все еще не вижу это хорошая причина для фиксации сгенерированных файлов 27.01.2011
  • @fatih, если преимущества пока не ясны, я не знаю, что сказать. Я попробую: использование стандартизированной IDE позволяет согласовать детали конфигурации, которые мы только что обсудили. Если каждый использует то, что хочет, вы можете подготовиться к повторяющимся фазам хаоса, когда кто-то (менеджер сборки?) Должен отлаживать, откуда, и почему, и какие симптомы являются виновниками. Конечно, это может иметь индивидуальное преимущество в производительности, если человек может использовать то, что знает лучше всего. Будучи поклонником стандартизированного командного поведения, я бы проголосовал за общую идею IDE. 31.01.2011
  • fatih, я бы добавил: если вы стандартизируете аспекты IDE, вы можете создать одну группу экспертов, которая создаст конфигурацию IDE и развернет их, проверив ее. Так что не всем нужно искать решения для вопросов, на которые мы только что ответили. Я люблю это. 31.01.2011

  • 4

    Да, но убедитесь, что пути в рабочей области относительны, а не абсолютны. Наличие этих файлов в рабочей области позволяет членам вашей команды работать в той же среде, что и вы. Это также значительно упрощает настройку новой среды разработки: вы просто извлекаете ее из системы управления версиями, а в Eclipse используйте «Импорт ...> Существующие проекты в рабочую область».

    Как упоминалось в @adamdunne, эти файлы могут содержать пути, зависящие от среды. Однако, если вы внимательно следите за тем, чтобы пути были относительными в вашей рабочей области, используя переменные и не импортируя внешние jar-файлы, т. Е. Включая только jar-файлы из проектов в рабочей области, тогда все должно быть в порядке. В моем рабочем пространстве мы проверяем эти файлы, и у нас было намного меньше проблем с настройкой dev. среды с тех пор.

    27.01.2011
  • +1 для указания, как избавиться от деталей конфигурации, специфичных для рабочей станции. 27.01.2011
  • Мы сделали это («Импортировать ...› Существующие проекты в рабочую область »), и именно по этой причине я в первую очередь задал этот вопрос. В настоящее время моя команда находится в режиме обучения, и я хочу перенять как можно больше лучших практик для жизненного цикла проекта. 27.01.2011

  • 5

    Я работаю в проекте, где мы фиксируем файл .classpath, так как очень полезно, чтобы все разработчики использовали один и тот же :) Если вы используете зависимости только внутри своей рабочей области, этот файл использует относительные пути и, следовательно, должен быть одинаковым на всех машинах. Даже если этот файл может не понадобиться для сборки (например, с помощью ant), его очень удобно синхронизировать.

    Напротив, org.eclipse.core.prefs хранит (afaik) специфические для проекта, но личные предпочтения разработчиков, которые я бы не стал проверять.

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

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

    27.01.2011
  • ›› Если вы не уверены, просто попробуйте. ‹< И пусть остальная часть команды тоже сразу же насладится этим опытом, хе-хе-хе. Если у вас весь день возникают конфликты в этих файлах, это означает, что остальная часть команды тоже их получает, и вы успешно взломали сборку :) 27.01.2011
  • ›› Если вы весь день сталкиваетесь с конфликтами в этих файлах, это может быть намек на то, что вы не на правильном пути. :) 27.01.2011
  • org.eclipse.core.prefs хранит такие вещи, как исходная и целевая версии компилятора Java, а также настройки предупреждений / ошибок, которые я считаю весьма полезными, НЕ чтобы каждый разработчик решал сам. 27.01.2011
  • Комментарий от @Michael ... Где я могу узнать, где что хранит Eclipse? 27.01.2011
  • @dimitris: вот в чем проблема ... Я не думаю, что это где-то официально задокументировано. Но файлы конфигурации обычно вполне читабельны. 27.01.2011

  • 6

    Эти файлы могут быть очень полезны для обмена конфигурациями между разработчиками. Альтернативой является либо использование Maven (что является огромной задачей для уже существующего проекта), либо постоянно устаревшие пошаговые инструкции, а новым разработчикам требуется полдня, пока они даже не смогут собрать проект.

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

    27.01.2011
  • Я также написал это в другом комментарии, я полагал, что у затмения все пути относительные или абсолютные, но не оба одновременно. Это основная причина, по которой я разместил этот вопрос. Основываясь на этом и подобных советах, я начал просматривать каждый файл и видеть, что происходит в каждом из них. Большое спасибо. 27.01.2011
  • @dimitris: Определенно возможно и то, и другое. Например, при добавлении JAR к пути сборки проекта (что приводит к записи в файле .classpath) у вас есть опции Добавить JAR, которые позволяют выбрать файл из рабочей области и генерировать относительный путь, и Добавить Внешние JAR-файлы, которые позволяют выбрать любой файл и генерируют абсолютный путь. 27.01.2011

  • 7

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

    Их игнорирование также делает ваш проект чище, что мне всегда нравилось.

    27.01.2011
  • Я не делал этого отрицательного голоса, но полагаю, что отрицательный голос посчитал, что чище, слишком расплывчато, как могло бы быть в случае беспорядка в рабочем пространстве. Типичная ситуация новичка: вы пытаетесь, и вас сбивают с толку. Продолжайте, @cgratgny, учитесь на этом, и ваш баланс очков рано или поздно взорвется. Только не расстраивайтесь из-за этого начального обучения, это можно считать нормальным. 27.01.2011
  • Спасибо за комментарий, @TheBlastOne. Я знаю, что пытался ... просто не так красноречиво, как другие, в решениях, которые они предоставляют. 30.01.2011

  • 8

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

    27.01.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..