So we've just received our new server
which will be used solely for website development and version
control.
I've set up Ubuntu (11.04 desktop
edition, I like interfaces, sorry!) and installed Apache, PHP and
MySQL - so far, so good.
We've decided that we
want to use Git as our version managing system, since we've had good experiences with
it. But... We're unsure of how to lay out, our structure. So I'm hoping you can help
us.
Current
setup
At the moment, we run one
development server bbtsrv02
which is a Windows server, running
XAMPP. We do all of our developments on this server and it leads to a lot of noise and
mess when we're hacking things quickly.
Once the
changes have been made locally, we upload these files to our external server (hosted by
someone else) via FTP.
/>
It's far from practical, there can be 3/5 developers
at one time working on the site as a whole. It causes conflicts and... it's not
nice.
The current
idea
The idea is to use
bbtsrv02
as a "mirror" server. It'll contain all of the most up
to date and live code. bbtsrv03
(the new server) will be our
development server. We'll have the master
branch which will
also contain the live code, and each developer will branch their own version for each
change.
But... Further thinking has led me to
come to the conclusion, that we'll need to setup some virtual hosts, for each developer
so they can close the master repo and work from
there?
I don't have much experience in this
area, but my current plan is to partition the main HDD and give us each enough space to
develop on.
We then push our changes from our
branch to the master one and then "copy" it into bbtsrv02
and
upload. I'm hoping of course, I can make some bash scripts to do that for
me?
Answer
The way that we do it (YMMV) is as
follows:
Each dev builds and does
basic code tests on their desktop/laptop etc. They use git locally to commit changes,
branch etc. When they are ready to push, they take what ever local actions the need to
clean up their timeline and then they push.
The
push goes to a staging server. Our staging server is a mirror of our production servers.
We do load testing, code reviews, and final checks
there.
Once we pass that level, we push to the
production servers.
Comments
Post a Comment