git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alan Chandler <alan@chandlerfamily.org.uk>
To: git@vger.kernel.org
Subject: Use case I don't know how to address
Date: Sat, 05 Sep 2009 08:02:04 +0100	[thread overview]
Message-ID: <4AA20CEC.8060408@chandlerfamily.org.uk> (raw)

I have a use case that I don't know how to address.  I have a feeling 
that the way I propose is not using git to its best advantage, and am 
therefore asking for advice.

As an intermittent software developer I have been using git for a long 
time to track software (GPL licenced) I have developed for a web site 
that I operate supporting a fan club. [Ajax based Chat, a real time Air 
Hockey Game with associated club Ladder, and an American Football 
Results Picking Competition]

Each application uses a pattern like that shown below

Basically I have two branches that interact as follows

        2' - 2a - 3' - 4'  SITE
       /         /    /
1 -  2  ------ 3  - 4  MASTER

I develop and test Locally on the master branch, in the commit 2a I 
update settings (such as database password etc that I need for the 
site), and then progressively merge commits made on master when I am 
happy that they work in the test environment.  A git hook rsyncs the 
site branch to site on each merge or commit on that branch.

The master branch is also pushed to my public git repository (which is 
why passwords are changed on the site branch.  The change made back in 
2a is "remembered" by git, so provided I don't go editing the password 
on the master branch things work fine.

My applications tend to be "skinned" (if that is the right word for the 
html page that forms the backdrop for them) with the fan club web site 
look and feel.  However, I am now trying to make a demo site on my home 
server for these applications, and as such I would like to remove the 
fan club skinning and add my own look and feel.  In fact there are other 
changes necessary, because many of the applications use the associated 
fan club membership information of the user to display - so generically, 
I need to make quite a lot of modifications to make it all work and 
would end up with 4 branches as shown, with the difference in commits 
between 4 and 5 as that major work to update the application.


        2' - 2a - 3' - 4'  SITE
       /         /    /
1 -  2  ------ 3  - 4  TEST
                      \
                        5  ------ 6  MASTER
                         \         \
                           5' - 5a- 6' DEMO


As you can see, in the process I have renamed Master to Test - the 
transition to 5a adds passwords to access the database on my demo site.

The problem comes when I want to now merge back further work that I did 
on the master branch (the 5-6 transition) to the fan club site


        2' - 2a - 3' - 4' ----------------- 6' SITE
       /         /    /                    /
1 -  2  ------ 3  - 4  ------------6'''- 6a TEST
                      \            /
                        5  ------ 6  MASTER
                         \         \
                           5''- 5a- 6'' DEMO


What will happen is the changes made in 4->5 will get applied to the 
(now) Test branch as part of the 6->6'' merge, and I will be left having 
to add a new commit, 6a, to undo them all again.  Given this is likely 
to be quite a substantial change I want to try and avoid it if possible.

Is there any way I could use git to remember the 4->5 transition, 
reverse it and apply it back to the Test branch before hand.


-- 
Alan Chandler
http://www.chandlerfamily.org.uk

             reply	other threads:[~2009-09-05  7:03 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-05  7:02 Alan Chandler [this message]
2009-09-05 17:23 ` Use case I don't know how to address Johannes Sixt
2009-09-06 12:50   ` Alan Chandler
2009-09-06  8:03 ` Junio C Hamano
2009-09-06 12:44   ` Alan Chandler
2009-09-07 12:01     ` Alan Chandler
2009-09-07 12:08       ` Alan Chandler

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=4AA20CEC.8060408@chandlerfamily.org.uk \
    --to=alan@chandlerfamily.org.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;
as well as URLs for NNTP newsgroup(s).