Historically, GitLab has been storing shared files in many different
etc. Having so many shared directories makes it difficult to deploy GitLab on
shared storage (e.g. NFS). Working towards GitLab 9.0 we are consolidating
these different directories under the
This means that if GitLab begins storing puppies in some future version
then we should put them in
shared/puppies. Temporary puppy files should be
In the GitLab application code you can get the full path to the
What is not a 'shared file'
Files that belong to only one process, or on only one server, should not go in
shared. Examples include PID files and sockets.
Temporary files and shared storage
Sometimes you create a temporary file on disk with the intention of it becoming 'official'. For example you might be first streaming an upload from a user to disk in a temporary file so you can perform some checks on it. When the checks pass, you make the file official. In scenarios like this please follow these rules:
- Store the temporary file under
shared/tmp, i.e. on the same file system you want the official file to be on.
- Use move/rename operations when operating on the file instead of copy operations where possible, because renaming a file is much faster than copying it.