[vwnc] PundleChangeTrackingExtensions

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[vwnc] PundleChangeTrackingExtensions

kobetic
Hi all,

I published package PundleChangeTrackingExtensions to the public repository that I thought might be interesting especially to those who publish  base VW into their local repositories just so that they can notice any changes that ended up in the wrong packages by accident. This package might provide that without having to go through re-publishing things from the base image for that. This is actually how I've been dealing with these issues in my development images for some time, and I've been reasonably happy with it. So I just decided to just package it up a bit better for someone else who might find it sufficient as well. I'd be curious to hear what other think about this approach.

Martin


Here's a copy of the package comment with more details:

This package is a tiny extension for the existing package/bundle change tracking facilities that makes it more practical to use the facilities to track all code changes in the image. It relies on the fact that any package/bundle in the image has an associated change set regardless of how it was created, i.e. it does not matter if it was loaded from parcel, from Store, or created manually. In fact it can have several associated change sets, depending on how many sources it is linked to. E.g. when a package was loaded from a parcel it gets a change set, when it gets published or reconciled with a Store repository it gets another one. You can also reconcile a package with several Store repositories and there will be a change set for each of those. The change sets are managed as a Dictionary in an instance variable called 'dbInfo', the keys are either Store repository identifiers, or an empty symbol #'', if it's the changes set that is not associated with a repository. Note that
the change sets are used by Store to figure out what to write into the repository when the package is published. It is important to keep that in mind when you manipulate the contents of change sets. If you want to publish a package and you think the change set may be out of sync with the corresponding versions in the database, you can make store recompute the change set by reconciling the package to the corresponding version.

This should be enough background information to allow you to use this package safely. The main addition of this package is the 'Modified Pundles' menu item in the Launcher->Store menu. It opens an inspector on a dictionary where the keys are the modified packages and the values are corresponding change sets. Note that if a package has several change sets, it attempts to pick the "most relevant" according to a heuristic that can be found in PundleModel>>mostRelevantChangeSet.

Another extension is addition of 'Forget All' inspector action for change sets, which allows to clear any particular change set if desired.

Finally the package overrides the image quit mechanism to check for presence of modified packages/bundles when the image is exited without saving. This check can be disabled via the WarnOnExitWithoutSaving setting. The setting is turned on in the post-load action. The post-load action also check for presence of any modified packages in the image to allow clearing any unwanted changes.
_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc