From: Neal Kreitzinger Date: Thu, 19 Jan 2012 00:32:57 GMT Subject: Re: post-update to stash after push to non-bare current branch Message-ID: <4F1764B9.90907@gmail.com> In-Reply-To: <7vwr8oljq7.fsf@alter.siamese.dyndns.org> On 1/18/2012 4:38 PM, Junio C Hamano wrote: > Neal Kreitzinger writes: > >> hooks/post-update is: >> >> git stash save >> echo "worktree+index of non-bare remote current branch stashed for safety" >> git reset --hard >> echo "git-reset --hard on current remote branch to ensure clean state" >> >> message is echoed, but git-reset --hard does not appear to have really >> worked. (git 1.7.1) > > 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. > Also it is unclear why you keep saying "stash". What kind of changes are > you expecting to be saved to the stash? Will they be changes that are not > source controlled that you would rather not to see? In other words, after > running "stash" every time somebody pushes and having accumulated many > stash entries, when do you plan to pop these stashed changes? > good point. rejection of dirty worktree is a cleaner safety. > I would have expect that such a repository to reject a push if the working > tree is dirty, and run checkout in post-update, though. > 'git-checkout -f' works manually, but in post-update hook it leaves behind dirty worktree, ie. index and HEAD match, but worktree still matches HEAD@{1}. This is the same undesired result git-stash and git-reset --hard leave behind when executed in post-update hook. v/r, neal