From: Nguyen Thai Ngoc Duy Date: Thu, 21 Jul 2011 03:20:13 GMT Subject: Re: can I use multiple worktree in same git repo ? Message-ID: In-Reply-To: <201107201611.p6KGBvna012304@dcnode-02.unlimitedmail.net> On Wed, Jul 20, 2011 at 11:12 PM, J. Bakshi wrote: > Thanks for your response. I am afraid that I can't understand the approach clearly but I must say that I am hopeful to see a direction. > Obviously there will be a central git repo which will have its worktree under htdocs at the same server. No, the central repository does not need worktree attached (in other words "bare repository"). You modify in a clone from it and push to/pull from it. > That's why the post-receive > hook will update the website after each push. But the issue is mapping the structure at git which is different than the structure at > filesystem. And a push should reflect to its correct folder only. > > [git]->[mysite]->dir1/trunk/src => physically map => htdocs/demo/dir1 > [git]->[mysite]->dir2/trunk/src => physically map => htdocs/demo/dir2 > > > Please tell me with little more clarification, how can I do this ? OK, let's create a central repository GIT_DIR=/somewhere/safe/repo.git git init --bare Then clone it where development happens git clone /somewhere/safe/repo.git ~/dev cd ~/dev Now we create "dir1" and "dir2" branches, correponding to what you have in the original tree git checkout -b dir1 # put contents of dir1/trunk/src here, commit git checkout -b dir2 master # put contents of dir2/trunk/src here, commit Then we push everything back to central repo git push origin +dir1:dir1 +dir2:dir2 Then we clone it to demo sites cd /var/www git clone /somewhere/safe/repo.git dir1 git checkout dir1 cd /var/www git clone /somewhere/safe/repo.git dir2 git checkout dir2 Now you can add a post commit hook to /somewhere/safe/repo.git to move to /var/www/dir[12] and do a "pull". When you push again from ~/dev, /var/www/dir[12] should get updated. Is that what you want? -- Duy