##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
##Repository 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\
Tim,
The GNU Smalltalk port also breaks Seaside up into multiple directories ... https://github.com/bonzini/smalltalk/tree/master/packages/seaside, even though a lot of the individualt Monticallo packages appear to be collapsed into a single .st file...
I am casting about for ideas to make it easy for one to use subdirectories without requiring subdirectories... keeping in mind that I have to make it easy for me to change Metacello to support it, too:)