Лучше ли хранить Git-репозиторий внутри или вне рабочей области Eclipse?

Я типичный пользователь Eclipse/Subversion, начинающий переход на Git. Я исследовал основные концепции git и решил изначально придерживаться одного проекта для каждого хранилища, чтобы все было просто. У меня все еще проблемы, когда я решаю, где разместить репозиторий для каждого проекта.

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

Что больше всего меня поразило в этом вопросе, так это тот факт, что все, кроме одного ответа (включая принятый ответ), предлагали хранить репозиторий в рабочей области Eclipse, тогда как только один ответ указывал, что Руководство пользователя EGit рекомендует совершенно противоположное,

Однако на практике может показаться, что Eclipse/EGit использует ряд подходов, некоторые из которых, по-видимому, противоречат рекомендациям EGit.

Например, если вы используете мастер нового проекта для создания нового проекта PHP из Git, а хранилище удаленно, Eclipse/EGit с радостью создаст папку проекта в рабочей области Eclipse и поместит хранилище (.git) в папку проекта. Это конечный результат, который я на самом деле хочу, так как он сохраняет все инкапсулированным в рабочей области Eclipse.

Однако, если вы используете мастер New Project Wizard и выбираете локальный репозиторий Git, Eclipse/EGit не клонирует репозиторий, как это делается для удаленных репозиториев. Вместо этого он использует рабочую копию этого репозитория в качестве местоположения проекта, создает его.project и другие метаданные в этом месте, а также создает новую (на первый взгляд ненужную) папку в этой рабочей копии с тем же именем, что и ваш проект (так что вы заканчиваете например, ~/git/blah/blah). Если вы удалите эту лишнюю папку, вы получите структуру, идентичную первому примеру, с той лишь разницей, что папка проекта не является подпапкой вашей папки рабочего пространства Eclipse, она находится где-то еще в вашей файловой системе (например,, ~/git/blah). Единственный положительный момент, который этот подход, похоже, имеет для этого, заключается в том, что он придерживается рекомендаций, изложенных в Руководстве пользователя EGit, но с технической точки зрения трудно понять, насколько он действительно отличается от первого примера.

Учитывая эти удивительные наблюдения, мне интересно, какой опыт люди испытали, используя каждый из этих подходов, и какие могут быть подводные камни, если игнорировать рекомендации в Руководстве пользователя EGit.

3 ответа

Решение

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

Это может привести к проблемам с производительностью

к сожалению очень верно. Так что, если у вас есть каталог git с огромным количеством файлов в вашей рабочей области, многие операции git начнутся с диалога "подсчет объектов...", который блокирует вашу IDE, потому что он сканирует все файлы в рабочей области. Для моих текущих 20000 файлов это означает ожидание от 10 до 20 секунд для каждого коммита, каждого переключателя, ...

В свободное время, где я, к счастью, могу использовать другую альтернативу (с рабочим каталогом git вне рабочей области) все чувствует себя намного быстрее, и объединять и переключать весело.

Поэтому, если вы работаете с большими проектами, рассмотрите каталог git вне рабочей области как первый выбор.

Почему бы просто не позволить 2 возможности.

Я в порядке в случае большого проекта, который генерирует много файлов в папке.metadata. Даже если довольно просто поместить строку.metadata в.gitignore, чтобы повысить производительность.

Но в моем случае (разработка Android) у меня есть около 35 различных проектов, содержащих только 50 файлов.

Все эти проекты находятся в разных пространствах, содержащих проект приложения и проекты библиотек для этого приложения. (Один репозиторий с подмодулями на приложение)

  • Должен ли я иметь только одно рабочее пространство со всеми моими проектами внутри (тратить время на прокрутку / закрытие / открытие проектов в проводнике пакетов)?

  • Должен ли я управлять 2 разными базовыми папками (Projects и Worskspaces), последняя из которых содержит только папки.metadatas всех моих проектов?

Для меня это не имеет смысла.

Сообщение для команды EGit:

Почему меняется способ, которым разработчики обычно организуют папки своих проектов:

---- Worspace

---- Worspace /.metada

----- Worspace /.git

----- Worspace / Project1

----- Worspace / LibraryProject1

----- Worspace / LibraryProject2

Я понимаю причину производительности, но только для 5% разработчиков с очень большими проектами (генерирующими большие метаданные) вы просто не позволяете нам структурировать наши проекты, как Eclipse советует нам делать годами.

Не могли бы вы, даже если сообщение предупреждает нас, что это не рекомендуется, не блокируйте процесс клонирования в папке Worspace ("C:\Worspaces\ не является пустым каталогом")

EGit - отличный инструмент, но я действительно думаю об использовании Bash, потому что это
ограничение.

Спасибо за ваш ответ

PS: Есть много разных случаев разработки под Eclipse. Если это просто проблема с производительностью, и если это не приводит к сбою EGit, пожалуйста, просто предупредите нас об этом, но не блокируйте нас в случае небольших проектов.

Я выполняю ту же миграцию, что и оригинальный постер, и нашел другую ветку, в которой высказываются те же сомнения в рекомендации Egit: следует ли хранить git-репозиторий в Home или Eclipse Workspace?

@JamesG Так это твой макет?

~/projectA/workspace/.metadata
~/projectA/workspace/subproj1/.project
~/projectA/workspace/subproj2/.project
~/projectA/subproj1/.git
~/projectA/subproj1/file1
~/projectA/subproj2/.git
~/projectA/subproj1/file2
Другие вопросы по тегам