Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
Monticello Guide by Danish Zia
What is Monticello?
Monticello is a distributed concurrent versioning system based on a declarative representation of Squeak source code. It allows packages to be safely saved, loaded and updated, and provides tools for branching and merging package versions. It does not depend on (and does not provide) any form of central repository. But it can be used to share code.
Monticello relies on an external packaging system, usually PackageInfo. It records a series of snapshots of the code in a package as it evolves, as well as the ancestry relationships between snapshots. To load a snapshot into an image, it finds the differences between the state of package in the image, and makes the necessary changes to the image so that it matches the snapshot. It uses the ancestry of snapshots to provide a merge operation, so that conflicts between two sets of changes can be detected, and non-conflicting changes can be applied automatically.
When you start a fresh image for the first time you will need to install Monticello. Once Squeak is up and running follow these steps:
- Open the Package Loader, Red click on the World.
- World->open->Package Loader.
- Scroll down to the Monticello entry.
- Select it.
- Yellow click->install.
After a while (depending on your internet connection) the install will finish and you'll be able to run Monticello
Note: For recent Monticello versions you also need to install PackageInfo. Follow the same steps as above.
To start Monticello from the World menu select the open submenu then select Monticello Browser. Red – click on the World.
This should display the following window: (note your installation will show different package names and repository directories from the figures included here.)
- World->open->Monticello Browser.
The pane on the left lists all the Monticello packages currently installed in your image. The pane on the right lists all the repositories Monticello currently knows.
Selecting a Package
To select a package that is listed in the left pane
- Red click on the package name: the Browse and History buttons become active and the repository listing in the right pane collapses to those repositories where this package resides.
- Browse: opens a SnapShot Browser on the current code loaded in the image, know as the working copy.
- History: opens a Version History window lisiting all the ancestors of the working copy.
Opening a Repository
To open a repository that is listed in the right pane
This should result in a window similar to the one below.
- Red click on the repository name: the Open button becomes active.
- Red click open.
Here the left hand pane displays all the packages in the repository you opened; the right hand pane displays all the different versions of the packages in that repository. Yellow clicking in the right pane will bring up a menu that will allow you to sort the packages by different criterion.
Only the Refresh button is active. Pressing it will cause Monticello to re-read the repository and update the window.
Opening a Package and Version
To open a particular version of a package:
This will collaspe the right hand pane down to just those files in the package.
- Red click the package name in the left hand pane.
Depending on the location of the repository (local or networked) this could take a few minutes.
- Red click the version name in the right hand pane.
You'll noticed two changes in the window. First, all the buttons at the top of the window will become active and second, the bottom pane will display data.
The bottom pane contains information about this version.
The final section of the bottom pane should contain information and comments the author entered when she did the commit.
- Name: The name of this package combined with the initials of the author who created this commit and the version number of the commit.
- Author: The initials of the Author. See SqueakMap for author initials to author name mapping.
- Time: Date and time of this commit.
- UUID: Internal package identification.
- Ancestors: The version used to create this version.
The buttons support dynamic help messages, moving the mouse pointer over a button will bring up a brief help message. The buttons are:
- Refresh: mentioned above.
- Browse: opens a SnapShot Browser on the version selected.
- History: allows you to examine the log information for all the versions that are ancestors of this version.
- Changes: opens a Patch Browser showing the changes that would occur to the image if this version of the package were loaded.
- Load: load the selected version into the image.
- Save: save this version to a repository different then this one. A window listing all the repositories this installation of Monticello knows will open and you pick the repository to save to. This is different then Save at the top level. (More on saving a version later.)
Link to this Page