Amend - A small revision control system for classic Mac OS

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

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

Amend is free software. I also have some videos about its development and C programming on System 6 in general.

Latest Update: Amend 3.7.1 Released (2023-04-18)

Amend 3.7.1 has been released:

  • amend-3.7.1.sit (StuffIt 3 archive, includes source code and THINK C 5 project file)
    SHA256: 2ea2718c890d0c50ff90364f89baccbaf184314036370dcd9c873d21a13d4470
    SHA1: d1f097d0b144b97ec45c43144896803e970ca767

Changes in this version:

  • Fix a bug that sometimes caused a crash after the diff/commit window closed after producing a large diff and using a lot of memory
  • Fix bug when exporting an amendment as a patch where the suggested filename was bogus
  • Fix bug that caused a system lockup on some machines with slower disks; thanks to Valtteri Koskivuori for helping locate and fix this bug
  • Show progress window when opening repositories since the process may take a while
  • Add resource to allow MultiFinder to correctly open a repo from double-clicking a .repo file when Amend is already running (thanks to Steve Crutchfield)
  • Properly update scrollbars when cutting or pasting in edit and commit window text fields

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.

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.