On Wednesday, April 29, 2015 at 1:53:42 PM UTC+2, Konrád Lőrinczi wrote:
> Unfortunately push-to-checkout did not result files in workdir after 
> pushing to server, so it was not usable for me.
>> <https://github.com/git/git/commit/0855331941b723b227e93b33955bbe0b45025659>
Not sure if I'm missing out on something obvious here, but push-to-checkout 
works as expected when trying it out:

# Note that Git version must be >= 2.3
[master][~/temp/foo-web]$ git --version
git version 2.3.6 

# Take some random repo and clone it to a "remote" location:
[~/temp]$ git clone foo foo-web
Cloning into 'foo-web'...

# So, let's pretend that this non-bare repository is on our web-host:
[~/temp]$ cd foo-web

# Configure allowing incoming pushes
[master][~/temp/foo-web]$ git config receive.denyCurrentBranch updateInstead

# Create the basic hook, as examplified in the test in 
[master][~/temp/foo-web]$ vim .git/hooks/push-to-checkout

### contents of the push-to-checkout hook:

echo >&2 updating from $(git rev-parse HEAD)
echo >&2 updating to "$1"

git update-index -q --refresh && git read-tree -u -m HEAD "$1" || {
    echo >&2 read-tree failed
    exit $status

###### EOF

# Make the hook executable
[master][~/temp/foo-web]$ chmod +x .git/hooks/push-to-checkout

#Now let's take it for a spin. Go back to the original repo:
[master][~/temp/foo-web]$ cd ..
[~/temp]$ cd foo
[master][~/temp/foo]$ git remote add web ../foo-web
[master][~/temp/foo]$ git push web master
Everything up-to-date

# OK, that wasn't very impressive. Make some changes first, a new file for 
[master][~/temp/foo]$ echo `random_word` >> heya.txt; git add .;git commit 
-m `random_word`
[master b6765e2] overpaint
 1 file changed, 1 insertion(+)
 create mode 100644 heya.txt

# Away we go:
[master][~/temp/foo]$ git push web master
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 322 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To ../foo-web
   eb2711a..b6765e2  master -> master
[master][~/temp/foo]$ cd ..
[~/temp]$ cd foo-web

[master][~/temp/foo-web]$ ls
README   foo      heya.txt

Does that work for you?

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/d/optout.

Reply via email to