Where's the conventional place to store git repositories in a linux file system tree?

Samuel Rossille asked:

If I make an analogy with the hosting of a web server, I would say that git’s data should be in /var/git, so my git repository would be in /var/git/myrepo

Q: Is that the right guess ?

My answer:


Place it in a directory (or shared filesystem) under /srv. This is what it’s for.

The /srv directory is intended for site-specific data served by the system. From the standard:

This main purpose of specifying this is so that users may find the
location of the data files for particular service, and so that
services which require a single tree for readonly data, writable data
and scripts (such as cgi scripts) can be reasonably placed. Data that
is only of interest to a specific user should go in that users’ home
directory.

The methodology used to name subdirectories of /srv is unspecified as
there is currently no consensus on how this should be done. One method
for structuring data under /srv is by protocol, eg. ftp, rsync, www,
and cvs. On large systems it can be useful to structure /srv by
administrative context, such as /srv/physics/www, /srv/compsci/cvs,
etc. This setup will differ from host to host. Therefore, no program
should rely on a specific subdirectory structure of /srv existing or
data necessarily being stored in /srv. However /srv should always
exist on FHS compliant systems and should be used as the default
location for such data.

Distributions must take care not to remove locally placed files in
these directories without administrator permission.


On an SELinux-enabled system, the default directory is /var/www/git, and repos should be in subdirectories thereof. Or, you can use, e.g. /srv/git and set the file context to be equivalent:

semanage fcontext -a -e /var/www/git /srv/git

View the full question and answer on Server Fault.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.