Creating Spring Initializr Project for existing Git repository in Eclipse - eclipse

I'm confused how to setup my project correct. There is already a existing git repository named "DatabaseHub" which is only containing the README.md after my first commit. Then I have there my Spring Initializr zip which I want to use for this repository. I named it databaseHub as well. It's a Gradle project.
When I'm trying to create the project with this zip in Eclipse in my git project I fail.
What I tried: Cloned the git repo (so it is in the project explorer), tried to import the extracted initializr zip with the option "Existing Gradle project" but this won't work cause of the name collision.
I don't get what's the right attempt to start this. Just putting all the files manually in the repo doesn't let Eclipse know that it's even a project now.
Eclipse version is 2019-09.

Try and unzip that project elsewhere on your disk.
Then go to your local Git repository (the one with the single README) and do:
cd /path/to/local/Git/repo
git --work-tree=/path/to/unzipped/project add .
git restore -- .
git commit -m "Import project"
The git restore -- . step (with Git 2.23+, August 2019) will make sure your imported files are checked out and visible within your local repository.
Finally, import the Gradle project: Eclipse should detect the Git repository in it (if not, do a Team > Share)

Related

Egit: How to create a git repository that is in a separate folder from the project workspace in Eclipse?

In Eclipse Oxygen, I created a project called testproj at c:\jwork2019\testproj\. My workspace is at c:\jwork2019\. The project's folder has the content of
c:\jwork2019\testproj\.settings\
c:\jwork2019\testproj\src\
c:\jwork2019\testproj\.project
I would like to create a git repo for the project, located at a separate repo directory at c:\jrepo2019\. I successfully created the empty repo c:\jrepo2019\testproj\.git\. I want it to track all the project's files located at the workspace at c:\jwork2019\testproj\*.
I have successfully created the project and the empty repo via Eclipse and Egit.
The problem is when I tried to Configure Git Repository of the project by right-clicking on the project and then Team -> Share Project..., I could select the repository created, but it changes/moves the project's folder location from my workspace at c:\jwork2019\testproj\ to c:\jrepo2019\testproj\testproj\.
I would like the project workspace directory stays in c:\jwork2019 instead of moving the project directory to the repository folder c:\jrepo2019\....
I am guessing that I can do that via git command line by just git add c:\jworks2019\testproj\*, but I don't think I have the git command line installed, I only have git on Eclipse.
I found the question Can I store the .git folder outside the files I want tracked? that has the same goal. But it does it on linux command line.
Is this achievable in eclipse? And how can I do what I wanna do? Thanks

Clone Git repository to the current eclipse workspace by using EGit

I use eclipse 3.8.2 and I've installed EGit plugin ver 3.6.2.
I'm trying to clone the projects from the remote repository into the current eclipse workspace by using EGit and I see a message notice me that
"C:\Eclipse\Workspace\project is not an empty directory"
(because it's contain .meta-data folder).
So how can I clone the remote repository into the workspaces of eclipse while it's running ? (because I don't want to use the Git Bash to clone it before I start eclipse)
Thank in advance.
It looks like your repository is already cloned (means there is a local repository under c:\Users\username\git
So, either you delete your project directory in your local repo and you clone like you did under eclipse
Or (preferred), you simply add your existing repo into your eclipse workspace with :
Git repository view > Add an existing local Git repository to the view (Icons with green +)> Select your local repo > Right click on it > Import Projects...

Eclipse - Exclude root directory from git repository?

I'm trying to setup a git repository for my Eclipse project using EGit. However, I'm having trouble excluding the root/project directory from the repository. That being, my project has the structure:
ProjectDirectory
src
war
etc
I would like the repository to contain src, war, and etc, but not contain the parent directory ProjectDirectory. That's because if I want to clone a copy of the project in my workspace, ProjectDirectory2, the repository for the second project now will try to create a second root directory, ProjectDirectory. Unfortunately, when I try to add a repository for a project using EGit, I seem to only be able to use Team > Share Project on the project folder itself and I don't seem to see anyway to exclude the root directory in the repository from within Eclipse.
Any suggestions on how to skip the top directory in the repository using EGit? I'd prefer being able to do everything from within Eclipse, but if there isn't a way, is there a way to setup the repository this way outside of git, then still be able to use the git control regularly from within git on the repository skipping the top level directory? Thank you much.
Short answer is It is POSSIBLE with EGIT + M2E
trick is when doing share project -> in the configure git repo window
making sure use or create repository in parent folder of project is ticked
and making sure click create repository button
the main aim of this is to create the .git folder in you project root
not above your project root.
Here's my solution. Though not particularly elegant - the steps are all simple, it works, and can be done in about 10 minutes:
Clone the remote git repo into your local filesystem .. e.g.: ~/git/project_repo_root
Create your eclipse project as usual .. e.g.: ~/workspace/eclipse_project_root
Delete the project from eclipse (but not filesystem!)
Open file manager and move the eclipse project you just created from ~/workspace/ root into ~/git
mv ~/workspace/eclipse_project_root ~/git/
Move the .git/ folder from the repo folder to the eclipse project root folder:
mv ~/git/project_repo_root/.git ~/git/eclipse_project_root
Using a shell go into /eclipse_project_root/ and do the usual command line commands for all files you want in the repo:
git add <abc>; .. commit; .. push
Return to Eclipse and go to Git Perspective, and click "Add an existing local Git repo to this view". Select the git repo you are working with and the view should be updated with an entry for that repo once you say ok.
Once you see the local repo in your view, you can right click it and select Import Projects
Go back to your main development perspective (Java, etc) and you should see the project there with the Git markup on the root node in package explorer view.
~~~~~
At that point, you should see the eclipse project folder you had just moved (to ~/git in the examples described here)
I realize this is more verbose than I would like my answers to be, but for this particular challenge/solution .. I don't know of a more straightforward way to do it.
And as for the post above that describes you should always include the eclipse project root directory .. the reality is some projects/clients/etc require that the git repo not contain the root folder. So a solution like this is necessary sometimes
You should commit the project root for multiple reasons:
If you commit only sub directories of your project, you will miss files and folders which are hidden below the project root (e.g. the .settings directory and others). Those need to be committed also, otherwise your project is going to miss information and may not lead to the same results on another machine.
Your wish of trying to clone the same repository a second time in the same workspace sounds very much like you should re-read about git branches. In git, switching between branches is done after a blinking of the eye, so branches should be used when working on different features, versions or otherwise different editions of your project.
The Eclipse project name and the underlying folder name on disk do not need to be the same (watch out for the checkbox "use default location" when creating a new project). So you can checkout a second clone of the project with a different name.
If you later add more projects to your workspace (e.g. a test project), you cannot easily share them into the same git repository, as the content of those additional projects would mix up with the sub directories of the first project in the repository.
If you have maven project you would typical like to create a repository without the project folder created by egit. For my experience this is not possible with the egit plugin.
But it can be easily done from the git command line.
First move your existing eclipse/maven project from your eclipse workspace into your git folder (this is what also the egit plugin did):
mv myproject ~/git/
next create a new git repository
cd ~/git/myproject
git init
Now create a .gitignore file and place it into your new repository folder (~/git/myproject/.gitignore). This is an example for a .gitignore file:
# ignore all bin directories
# matches "bin" in any subfolder
bin/
# ignore all target directories
target/
# ignore all files ending with ~
*~
# ignore eclipse directories and project files
.settings/
.project
.classpath
Finally initalize your new repository with the content of your project
git add *
git commit -m "My initial commit message"
Thats it.
Now you can restart your eclipse and reimport the project from your new git repository.
Go into your eclipse egit repository view and coose 'import exisiting project'.

Importing multiple maven projects from git into eclipse

I've got a git repository with two Maven projects "foo" and "bar". The structure of the cloned repo is as follows:
myrepo
.git
foo
pom.xml
bar
pom.xml
What I want
Two projects "foo" and "bar" in my workspace with maven nature and working Team menu.
I'm running Eclipse 3.7 with m2e 1.0.0.
I tried the following:
Import -> Check out maven projects from SCM
This clones the repo into a new folder in my workspace folder and imports the two projects, but without connection to git (Team menu is mostly empty).
Import -> Projects from Git
With this option I can only import the entire repo as a single general project (with working Team menu). If I then use "Import -> Existing maven projects", the projects foo and bar are imported but without working Team menu.
Is it possible at all to import multiple projects from a git repo with working Team menus?
As far as I know and are able to perform on my setup (Eclipse 3.7, Egit 1.0.0, m2e 1.0, m2e-egit 0.13), it is not possible in a single step.
The cleanest procedure that I know of is the following:
Clone your Git repository (preferably from Eclipse, otherwise you also need to add the repository to the Git Repositories view);
Import -> Check out existing Maven projects from the root folder of your cloned repo;
Select all the resulting Eclipse projects, and choose Team -> Share project;
Now select Git and check Use or create Repository in parent folder of project.
Long-winded? Sure. But cloning beforehand gives you control over the folder name you check out to, in contrast to Check out Maven projects from SCM which on my machine produces a "maven_{unix_timestamp}" like folder name.
I agree wholeheartedly with you that a quicker procedure should be available.
Here are the steps I used (using eclipse helios, egit and maven plugins)
From git repo perspective, clone your repo (I'm pulling in
git://git.springsource.org/spring-security/spring-security.git for
example)
Use "Import -> Projects from Git" to import as single
general project.
On this project use "Import -> Existing Maven
project" to import separate subprojects.
On each new project, go to "Team -> Share Project ->
Git".
If desired, remove the original project imported in step 2 above. Just remove from workspace, don't remove disk contents.
Create Clone of your Git repository. This can be done by choosing option of clone in'Git Repo Perspective' in eclipse. It will create a local repository in your system. I used bitbucket (GIT) to host my code. It will create a repository with the same name as you have given while creating the repository at your host. At this point of time an empty repository will be created since I have not put anything at host as of now.
Now copy your multimodule Maven project to the local repository which is created in step 1.
Go to eclipse, now click on import --> Projects from GIT -->Existing local Repository -->select your local repository --> import existing projects and we are done.
You will see '?' on your modules. Now select all the projects --> Team -->share projects-->Add index. You will see '+' sign. Now commit and push your changes.
In my case, I have not created the repository at host before hand. I created it through eclipse by pushing the code from my local to host. Vice versa can be done by cloning. If your code is already present at the host, cloning will fetch the code and save it in your local repository and similar steps can be executed to import project into eclipse workspace.

How can I add current Eclipse project to git with EGit?

I have GAE project in my Eclipse and I want to add it to my local git repo, how can I do that?
Since creating a Git repo within a GAE project is possible through command line, it is possible through Egit:
Follow that Egit tutorial:
For a new repo:
Right click your project, select Team -> Share -> Git.
Select the proposed line and press "Create repository". Press finish
Create the file ".gitignore" in your project with the following content.
All files / directories which apply to the pattern described in this file will be ignored
But you can also add it to an existing local repo by:
making a special branch for your project in your local repo (with just the .gitignore file in it)
clone it where your current project is
add all your current project files in it
import said Git repo into your workspace: See 4.2 Clone existing project.
informatik01 adds in the comment a link to a short article describing how to do it using the command line:
Adding Eclipse Project to Git
cd ~/workspace/my-project
git init .