Question

Wondering if folks had a recommendation on how to manage branching and merging for how we "want" to handle customizations to our AspDotNetStorefront usage. Basically, we get updates of the AspDotNetStorefront occasionally and need to apply customizations at two levels: global customizations and client customizations. Lets say we have the following as a simple example:

  • AspDotNetStorefront is set up in SVN
  • AspDotNetStorefront is branched to AspDotNetStorefront_v1.0
  • AspDotNetStorefront_v1.0 is branched to AspDotNetStorefront_v1.0_Cust
  • AspDotNetStorefront_v1.0_Cust is modified with changes and committed
  • AspDotNetStorefront_v1.0_Cust is branched to ClientA_v1.0 where additional changes are made
  • AspDotNetStorefront_v1.0_Cust is branched to ClientB_v1.0 where additional changes are made

This is essentially where we are today. Now, if version 2.0 of the AspDotNetStorefront comes out we're unsure of what to do. I'd want to do the following, but I'm unsure:

  • Branch AspDotNetStorefront to AspDotNetStorefront_v2.0, overlay new source code, commit
  • Branch AspDotNetStorefront_v2.0 to AspDotNetStorefront_v2.0_Cust
  • Merge AspDotNetStorefront_v1.0_Cust to AspDotNetStorefront_v2.0_Cust, test, tweak, commit
  • Branch AspDotNetStorefront_v2.0_Cust to ClientA_v2.0
  • Merge ClientA_v1.0 to ClientA_v2.0, test tweak, commit
  • Repeat last two steps for ClientB

Am I completely off-base here? First time we've tried to integrate manufacturer code into our SVN structures where the manufacturer's code is actually modified (as opposed to just bolted-on or plugged-in). Any references to documentation would be helpful. Also, I may just not know the terminology of this type of model to search for it, so if there are terms for this type of activity that would be helpful too.

Thanks!

Was it helpful?

Solution

What you have today looks like...

AspDotNetStorefront 
        --->  AspDotNetStorefront_v1.0
                     --->  AspDotNetStorefront_v1.0_Cust  [*]
                                        ---> ClientA_v1.0 [*]
                                        ---> ClientB_v1.0 [*]

I assume you would like to keep AspDotNetStorefront_v2.0, Cust and Client* branches; This seems to be a very difficult situation to manage... The answer depends upon the fact

The magnitude of change from AspDotNetStorefront_v1.0 to AspDotNetStorefront_v2.0 is more or delta between Cust and Client* branches?

You should choose to patch the minimal piece of work as then merging will be easier and regression issues can be avoided.

AspDotNetStorefront 
        --->  AspDotNetStorefront_v1.0 + (Upgrade Code to v2.0)
                     --->  AspDotNetStorefront_v1.0_Cust + Upgrade Code to v2.0
                                        ---> ClientA_v1.0 + Upgrade Code to v2.0
                                        ---> ClientB_v1.0 + Upgrade Code to v2.0

Since it seems that you need to keep all of these branches intact so this is the structure you would end up with.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top