Yes I've concluded this is the "easiest" way. Sadly it is hard to automate the porting.
Thank you Guille. El jue., 31 ene. 2019 a las 6:49, Guillermo Polito (< guillermopol...@gmail.com>) escribió: > Well, I've said it somewhere in the mail, probably got lost in all my > blablbla, so I'll summarize. > > - I use tags to identify releases. > - A same release works in Pharo6 and Pharo7 > - In the baseline I have defined some conditional package that is loaded > in Pharo6 that provides compatibility from Pharo6 to Pharo7. > Of course, depending on the change you're doing you may want to have > one package per platform besides the core. > > When I was talking about a single branch I was talking about the so-called > master branch, not about creating a new branch (which was case 2) > > On Thu, Jan 31, 2019 at 10:29 AM Hernán Morales Durand < > hernan.mora...@gmail.com> wrote: > >> Hi Guillermo >> >> El jue., 31 ene. 2019 a las 6:08, Guillermo Polito (< >> guillermopol...@gmail.com>) escribió: >> >>> Hi Hernán, >>> >>> On Thu, Jan 31, 2019 at 8:20 AM Hernán Morales Durand < >>> hernan.mora...@gmail.com> wrote: >>> >>>> I would like your advice on this: What's the effortless way to migrate >>>> Github repository from Pharo 6 to Pharo 7? >>>> >>> >>> Can you give us some more detail? Do you already have your project in >>> github working for Pharo6? Or is it in Smalltalkhub and you are willing to >>> move it to github? >>> >>> >> Most of my packages are working on Pharo 6 already, and they are on >> GitHub. >> >> >> >>> I'll assume the first below :) >>> >>> >>>> >>>> I thought in the following solutions: >>>> >>>> 1) In a Pharo 6 image modify my BaselineOf, add & push a new package >>>> MyPackage-Pharo6, then load it into a Pharo 7 image, create >>>> MyPackage-Pharo7 and port as needed. The same Metacello installation script >>>> is preserved for all versions. >>>> >>>> 2) Tag repository as x.x in a Pharo 6 image, load my package & do port >>>> in a Pharo 7 image and push to master. Previous Pharo 6 version could be >>>> loaded referring to a tag (or branch maybe?) in the Metacello installation >>>> script. >>>> >>> >>> Well, it depends on what you want to provide as "support". >>> - Do you want your package to keep working on both versions? >>> >> >> Yes, ideally my package will work on both versions, Pharo 6 and Pharo 7. >> The first option was about splitting MyPackage into MyPackage-Common, >> MyPackage-Pharo6 and MyPackage-Pharo7 with corresponding methods/classes >> moved. >> >> >>> - Do you want your new features to be available also in the old version? >>> >>> >> I'm not really interested in backward compatibiilty. >> >> >>> Case 1) Usually I try (if context agrees :) to keep a single branch. And >>> I try that my project in that branch is compatible with both Pharo >>> versions. Having a single branch if possible removes part of the >>> bureaucracy of thinking about backports, patches, and so on... >>> Releases are marked as tags, but they are shared between the different >>> platforms. >>> >>> >> You're talking about branches but I've used branches for a different >> purpose (providing features for example). Wouldn't be more appropriate to >> use tags in this case? >> >> >>> We were able to do it with Iceberg for a long time (and it is an example >>> that relies on Spec, File stuff, FFI..). >>> We have lost that compatibility in the last weeks because we made a fix >>> for win64 that was not compatible with Pharo6, but I'm thinking in getting >>> that compatibility back at lest for Iceberg 1.5.*. >>> >>> >> I will check those Baselines because I need to see examples of how does >> it work. >> >> >>> To keep a single branch compatible with many Pharo versions there is no >>> magic: >>> 1) we have a forward compatibility package to Pharo 7. The idea is that >>> we write code for Pharo7 but in Pharo6 we can load a package with some >>> extensions/additions that make it compatible with Pharo7. >>> 2) we try to use compatible APIs. For example, we use FileSystem as >>> much as possible. Another example is that Iceberg relies a lot in the Path >>> class to manipulate the directory tree, and the nicest API of that class >>> changed a lot so for simplicity we used the low level API that is a bit >>> uglier and verbose, but compatible. >>> >>> Case 2) At the same time, just to set an example, we were thinking >>> version 1.5.* was going to be the last iceberg version supported for >>> Pharo6, so pharo7 and 8 were going to use 1.6.*. This means we will have >>> two different versions running side by side. >>> >>> If we want to continue applying patches and critical bugfixes in the >>> 1.5.* version, we should have two branches. >>> Notice that here I'm assuming that my 1.5.* branch will move much more >>> slowly than 1.6.*, since no real active development will be done with it. >>> >>> >> Thank you Guillermo >> >> >> >>> Probably other people can share their workflows. >>> >>> HTH, >>> Guille >>> >>> >>>> Any recommendations? Alternative paths? >>>> >>>> Cheers, >>>> >>>> Hernán >>>> >>>> >>>> >>>> >>> >>> -- >>> >>> >>> >>> Guille Polito >>> >>> Research Engineer >>> >>> Centre de Recherche en Informatique, Signal et Automatique de Lille >>> >>> CRIStAL - UMR 9189 >>> >>> French National Center for Scientific Research - *http://www.cnrs.fr >>> <http://www.cnrs.fr>* >>> >>> >>> *Web:* *http://guillep.github.io* <http://guillep.github.io> >>> >>> *Phone: *+33 06 52 70 66 13 >>> >> > > -- > > > > Guille Polito > > Research Engineer > > Centre de Recherche en Informatique, Signal et Automatique de Lille > > CRIStAL - UMR 9189 > > French National Center for Scientific Research - *http://www.cnrs.fr > <http://www.cnrs.fr>* > > > *Web:* *http://guillep.github.io* <http://guillep.github.io> > > *Phone: *+33 06 52 70 66 13 >