Git and Eclipse: show files outside of a project - eclipse

Disclaimer: I'm new to EGit but familiar with command line Git.
In Eclipse Neon, I have a configured Git repository with this structure:
.git
README.md
.gitignore
projectA
.project
projectB
.project
projectC
.project
Problem: In Enterprise Explorer, Navigator, Project, and Package Explorer, I can only see ProjectA, ProjectB, and ProjectC, not README.md and .gitignore.
Question: How can I modify README.md and .gitignore from inside Eclipse?
Environment: Under Enterprise Explorer > Available Customizations, I have unchecked .*resources. Under Navigator > Filters I have unchecked .*

Package/Project Explorer, Navigator, etc. show only files of into Eclipse imported/opened projects. Files that are starting with . are hidden in the Package/Project Explorer, but are shown in the Navigator view by default.
In the Git Repositories view navigate to the file under the Working Tree node and double-click to open the file. Alternatively, use File > Open File....
Edit and save the file
In the Git Stagging view commit/push the file as usual

An alternative to what #howlger suggested is to create a project at the root of the repository working directory so that the readme and gitignore file become members of the workspace.
Create a General Project at the root of the working directory
Open the New Project wizard (File > New > Project) to create a General Project. Choose a project name of your choice, uncheck the Use default location checkbox, and enter the location of the repositories' working directory in the Location input field.
This will create a .project file with project metadata in the root of the working directory. If all team members use Eclipse as their IDE, it may make sense to commit this file to the repository.
(Optionally) use resource filters to exclude nested projects
Now, the Package Explorer and other navigation views show a project that contains all files and folders within the working directory, including folders that contain nested projects.
Resource filters can be used to exclude folders that contain nested projects so that only those files and folders appear that are not already shown within other projects.
To add a resource filter, open the Properties dialog of the root-level project and open the Resource > Resource Filters page. Often, all nested projects follow a common naming pattern. In this case a File and Folder Attributes filter that specifys a pattern to match the folder name can be used to exlude them. Otherwise, the Extras for Eclipse plug-ins offer a feature to exclude all Nested Wprkspace Projects.
Pros and Cons
Having all files in a repository within the IDE allows to easily edit and navigate through files including decorators that indicate the change status of all files.
Some users, however, may consider having an extra .project file at the root directory of the repository as a downside.

Related

Folders are not listed in Eclipse's Project view - preventing marking a folder as "source folder"

I have messed up my Eclipse project and am trying to create a new workspace and re-importing everything but that is more complicated than one would expect.
Currently the problem is that Eclipse doesn't recognize in what folders the source files are stored. Usually you can right click on a folder and mark it as a source folder:
But in my new workspace, no folders are displayed, only packages, and it looks the same in Package explorer and Project explorer:
As you can see src is in the "path" but visually it is not a folder on a separate level in the hierarchy.
If I create another workspace and add a couple of projects it looks right:
Why are my folders missing? How do I make Eclipse show them and/or select them as source folders?
src is inside of a folder that is already set as a source folder. You'll have to unset the parent folder as a Source folder before you can set src to be one.

EGit creates separate project folder in repository

I'm struggling to create a repository for my Maven project in Eclipse. Whatever I try it turns out like so:
\ProjectA
----\.git
----\ProjectA
--------\src
--------\pom.xml
While I'd like it to be like so:
\ProjectA
----\.git
----\src
----\pom.xml
Is there any way for it to not create a separate folder under the working tree?
I'm not sure if it is the only or the best way, but creating empty repo from git directly then moving files and reimporting in Eclipse did the trick.
In case anyone needs this later:
In folder you want your repo in:
git init
Copy your sources and pom.xml and other needed files there (I also recommend creating .gitignore file at this point), then:
git add --all
git commit --m "Initial commit msg"
Then open Eclipse, delete your project and reimport it as existing Maven project directly from your repo. In my case it already recognized repo as well.
From my understanding, you are trying to create a Git repository with a single Eclipse project, located at the root of the work directory.
open the EGit Repositories view and select the Create a new Repository action
enter the name of the directory in which the repository should be created and select Finish
make sure that auto-sharing projects is enabled (enabled by default, in doubt, see Preferences > Team > Git > Projects)
open the New Java Project and enter a project name
uncheck Use default workspace location and enter the exact same path as the repository work directory (see 2.)
go to the Package Explorer, select the new project, open the context menu and select Configure > Convert to Maven Project
The detour of creating a Java project first and then converting it into a Maven project seems necessary because the New Maven Project wizard apparently always adds the Group Id to the location path.

Importing GIT project into eclipse mangles package names

I'm trying to import a GIT repository into my eclipse (luna, 4.4).
The imported packages have "src" prefixed to the correct package name.
E.g. instead of com.myproject.test I see src.com.myproject.test.
I'm a GIT newbie. Any insight is greatly appreciated.
Your .classpath file was not committed into the repository, so Eclipse does not correctly know where the root of your sources are. Bring up the project's Properties Dialog (use the context menu or the main menubar's Project menu) and go to the Java Build Path page. On its Source tab, you can remove the project folder itself and set src as the Source Folder to use (not that you're limited to just one in the future).

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'.

Import existing mult-rep CVS project folder into Eclipse

I wish to import an existing CVS managed project into Eclipse. I am currently trying to shift my work on to the Eclipse IDE. Some details about my project and environment below.
I'm working in Linux Ubuntu, the project folder is located on a mounted shared network drive, I have installed the "Eclipse CVS Client" plug-in for my version of Eclipse (Helios).
I've tried many ways for eclipse to use my existing folder as a project and recognize the CVS data in the CVS folders.
I have done the following options:
Created a new project, selected existing source, located my project folder and clicked OK to finish creating. In the end the CVS files weren't automatically read.
Did the same as above and after project creation I wen to the option "project menu->team->share project", it asks me to choose a repository and doesn't automatically find the CVS information in the subfolders.
I have set-up both repositories in my eclipse and can browse the repositories through the CVS browser.
My project directory layout is like this:
+-Project Folder (no CVS folder at this level)
+---Repo A folder
+-----CVS meta-info folder is INSIDE, along with all checked out files from Repo A
+
+---Repo B folder
+-----CVS meta-info folder is INSIDE, along with all checked out files from Repo B
+
+-(couple of random files, not in CVS)
Just right-click on your project and click Team -> Share Project. Eclipse will detect that the folder is already shared and resolve the connection with CVS.
Actually I cannot answer your question (I think it should work as you explaned) but I might have a workaround. Could you remove or rename the existing folder and do a fresh check out from your eclipse/CVS repository exploring view?