Hi Nicolas,

from what you describe (double merge: one in git, one in MC), I wonder if my 
decision to maintain compatibility between gitfiletree and FileTree by writing 
the metadata (version / methodProperties) in gitfiletree is a good thing?

Thierry

________________________________
De : Pharo-dev [[email protected]] de la part de Nicolas 
Cellier [[email protected]]
Envoyé : vendredi 25 avril 2014 15:46
À : Pharo Development List
Objet : Re: [Pharo-dev] Modifications to be integrated in Pharo 3.0 VM


2014-04-25 11:26 GMT+02:00 Esteban Lorenzano 
<[email protected]<mailto:[email protected]>>:
Hi Nicolas,

I cannot approve your pull requests because there are conflicts (I suspects is 
all the same conflict).

can you fix them?

thanks,
Esteban

Hi Esteban,
I don't think there is a single source code conflict...
But of course, there is allways 1 conflict : the MC meta information
mc/VMMaker-oscog.package/monticello.meta/version

Since the branch was not forked from latest master, every other feature branch 
will rot as soon as you integrate the first one.
That's the major limitation of gitfiletree.

The way I found to workaround this is to :

git checkout master
start an image in interactive mode, make sure to have current version from 
gitfiletree loaded

git fetch someRepo someBranch
git checkout someBranch
>From the image, open git file tree and copy modifiedPackage in local MC 
>package-cache

git checkout master
git merge someBranch
git mergetool
answer remote/local as you like for .meta/version and say [y] it's fixed 
(you'll overwrite it soon after)

>From the image MC merge modifiedPackage copy from the package-cache
Republish the merged package in gitfiletree
git commit -a -m "Merge pull request #... (fix someBranch)"

That's a bit heavier than a pure MC workflow, but it's bearable IMO...

Tell me if this sounds clear enough.

Another possibility is to do the exact mirror of this operation : merge master 
branch in each someBranch.
But I don't think it's viable :
1) If I have 10 branches, and don't know in which order you want to integrate, 
then I'll have to do it 10+9+8+... times - that's 45 times this operation
2) If I know the order, I'll do that job in a single someBranch, it is exactly 
the mirror of above operation : merge master into someBranch rather than 
someBranch into master. But then it's both fragile (it can rot at any time if 
you decide to interleave another fix), and it is against the spirit of git : 
the feature branch should carry the minimum of changes IMO.

The only advantage of this approach is to reduce the bottleneck effect by 
reducing the work performed by the integrator, especially if you are alone to 
cope with this burden... Unfortunately I'm out of time right now.

I wanted to blog about it, but blogging is taking time... Hope my explanations 
help.

Cheers

Reply via email to