Re: git for pushing local subdir to website

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Monday 03 August 2009 12:09:26 Matt Di Pasquale wrote:
> yes... i've thought of that. that's a good idea. i just love git and
> i've never really used rsync. how do i do that?
> i'll go google it..

Rsync can do a lot of things, but the usual easy way to do it is to do 
something like this to send files via rsync over an ssh connection:

rsync -av /some_dir/ user@host:/some_dir/

This is essentially the same as using scp, but rsync saves a lot of network 
bandwidth by only sending the changes between the source and destination.

> i guess it would also be nice to use git though incase i decide i want
> a collaborator, right?

Setting things up to have a collaboration is kind of orthogonal to 
installing a production version of your app, but you could use the same 
server (and possibly the same git repository) for both things if you wanted 
to.

Here an example of one way to do it:

On the server you could have a normal git repository in, say, 
/home/me/myapp, and it always has the "production" branch checked out. So 
now the following directories are interesting:

/home/me/myapp              -- repository branch w/ "production" checked out
/home/me/myapp/.git         -- the actual bare git repository
/home/me/myapp/example.com/ -- the files that the web server should see

Now, you can use symlinks (or web-server configuration) to point the 
webserver to the right locations, for example:

http://example.com/myapp/     -- link to /home/me/myapp/example.com/
http://example.com/myapp.git/ -- link to /home/me/myapp/.git/

Now, collaborators can pull from the http://example.com/myapp.git and get 
the whole project, but access to http://example.com/myapp/ sees the 
example.com subdir as it's root, and everything works normally (assuming 
webserver configuration & permissions are correct).

Now you work on whatever branches you want, and push to the server whenever 
you want for collaboration using whatever branches you want. As far as the 
webserver is concerned, nothing changes when you do a push.

Then, when you are ready to change the website, you put your production 
changes on the "production" branch, push them, and make sure they are 
checked out on the server (git push doesn't automatically check out the 
files), e.g.:

client$ # just made changes in production branch and want them "live"
client$ git push

server$ cd /home/me/myapp
server$ git reset --hard

> how would u set it up?

Personally, I might set something like this if I had a good reason, but 
otherwise, I'd host my git repository for collaboration separately, and just 
use rsync to install production files on the server. For one thing, that 
needs less prerequisites and setup on the server, so it's good if you don't 
fully control the server.

Either way, a "production" branch is a good idea so you know logically 
exactly what and when you released things live.

Attachment: signature.asc
Description: This is a digitally signed message part.


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]