Amend - A small revision control system for Macintosh (System 6)

Amend is a self-contained revision control system that I wrote to keep track of source code changes while working on other programming projects on my Macintosh Plus. I made a video about its development.

It is written for System 6, though it will probably run on System 7 or newer but I have not tested it.

Latest Release

Amend is open source software released under an ISC license. See the LICENSE file contained in the distribution for copyright and licensing terms.

The current version is 2.0 and was released 2022-01-11:

The source code and THINK C project file are included in the archive.

Repo Browser

Each project handled by Amend is contained in a single “repo” database file. A repo file must currently reside in the same directory as the files it is managing. When starting Amend without having double-clicked a repo from the Finder, one is prompted to choose a repo file. To create a new repo, cancel out of the Open dialog and choose File -> New Repo.

Once a repo has been opened, the main browser interface of Amend is displayed:

On the left are the list of files; each file being managed must be added through the Repo -> Add File menu option.

On the top right are a list of commits. As files are selected on the left, the list of commits is narrowed down to only those that included the selected files.

Once a commit has been selected, the author, date, commit message, and diff text are shown in the bottom section.


After selecting one or more files, or leaving the default “[All Files]” selected, clicking Generate Diff will bring up the diff/commit window. As each selected file is compared to the previous version stored in the repo and found to be differing, a unified context diff is appended to the text box on the bottom.

Once diffing is complete, a log message must be entered and then the Commit button can be clicked. Each differing file’s contents are updated in the repo and the commit timestamp, author, date, and diff text are stored. The diff/commit window is closed and the list of commits in the browser is updated.


The author/username used for new commits, as well as the tab width can be adjusted in the Settings menu. These are global options stored in the program’s resource file, and are not unique per-repo since repos can be shared.