0

(Been away from git for quite a while and though there are similar questions here most seem to gloss over this part... which probably means it should be obvious... sorry...)


Scenario:

So I have a feature that was developed on it's own branch, and after testing and approval merged to develop (not-ff; I prefer to see the changes) and all is happy.

But then financials get involved and we agree to release the same feature to a client on a legacy version.

Now it happens that this particular area is pretty compatible still. So I could just cherry pick one change after the other onto the target branch and I get no conflicts and have to do a tiny update at the end and I'm done...

But is there a better way to apply all the deltas of the feature branch directly to the legacy release in the same non-ff manner as before without doing a cherry pick of each change?

For the more pictorial...

Before Greed:

c1 -> c2 -> c3 -> c4 -> c5 -> c7 -> c8 -> ... c130 -> c133 -> (m)c135 -> c136       (develop)
         \                                  \               /                   
           -> c6 -> c9                       \             /                        (release/legacy)
                                              -> c131 -> c132                       (feature/awesomeFeature)

Cherry Pick:

c1 -> c2 -> c3 -> c4 -> c5 -> c7 -> c8 ->     ...     c130 -> c133 -> (m)c135 -> c136       (develop)
             \                                          \               /                   
               -> c6 -> c9 -> c131' -> c132' -> c137     \             /                    (release/legacy)
                                                          -> c131 -> c132                   (feature/awesomeFeature)

('s are cherry picks and c137 is a small cleanup of any bits that weren't quite there in the legacy)

What I'd like:

c1 -> c2 -> c3 -> c4 -> c5 -> c7 -> c8 ->          ...         c130 -> c133 -> (m)c135 -> c136   (develop)
             \                                                    \               /
               -> c6 -> c9                          -> (m)c138     \             /               (release/legacy)
                         \                        /                 -> c131 -> c132              (feature/awesomeFeature)
                          \                      /
                            -> c131 -> c132 -> c137                                              (feature/monetizedAwesomeFeature)

(ie c137 is a small cleanup of any bits that weren't quite there in the legacy)

What's the neatest way to achieve this (and obviously the case here is a lot more than just 2 commits on the feature)?

Wizbit
  • 421
  • 1
  • 4
  • 13
  • You could maybe create a feature branch `feature/awesomeFeature_legacy` on `c9`, on which you cherry-pick wanted commits. Once done, you merge `feature/awesomeFeature_legacy` in the legacy branch. What about that? – smarber Apr 17 '18 at 15:09
  • yep probably a bit neater; though was kind of hoping to avoid running so many cherry pick commands.... I could rebase the deltas from the master to the head of the feature onto a new feature branched off legacy; would achieve the same thing; but seems a rather long winded way of doing it – Wizbit Apr 17 '18 at 15:24

0 Answers0