2016-12-15 22 views
1

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

У меня есть проекты в Eclipse под /workspace/project1 и /workspace/project2. Это проекты Gradle и зависят друг от друга. У меня также есть /workspace/project3, который является проектом Gradle, но независимым.

Мне нужно «загрузить» их в репозиторий git на Bitbucket. Я установил EGit, чтобы помочь мне в этом. Он спрашивает меня, где находится мое местное репо, и я не знаю, что сказать. Должен ли я создать репо на рабочее пространство или на группу зависимых проектов или что?

Например, когда я нажимаю правой кнопкой мыши проект и нажимаю Team > Share > Git Я добираюсь до этого диалогового окна, и я не знаю, что я должен заполнить там.

enter image description here

ответ

1

Каждый (non-bare) git-репозиторий имеет рабочий каталог, в котором хранятся файлы зафиксированного в настоящий момент фиксации (называемые HEAD).

По умолчанию рабочий каталог является родителем каталога метаданных git (с именем .git), но его можно отсоединить через config setting. Например: git config core.worktree /path/to/workdir

EGit не может иметь дело с хранилищами, которые имеют отдельностоящий рабочий каталог, как ответил здесь: EGit working directory not under the local repository

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

Таким образом, вы должны переместить проекты в директорию напоминают такую ​​структуру:

~/git/my-repo/.git 
~/git/my-repo/project1 
~/git/my-repo/project2 
~/git/my-repo/project3 

Если project3 не зависит от других, он может оставаться там, где она есть, или быть расположен где-то совсем другое.

Предупреждение при планировании взаимозависимых проектов, расположенных по нескольким репозиториям git. Это делает git-хранилища эффективно взаимозависимыми, но без git, имеющих инструмент управления зависимостями.

Чтобы управлять проектами EGit, вы должны ввести project1 в поле Путь в репозитории поле ввода.

Обычно используемые файлы сборки, такие как master pom.xml или соответствующие файлы Gradle, будут расположены в корне каталога работы. Это также упрощает настройку популярных сервисных сервисов, таких как Travis, Codeship и друзей.

+0

Зачем нужен уровень моего репо? Есть ли что-либо на том же уровне, что и внутри 'git'? – Mark

+0

'my-repo' - это каталог, в котором хранится ваш репозиторий, и его следует назвать соответствующим образом. Вы можете опустить каталог 'git', хотя обычно у вас будет несколько репозиториев, и большинство людей группируют все репозитории в общем родительском каталоге. Но это чисто организационный аспект. –

+0

Итак, вы предполагаете, что проекты с 1 по 3 находятся в одном и том же репо, хотя 3 независимы и 1 и 2 зависят? – Mark

1

Несколько вещей, чтобы понять/иметь в виду:

  • затмении рабочее пространство представляет собой логический контейнер проектов, не обязательно физический контейнер. Папка, в которой находится рабочий файл, также может быть физическим контейнером проектов, то есть файлы проекта могут быть расположены в папке под папкой рабочей области (это местоположение по умолчанию, если вы создаете новый проект в Eclipse). Но это не требование; проект, содержащийся в рабочей области, может содержать свое содержимое (его файлы) в любом месте вашей файловой системы.
  • В большинстве конфигураций dev локальные репозитории git расположены в «стандартном» местоположении в домашнем каталоге пользователя, а именно %USER_HOME%/git/name-of-repo. Опять же, это не является жестким требованием, пользователи имеют возможность клонировать или создавать репозитории в любом месте, которое они выбирают.

Так Eclipse eGit показывает вам эти две оси гибкости. Он спрашивает, где вы хотите создать локальное репозиционирование git, которое обычно отличается от вашей папки рабочего пространства. Используйте кнопку Создать ..., чтобы создать ее. Я думаю, что в этот момент он автоматически заполнит Путь в репозитории. Если это не так, вы можете назвать этот путь тем, что хотите (обычно это то же самое, что и имя проекта, хотя это необязательно)

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

+0

Итак, после этой операции проекты будут * перемещаться * (не копироваться) из каталога рабочего пространства в каталог git repo? Просто хочу убедиться, что я избегаю ситуаций, когда у меня есть 2 копии моего кода, как я видел в других вопросах. – Mark

+0

Честно говоря, я не уверен, что он переместит файлы или нет. Я просто попробую, а затем осмотрю оба места, чтобы посмотреть, что это за ситуация. –

+0

Если вы заинтересованы: он переместил проект из моей рабочей области и в репозиторий git. Спасибо за помощь. – Mark