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