From: Ian Hobson <ian@ianhobson.co.uk>
To: git@vger.kernel.org
Subject: Advice/help needed
Date: Mon, 16 Nov 2009 16:27:35 +0000 [thread overview]
Message-ID: <4B017D77.6060505@ianhobson.co.uk> (raw)
Hi all,
I am trying to switch to GIT (from SVN), and have become sorely
confused. I am not sure of the best way to solve the problem I have,
(nor how to actually implement a solution when one is chosen).
I am building a web application in php. There are 2 (soon to be four)
versions each slightly different for different customers. Each needs
testing when installed in "/" and "/dir" on the web site.
So far I have one system that in installed in a git repo on a Linux VM
with a share. This way I can develop in windows where I am familiar,
serve the files under linux (to match the production environment) and
run unit tests using phpUnit. The test files are all in a sub-directory
of the main directory. The application is served from a directory in the
website, so I could have different directories for different purposes,
but I have not had to use this yet.
Before release, I fetch and merge the files into a second installation
under windows, where I can serve it from the root. This forms a second
level of test. I release by copying the files with FTP (so that test
files and the GIT repo don't go on the production server).
This arrangement only works because I have been able to set up the
configuration files, database users and similar so they are all the same
on each installation. With 4 similar versions this will no longer be
possible.
What I want to be able to do is control all 4 versions in the same
manner, keep all file - common, different and test - in git, and have
checkout worry about changing versions.
My thoughts are to have 4 branches, one for each customer. 99% of all
changes will be needed by all (or at least most)
of the customers (P,W,S and E). How can I make a change to master and
then use git to apply those changes to the four branches, without losing
the differences between branches?
For example (if this is the best way) go from this
O-----O-----A-----B-----C (master)
\----P
\---W
\--S
\-E
to first this, where D is the net effect of A B and C (this is for ease
of reading logs, and commit messages),
O-----O-----D (head)
\----P
\---W
\--S
\-E
and then to this, (without editing all the files four times?)
O-----O-----D (head)
\----P-----D'
\---W----D''
\--S-----D'''
\-E-----D''''
Or would I be better having 4 repositories, one for each customer? Then
I need to pull changes and cherry pick the changes I want for each
customer?
I am the only developer, so the processes need to be simple so I am not
faced with sorting out my own errors! :)
Regards
Ian
next reply other threads:[~2009-11-16 16:27 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-16 16:27 Ian Hobson [this message]
2009-11-16 16:40 ` Advice/help needed Yann Simon
2009-11-16 22:46 ` Ian Hobson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4B017D77.6060505@ianhobson.co.uk \
--to=ian@ianhobson.co.uk \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox