[one-users] "Official" Debian packages

Daniel Dehennin daniel.dehennin at baby-gnu.org
Tue Feb 17 09:26:22 PST 2015


Jaime Melis <jmelis at opennebula.org> writes:

>> Hmm, writing the question seems to gives my answer, it looks like the
>> cherry-picking of master commits on the one-<version> branches are the
>> reasons of the merge conflicts.
>>
>
> Yes... that's the way we usually do it: by cherry picking the commits.

Ok, I'll broke everything to rebase on master then.

> Unfortunately we don't think there's an easier way.

Personally, I prefer to use DaggyFix[1][2] over cherry-picking.

This requires to base the commits on the oldest supported release and
then merge them everywhere needed, which can be seen as a lot of work,
but not that much different from doing cherry-picking ;-)

I think DaggyFix is more GIT friendly and respect the context as explain
in an article I just found[3].

For example, here is the GIT graph to apply a foo-bar patch (issue #42):

o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-o-M₃ <- master
   \     \   \   \             /
    \     \   \   o-o-o-o-M₂  /    <- prod/4/master (integration branch for version 4)
     \     \   \         /   /
      \     \   \     o-o---+      <- prod/3/42-foo-bar (short living branch)
       \     \   \   /   \
        \     \   o-o-o-o-M₁       <- prod/3/master (integration branch for version 3)
         \     \
          \     o-o-o-o-o-o-o-M₀   <- prod/2/master (integration branch for version 2)
           \         \       /
            \         o-o-o-o      <- prod/2/41-fix-something
             \
              o-o-o-o-o-o          <- prod/1/master (integration branch for version 1)

in this example:

- version 1 is not supported anymore

- version 2 is supported but not concerned by #42: foo-bar

A temporary branch is created based on version 3 named prod/3/42-foo-bar and
the commits are done here.

I use do to prefix my branch names by the name of the release branch it
first apply to, it help to sort them when doing “git branch” ;-)

Then, this 42/foo-bar branch is merge back into version 3 integration
branch (commit M₁), to prepare a new release 3.X.

This 42/foo-bar branch is merge into version 4 integration branch
(commit M₂) if it apply to it like in my example.

Finally, this 42/foo-bar branch is merge into the main development
branch (commit M₃) if it apply to it like in my example.

This is based on the “successful Git branching model[4]” I extended with
the packaging branches.

I hope it will help you, it took me time to find some kind of best
practice I agree with, like “Is it better to rebase or merge?[5]”.

Regards.

Footnotes: 
[1]  by mercurial http://mercurial.selenic.com/wiki/DaggyFixes

[2]  by monotone http://wiki.monotone.ca/DaggyFixes/

[3]  https://queue.acm.org/detail.cfm?id=1595636

[4]  http://nvie.com/posts/a-successful-git-branching-model/

[5]  http://www.randyfay.com/node/91

-- 
Daniel Dehennin
Récupérer ma clef GPG: gpg --recv-keys 0xCC1E9E5B7A6FE2DF
Fingerprint: 3E69 014E 5C23 50E8 9ED6  2AAD CC1E 9E5B 7A6F E2DF
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 342 bytes
Desc: not available
URL: <http://lists.opennebula.org/pipermail/users-opennebula.org/attachments/20150217/3a6cfc7f/attachment.pgp>


More information about the Users mailing list