PackageDescription: PundleChangeTrackingExtensions

Pundle Change Tracking Extensions

Last published: June 18, 2008 by 'mkobetic'

Defines 0 Classes
Extends 5 Classes

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 provide a list of modified packages/bundles in the exit dialog. The post-load action also check for presence of any modified packages in the image to allow clearing any unwanted changes.