Search code examples
gitmagentostructurelivestaging

git repository to staging site to live site


I'm just learning git and its basic fundamentals. I've got a live Magento store running and need to version control it asap. I've got git loaded on my work machine and have played around with setting up repositories, adding, committing and pushing files. I've tested my setup with Assembla and a free account (for now) and all is good.

I am still having trouble going about the physical changes though. I want to achieve the following (I think!):

  1. Checkout files needed from live site to work with on local machine
  2. Do changes locally from within Dreamweaver (I am using GITweaver and have that easily communicating with my repo) (Also, I am not opposed to changing text editors/IDE's if there is a better solution)
  3. Push repo to 'staging' site for review & testing with my partner. This is where I'm currently lost. What's the process of sending a repo to a live site?
  4. After review and changes are accepted, push repo to 'live' site.

So there's several important questions I need help with here.

  • Do you checkout files from a live site or a stage site? Is there any preferred method?
  • Is a stage site supposed to mirror a live site all the time?
  • What is the purpose of a 'dev' site and a 'stage' site - aren't they the same?
  • What do most people do in there setups and why? I need a good explanation of stage vs dev.

Some helpful background for our store/project:

  • I am the only developer and I will probably remain the only developer for some time
  • I am using a Windows machine to develop on and our hosting is through HostGator
  • My partner will only need to see the stage site so we can look at changes together, he has no need to view the repository ever.

I would be thrilled if someone could point out a guided tutorial or similar for people like me who did everything backwards and now don't have the time to learn git one step at a time.


Solution

  • What's the process of sending a repo to a live site?

    Git does not have a facility for this built in. You'll want to write a script that periodically (say, every five minutes) or on demand pulls some branch from your central repo. (I'm assuming you have a Git server somewhere that functions as such.)

    You can do the same thing for the production environment, by having the staging server pull, say, master, and having the production server pull the branch production.