Skip to content

Local Change History

APL Team Ltd edited this page Nov 6, 2018 · 11 revisions

Acre Desktop maintains optionally a local change history, independently of any source code management system (SCM), like Git, that you may be using.

Every time you fix a function or other item, Acre Desktop not only writes the new version of the item to the corresponding text file, but also archives the existing version, building up a history of versions for every item that you change. This local change history is accessed using the Acre Desktop commands ]Undo and ]Redo as well as ]Restore. The local change history is part of the project.

In a typical programming session, it is easy to modify a function 100 times before doing a commit in whatever SCM system you are using. Once you decide to commit, your SCM system will be updated with the most recent local change, and that is all it will know about - it has no idea about the previous 99 changes.

Changes may occur to item files outside of the immediate purview of Acre Desktop, either by editing the files locally in a text editor, say, or because the SCM system has updated files due to changes by other users.

No matter how these changes occur, when Acre Desktop opens a project, all of the changes are also archived. Note that only the latest change is archived in this case. That is, if you edit a function 10 times using a text editor between closing and opening the project, Acre Desktop knows nothing of the first 9 changes - it only knows and archives the 10th change.

At some point, simply for space, and possibly for performance, it is necessary to purge the local change history. You may decide to do this regularly, every time you do a commit in your SCM system, or from time to time if the history files grow large. The process can be automated in conjunction with your SCM system.

History related methods and facilities can be switched on with the "KeepHistory" configuration parameter or the -keephistory=on option when calling CreateProject.

Because Acre Desktop is SCM agnostic it does not know anything about, say, Git branches. That means that the local history keeps all changes across all branches the programmer might have worked on.