Skip to content

hpi-swa/metacello-git

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 

Repository files navigation

Git Support in Monticello

This project extends Squeak's code versioning tool Monticello to support git repositories.

It builds upon filetree, which allows for exporting source code from the Squeak image into the file system. Then, other tools may operate on that content such as regular git tool do. This project uses OSProcess to call the host's git implementation for clone, commit, and push code.

At the moment, it supports Linux and Windows systems by reusing the host's environment variables to find the git implementation. Authentication (HTTPS, SSH) is handled by git, not us.

We have chosen the package name Metacello-Git to tie on Metacello's extensions for Monticello.

##How to Install

  1. Get Squeak 4.6 or later with a recent CogVM for your operating system.
  2. If not already integrated, load Metacello. Learn how it works.
  3. Finally, load the project into your Squeak image using Metacello:
Metacello new
  baseline: 'MetacelloGit';
  repository: 'github://hpi-swa/metacello-git:master/repository';
  load.

Monticello Repositories

There are three different repositories that exploit different stages of git functionality:

  • MCGitRepository just commits into a local repository.
  • MCRemoteGitRepository commits and pushes new contents.
  • MCGitHubRepository2 forks the repository if there are no access permissions. Then commits and pushes new contents.

All replicate the Monticello commit message for git to avoid having to re-type it. All pull the current contents before writing the new contents into the file system. Thanks to the way Monticello works, there will be a push for each commit.

Clone

When adding a new repository to Monticello, it will be cloned into the package-cache directory of Squeak. For the code, a repository directory is assumed and will be created if not existing.

Merge

If the pull delivers new contents, we make use of Monticello's merging tools. At the moment, we assume that the pull in front of a commit and push will be sufficient to avoid conflicts.

MCZ (Monticello Zip)

There will be still copies of the Monticello Zip Files in the package cache repository. The corresponding file name will be added to git commit messages.

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •