How to set up a new GitHub repo


We see with an example how to set up a fresh github repo as an Iceberg project that you can load with a Metacello script.


Create a new github repo. Eg gt-comment-analysis.

Clone the repo using the git ssh credentials, eg

Create a src folder in the repo.

(FileLocator localDirectory / 'iceberg' / 'onierstrasz' / 'gt-comment-analysis' / 'src') ensureCreateDirectory 

Select the project in the Git tool, add the src folder, select it, and click Repair to add project metadata to the new src folder.

Add a first class and package, eg CommentAnalyzer in package GtCommentAnalysis.

From the Git tool, add the package. (Go to the Packages tab and select the + button.)

Now add a baseline, for example, add a subclass of BaselineOf calledBaselineOfGtCommentAnalysis in a package of the same name, and add it to the repo.

NB: Don't forget to make the new baseline class a subclass of BaselineOf ConfigurationOf subclass: #BaselineOf instanceVariableNames: '' classVariableNames: '' package: 'Metacello-Base' , and not of Object.

Add the baseline: method specifying the dependencies:

baseline: spec
	spec for: #common do: [ spec package: 'GtCommentAnalysis' ]

Commit and push. Verify on github that the commit succeeded. Both packages GtCommentAnalysis and BaselineOfGtCommentAnalysis and their classes should appear in the src folder.

Add (and adapt) the following snippet to the README of your project:

Metacello new
	baseline: 'GtCommentAnalysis';
	repository: 'github://onierstrasz/gt-comment-analysis:main/src';

NB: Git is currently changing the name of the default branch from master to main, which can mess things up. You can either explicitly refer to the branch to use in the script (as we see above), or you can change the default in your git configuration, i.e., edit the file .gitconfig, typically in your home directory, to include:

	defaultBranch = main

To test, select the repo in the Git tool and remove it (- button). Then load it with the script above.

Metacello new
	baseline: 'GtCommentAnalysis';
	repository: 'github://onierstrasz/gt-comment-analysis:main/src';

See also

To learn all about specifying more complex dependencies, see How to deal with Baselines in the Pharo wiki.