Должен ли я хранить git-репозиторий в Home или Eclipse Workspace?
Я просто перехожу из svn в git и хочу заложить хорошие основы.
По умолчанию Eclipse хочет сохранить мой локальный репозиторий клонов в ~/git. Мне удобнее хранить все данные для задачи в одной рабочей области, поэтому я склонен хранить их в своей рабочей области.
Есть ли какие-то существенные плюсы / минусы, которые я должен рассмотреть?
Я не собираюсь делать много ветвлений - я действительно иду по маршруту dvcs главным образом, чтобы преодолеть некоторые ненадежные проблемы интернет-связи.
3 ответа
Я тоже переключаюсь на Git в Eclipse и читаю об этой проблеме. Кажется, что текущая мудрость (хотя не все соглашаются):
Привыкайте НЕ иметь свои проекты в каталоге рабочего пространства.
Иметь один git-репозиторий для каждой группы связанных проектов затмений (и, возможно, больше файлов, конечно). Концепция "связанных проектов" зависит от вашего удобства [*]
Для каждого репозитория - один каталог первого уровня для каждого проекта Java. Это означает, что у вас будет
.git/
каталог, и, на том же уровне, каталоги проекта.
Пример: предположим, что "до GIT" у вас было одно рабочее пространство затмения с несколькими проектами:
/wk/workspace/.metadata/
/wk/workspace/projXXX/
/wk/workspace/projXXXtest/ (related with the previous)
/wk/workspace/projYYY1/ |
/wk/workspace/projYYY2/ > three related projects
/wk/workspace/projYYY3/ |
/wk/workspace/projZ/ (a project you are not going to version in git)
Затем вы создадите две пустые директории, по одной для каждого репозитория, скажем:
~/repositories/XXX/
~/repositories/YYY/
и впоследствии, с новым макетом GIT, вы будете иметь:
/wk/workspace/.metadata/
/wk/workspace/projZ/
~/repositories/XXX/.git/ (XXX related repository - non-bare)
~/repositories/XXX/projXXX/
~/repositories/XXX/projXXXtest/
~/repositories/YYY/.git/ (YYY related repository - non-bare)
~/repositories/YYY/projYYY1/
~/repositories/YYY/projYYY2/
~/repositories/YYY/projYYY3/
Eclipse (EGit) делает все это за вас, когда вы нажимаете Team->Share над существующим проектом и указываете (в примере) ~/repositories/XXX/.git/
в качестве хранилища, (~/repositories/XXX/
как "Рабочий каталог", оставьте "Путь в хранилище" пустым).
[*] Имейте в виду, что здесь каждая группа проектов, с точки зрения Git, представляет собой просто набор каталогов внутри репозитория. Некоторые важные выводы: в приведенном выше примере в рабочей области Eclipse никогда не будет двух разных веток / версий проектов. projYYY1
-projYYY2
одновременно; и, скажем, когда вы помечаете коммит проекта, вы фактически помечаете коммит полного репозитория (группы проектов).
.git
должно быть там, где находится ваше рабочее дерево (это файлы, представляющие текущий заголовок текущей ветки, над которой вы работаете)
Помните, что в Git ветви не являются каталогами (в отличие от SVN), поэтому ваше рабочее дерево будет представлять непосредственно содержимое ветви, а не несколько каталогов (для ваших различных ветвей), за которыми следует содержимое для каждой ветви.
Мне обычно нравится отделять источники моего проекта от моего рабочего пространства Eclipse, но это вопрос предпочтений.
Я думаю, это хорошая идея хранить дерево версий git вне рабочей области. Таким образом, можно отделить проекты от разных репозиториев, но при этом обрабатывать их в одной рабочей области.
Кроме того, если вы поместите код за пределы рабочей области, вы можете организовать свои проекты иерархически за пределами рабочей области (в рабочей копии), но по-прежнему видеть плоское представление в Eclipse.