threads / discuss / 3244

What is the working directory for post-update hook?

Subject: What is the working directory for post-update hook?

## tl;dr

4 messages between Feb 5, 2006 and Feb 5, 2006.

replies: 3people: 2as markdown or json

Alan Chandler· Feb 5, 2006, 09:06 UTC · lore

The document root of my website has a git repository under it (in the standard .git subdirectory) and want a post update hook to checkout the contents (so the web server sees it!)

I will be pushing to it via ssh.

Does this mean that the post-update hook with be run with a working directory of the web site's document root? or something relative (such as GIT_DIR) so that I don't have to do a specific cd to an absolute path.

-- 
Alan Chandler
http://www.chandlerfamily.org.uk
Open Source. It's the difference between trust and antitrust.
Alan Chandler· Feb 5, 2006, 09:37 UTC · re: Alan Chandler · lore

Re: What is the working directory for post-update hook?

On Sunday 05 February 2006 09:06, Alan Chandler wrote:
Show 9 quoted lines
> The document root of my website has a git repository under it (in the
> standard .git subdirectory) and want a post update hook to checkout the
> contents (so the web server sees it!)
>
> I will be pushing to it via ssh.
>
> Does this mean that the post-update hook with be run with a working
> directory of the web site's document root? or something relative (such as
> GIT_DIR) so that I don't have to do a specific cd to an absolute path.
I found it out, by getting the post update hook to e-mail me the value:-)
its in the repository (ie document_root/.git)
-- 
Alan Chandler
http://www.chandlerfamily.org.uk
Open Source. It's the difference between trust and antitrust.
Junio C Hamano· Feb 5, 2006, 09:41 UTC · re: Alan Chandler · lore

Re: What is the working directory for post-update hook?

Alan Chandler <alan@chandlerfamily.org.uk> writes:
Show 9 quoted lines
> The document root of my website has a git repository under it (in the 
> standard .git subdirectory) and want a post update hook to checkout the 
> contents (so the web server sees it!) 
>
> I will be pushing to it via ssh.
>
> Does this mean that the post-update hook with be run with a working directory 
> of the web site's document root? or something relative (such as GIT_DIR) so 
> that I don't have to do a specific cd to an absolute path.

The current implementation happens to chdir to GIT_DIR and sets GIT_DIR=. in the environment, so if you have something like this:

	/var/www/myproject/
	/var/www/myproject/.git/
	/var/www/myproject/.git/HEAD
	/var/www/myproject/.git/...
        /var/www/myproject/README

Then $(pwd) would be /var/www/myproject/.git/. Your hook would probably be able to do "cd .." to get to the project top.

However, there is no guarantee for future implementations.
Alan Chandler· Feb 5, 2006, 10:58 UTC · re: Junio C Hamano · lore

Re: What is the working directory for post-update hook?

On Sunday 05 February 2006 09:41, Junio C Hamano wrote:
Show 24 quoted lines
> Alan Chandler <alan@chandlerfamily.org.uk> writes:
> > The document root of my website has a git repository under it (in the
> > standard .git subdirectory) and want a post update hook to checkout the
> > contents (so the web server sees it!)
> >
> > I will be pushing to it via ssh.
> >
> > Does this mean that the post-update hook with be run with a working
> > directory of the web site's document root? or something relative (such as
> > GIT_DIR) so that I don't have to do a specific cd to an absolute path.
>
> The current implementation happens to chdir to GIT_DIR and sets
> GIT_DIR=. in the environment, so if you have something like
> this:
>
> 	/var/www/myproject/
> 	/var/www/myproject/.git/
> 	/var/www/myproject/.git/HEAD
> 	/var/www/myproject/.git/...
>         /var/www/myproject/README
>
> Then $(pwd) would be /var/www/myproject/.git/.  Your hook would
> probably be able to do "cd .."  to get to the project top.
>

I did get it to work doing a cd .. - although you also have to unset GIT_DIR, because its is literally "." and not the directory that was "." at the time of setting, so a cd .. ; checkout -f then fails with an invalid repository.

-- 
Alan Chandler
http://www.chandlerfamily.org.uk
Open Source. It's the difference between trust and antitrust.

← back to recent threads