Cyril,
For development I tend to use Metacello locking instead of hard-wired dependencies in the BaselineOf and that works very well --- it completely avoids the need to edit a baseline for development purposes and this approach works really well for me ... perhaps we can discuss this in more detail in a separate thread or even private email? This all seems to be more complicated for you guys than has been my experience and of course you guys _appear_ to be completely ignoring the Metacello locking feature so I'm curious why ...
Dale
Hi Dale, As asked I start a new thread. I can see some possible reasons I do not use Metacello locking feature. 1) I did not understand well enough what it was 2) We have a way to work different and mine might be incompatible with the lock feature 3) I just did not see how it could help me To know which one is the reason I'll present you a little what I understood of the lock feature and how I usually work and you'll be able to advise me. For the lock feature: If I understood correctly it is a feature allowing to lock a certain version of a project in the Metacello registry. For example if I load Seaside 3.1, lock it and then install a project having Seaside 3.2 as dependency, the lock will block the update of Seaside. Now how do I usually work: Let's take the example of MaterialDesignLite that I maintain. The master branch is a branch that should only contains stable MDL versions. Ideally I would like for each commit of this branch to be tagged with a semantic versionning tag. The development happen in the development branch and new features are merged into this branch before making it to master. In general I prefer to have stricter dependencies in master than in development. So the baseline in the development branch can be different than in master. For all my projects I try to have a Jenkins building Pharo images for at least master and development, and potentially big feature branches before they are merged. The Jenkins also test the images. Then when I need to work on something, I download the Jenkins archive of the corresponding branch, double click on the image (some setting are then loaded) and I'm ready to develop because Jenkins and my settings have done all the setup. I try to keep my Jenkins script as simple as possible for the loading. Ideally I like to have something like this: ./pharo $PROJECT_NAME.image eval --save " Metacello new baseline: #MaterialDesignLite; githubUser: 'DuneSt' project: 'MaterialDesignLite' commitish: '$VERSION' path: 'src'; onWarningLog; load. ". With this way to work, I do not really see how locks can help me. Because I don't want to have to manage possible versions I accept from all the dependencies in **development**. I want to accept the maximum of update and when it breaks either I edit the code to work with the new version of the dependency or I fix the dependency version because it will be too much work. Just to explain why I don't want to manage by hand all the dependencies version in development: I work on a project that at one time had more than 70 dependencies (transitively). Now that you know what I understood of the lock feature and that you know my way to work: Did I miss something on the lock mechanism? Do you think it can help me during my development? If yes, how would you include it in my development workflow? Thank you for the time you spend to help us improve our way to work! -- Cyril Ferlicot https://ferlicot.fr