On 4/17/2017 6:50 PM, The Tick wrote:
I've put a project under fossil. Since it depends on a couple other libraries, I've also put those into the repository so that I am not dependent on being able to download those particular versions. Now, when new versions of those dependent libraries become available, I want to update my project. I could just add the new versions and modify my makefile. The problem I see is that over time the fossil repository is going to get >really< big as it will contain a bunch of obsolete stuff.

Is there a way to handle this? I really want to keep the dependent libraries in the repository since who knows what might happen to someone else's open source project in the future, and in addition, it makes my project "self contained".

This is essentially why the "fossil addremove" command was invented.

When an upgraded library is available, do something like this:

Start with your working directory clean and stable, possibly even updating back to a stable point on trunk.

Unzip the new library on top of the old in your workspace. Try to avoid preserving a version number as part of the folder names in the workspace even if your upstream does that to you. That will just confuse life.

Now the only change to your workspace should be the new library, so fossil addremove should be able to discover new files to add and old files to delete in the repository. If nervous, use fossil addremove --dryrun to get a preview of what it would do, and you can always check fossil changes after to see what it actually did.

Now would be a good time to check in this baseline set of changes on a branch and switch to that branch. Fossil ci --branch does this for you.

You should be able to build and test the library and its integration with your project, committing as you go. This is where a branch really helps, as you might discover that the upgrade is not a simple drop-in replacement and need to maintain the current version in parallel.

When happy, use fossil update to switch back to trunk and fossil merge to bring the new library version and all the integration effort over to trunk.

Naturally, this keeps the older versions on hand, but since they built older versions of your project, that helps keep it all straight for later maintenance and patching.

--

Ross Berteig                               [email protected]
Cheshire Engineering Corp.           http://www.CheshireEng.com/
+1 626 303 1602

_______________________________________________
fossil-users mailing list
[email protected]
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to