On Mon, 24 Feb 2014 12:52:05 -0800 (PST) Jirong Hu <jirong...@gmail.com> wrote:
> http://git-scm.com/book/en/Git-on-the-Server-Public-Access > > I was following the above link to setup http access for GIT. But > after this > issue:https://groups.google.com/forum/#!topic/git-users/nL0qZXiBHqw, > I think my http settings are not right. This is what I do: > 1. Change the DocumentRoot= /opt/git, since /opt/git/simple.git is > the repository I want to access. > 2. Created a git.conf in /etc/httpd/conf.d, has the LDAP access > information. It works fine. > 3. chmod a+x simple.git/hooks/post-update ^^^^ 1. 'x' alone is not enough to execute a program--'r' is needed as well. 2. Granting execute permission to "all" ('a') is not needed if the user or a group of users which are about to execute that hook are already granted these permissions explicitly. > There is one more thing I am not sure: the permission of > /opt/git/simple.git. Who shall own this directory? The URL above says > "www-data", but I cant' find this group name in my server. My Apache > is running under apache:apache. "www-data" is a Debianism, found on Debian and its derivatives (Ubuntu included); since Ubuntu is the winning distro even on servers these days, many guides found in the internets just assume this "common ground". So substitute "system user for the Apache web server" instead of "www-data" and proceed. [...] > drwxrwsr-x 7 root ccusers 4096 Feb 21 14:22 simple.git [...] Well, the guide from The Book you followed is unfortunately outdated: it deals with the so-called "dumb" HTTP transport which still works in newer versions of Git but is not recommended for using as it's *slow:* it basically crawls over the objects and packfiles it literally fetches one by one using HTTP calls. For this setup, your settings look mostly okay. One caveat though: the purpose of the post-update hook is to call a special Git command which prepares the repo *updated with the last commit* to be fetched from using that dumb HTTP transport. So if you didn't run that hook (either by hand (note that you should `su` to the Git's user first!) or by pushing to that repo using SSH) your client Git won't fetch anything useful. Hence I'd say the real way to fix this is to set your web server up to serve the newer "smart" HTTP transport which basically uses the web server to host a CGI Git process which, when started, communicates directly with the Git client process making the whole thing work as fast as fetching via native Git protocol ("git://", served by `git-daemon`). This guide  explains how to set things up. 1. https://www.kernel.org/pub/software/scm/git/docs/git-http-backend.html -- You received this message because you are subscribed to the Google Groups "Git for human beings" group. To unsubscribe from this group and stop receiving emails from it, send an email to git-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.