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 on and for System 6, and lightly tested on System 7+.

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

AmendHub is a site for sharing Amend repositories and browsing amendments made to them.

Latest Update: Amend 3.6 Released (2022-09-12)

Amend 3.6 has been released:

Changes in this version:

  • Add Command+W keyboard shortcut to cancel and close committer window
  • Fix launching Desk Accessories when Amend is in the foreground
  • Center dialog windows on larger displays, limit the size of Amend windows to roughly 80 characters of code
  • Disable "Apply Patch" menu option as it is not yet ready for production and was previously enabled by mistake
  • Change internal project structure to allow building with THINK C's default ANSI C library, instead of requiring a custom library

Previous Updates

Source Code

Source code and its THINK C project file are contained in the latest release archive, or it can be viewed on AmendHub.


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. In this dialog, files outside of the repository's directory and files that already exist in the repository are hidden.

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.