Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vonbecmann/1997065 to your computer and use it in GitHub Desktop.
Save vonbecmann/1997065 to your computer and use it in GitHub Desktop.
Proposed Smalltalk project directory structure

##Monticello Package Structure

The basic idea is to store individual methods in files so that git can manage method-level history. The split between classes and extensions in the snapshot directory is differentiate between classes defined in a package and extension methods defined in the package:

+-Sample-Core.pkg\
  +-snapshot\
  | +-classes\
  | | +-SampleCore.class\
  | |   +-SampleCore.st
  | |   +-instance\
  | |     +-author.st
  | +-extensions\
  |   +-Object.class\
  |     +-instance\
  |       +-isSample.st
  +-.filetree
  +-categories.st
  +-initializers.st
  +-package
  +-version

##Project Structure

The classic Monticello style is to store all packages in a single directory. The actual name of the directory doesn't matter. The specs in the metacello.st file contains the classic Metacello spec information:

+-sample
  +-core/
  | +-metacello.st
  | +-Sample-Core.pkg\
  | +-Sample-Platform.gemstone.pkg\
  | +-Sample-Platform.pharo.pkg\
  | +-Sample-Platform.squeak.pkg\
  | +-Sample-Tests.pkg\
  +-doc/
  +-license.txt
  +-README.md

##Alternate Project Structure

Packages are distributed across the core, platform, and tests directories. The package structure is the same, but the Metacello spec information is different so that packages can be referenced in the different directories:

+-alternate
  +-core/
  | +-metacello.st
  | +-Sample-Core.pkg\
  +-doc/
  +-platform/
  | +-metacello.st
  | +-Sample-Platform.gemstone.pkg\
  | +-Sample-Platform.pharo.pkg\
  | +-Sample-Platform.squeak.pkg\
  +-license.txt
  +-README.md
  +-tests/
  | +-metacello.st
  | +-Sample-Tests.pkg\
@dalehenrich
Copy link

Do you know a trick for a) downloading a gist with https (git urls are blocked by vmware) b) an alternative method for looking at diffs.

I want to integrate your edits, but I'd like to see what changed first:)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment