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+ but I have not tested it.

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

Latest Update: Amend 3.2 Released (2022-02-03)

Amend 3.2 has been released:

  • amend-3.2.sit (StuffIt 3 archive, includes source code and THINK C 5 project file)

Changes in this version:

  • When filtering out already-added files, also filter out the open repo file itself
  • Fix a possible crash after committing
  • Stop occasionally displaying a cursor on read-only text boxes such as diffs

Source Code

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

Screenshots

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.

Committing

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.

Settings

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.