Should I store git repository in Home or Eclipse Workspace?

[*]

I’m too switching to Git in Eclipse, and reading about this issue. It seems that current wisdom (though not everyone agrees) is:

  • Get used to NOT having your projects below the workspace directory.

  • Have one git repository for each group of related eclipse projects (and perhaps more files, of course). The concept of “related projects” is up to your convenience [*]

  • For each repository, one first level directory for each Java project. This implies that you’ll have a .git/ directory, and, at the same level, the project directories.

Example: suppose that, “before GIT”, you had one eclipse workspace with several projects:

/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)

Then you’ll create two empty directories, one for each repository, say:

~/repositories/XXX/ 
~/repositories/YYY/ 

and afterwards, with the new GIT layout, you’ll have:

/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) does all this for you when you click Team->Share over an existing project and specify (in the example) ~/repositories/XXX/.git/ as repository, (~/repositories/XXX/ as “Working directory”, leave “Path within repository” blank).

[*] Bear in mind that here each group of projects is, from the Git point-of-view, just a set of directories inside a repository. Some relevant implications: in the above example, you’ll never have in the Eclipse workspace two different branches/versions of projects projYYY1projYYY2 simultaneously; and, say, when you tag a project commit, you are actually tagging the full repository (group of projects) commit.

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)