On 1/19/2012 3:48 PM, Neal Kreitzinger wrote:
On 1/18/2012 7:00 PM, Junio C Hamano wrote:
Neal Kreitzinger<nkreitzinger@xxxxxxxxx> writes:
Have you checked where in the filesystem hierarchy that script
is run (hint: pwd)?
echo pwd in post-update echoes /path/WORKTREE/.git in git-push
stdout. ... 'git-checkout -f' works manually, but in post-update
hook...
Stronger hint. Did you run "git checkout -f" in
/path/WORKTREE/.git to back that "works manually" claim?
(Manual behavior): If pwd is WORKTREE/ then git-checkout has correct
effect, ie. worktree, index, and HEAD match. If pwd is
WORKTREE/.git/ then git-checkout complains 'must be run in a
worktree' and has no effect.
(post-update hook behavior): If pwd is WORKTREE/.git/ then git-push
verbage does not complain, and git-checkout exits zero status but
has incorrect effect, ie. index and HEAD match, but worktree matches
HEAD@{1}. If pwd is WORKTREE/ then git-push complains 'not a git
repository', and git-checkout exits non-zero status and has no
effect, ie. worktree and index match HEAD@{1}.
Evidence:
(post-update hook script): MYPWD=`pwd` echo $MYPWD pushd
/home/neal/FSNMSTHTML MYPWD=`pwd` echo $MYPWD git checkout -f HEAD
if [ $? -ne 0 ]; then echo "error on checkout!" else echo "checkout
HEAD to non-bare remote current branch after push" fi echo $MYPWD
popd MYPWD=`pwd` echo $MYPWD
(git-push verbage): $ git push origin HEAD Counting objects: 9, done.
Delta compression using up to 8 threads. Compressing objects: 100%
(5/5), done. Writing objects: 100% (5/5), 462 bytes, done. Total 5
(delta 4), reused 0 (delta 0) Unpacking objects: 100% (5/5), done.
remote: warning: updating the current branch remote:
/home/neal/FSNMSTHTML/.git remote: ~/FSNMSTHTML ~/FSNMSTHTML/.git
remote: /home/neal/FSNMSTHTML remote: fatal: Not a git repository:
'.' remote: error on checkout! remote: /home/neal/FSNMSTHTML remote:
~/FSNMSTHTML/.git remote: /home/neal/FSNMSTHTML/.git To
file:///home/neal/FSNMSTHTML cee9269..34dc5a9 HEAD -> master
To get this to work I had to learn more about shell scripting and export
the GIT_WORK_TREE git environment variable.
(post-update hook):
export GIT_WORK_TREE=/home/neal/FSNMSTHTML
git checkout -f HEAD
for more info see this stackoverflow thread
http://stackoverflow.com/questions/6635018/reuse-git-work-tree-in-post-receive-hook-to-rm-a-few-files
v/r,
neal
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html