I have a lot of git repositories on my linux (ubuntu) server. I access all of them with the Apache user
www-data. This worked great in the past because I was the only web developer. Now I have more developers and I need to restrict their access to some repositories. How do I modify my server/permissions/git repositories to accomodate this?
Let me show you the current process I go through to set up a repository.
To set up a new repository for the project
project on myserver.com, I issue the following commands from terminal:
ssh firstname.lastname@example.org password: (password for www-data) cd /var/lib/repositories/ mkdir project.git cd project.git git init --bare git update-server-info cd /var/www/git.myserver.com/ ln -s /var/lib/repositories/project.git project
To deploy the project to the url
http://project.myserver.com, I issue the following commands from terminal:
ssh email@example.com password: (password for project) cd /var/www/project.myserver.com/public_html/ git init git remote add origin http://firstname.lastname@example.org/project git pull origin master password: (password for www-data)
project needs to know the password for
www-data to push and pull from the git repository.
How do I modify my server/permissions/gitrepositories so that I can push and pull as
project instead of
Here's what the vhost entry for
git.myserver.com looks like
<VirtualHost 18.104.22.168:80> ServerAdmin email@example.com ServerName git.myserver.com DocumentRoot /var/www/git.myserver.com/public_html/ ErrorLog /var/www/git.myserver.com/logs/error.log CustomLog /var/www/git.myserver.com/logs/access.log combined </VirtualHost>
/var/lib/git is owned by the
www-data user. This way, apache can write to the repos via the symbolic link in
/var/www/git.myserver.com/public_html/project via the url