.. _architecture: ********************************** Repliversion Software Architecture ********************************** .. admonition:: Tip :class: tip If you are an end-user (as opposed to a software developer...) this section can be skipped. This is a brief summary of the points of design interest for repliversion. Repliversion was written with python, and where complex or frequently time-intensive tasks were done the python was compiled with cython and a binary executable used at runtime. Initially the repliversion service module (repliversioner.py), a utility for generating fading popup notfications (dolphin-notify.py), and utilities to upload to git repositories (repliversion-gitlab.py and repliversion-github.py) are cython compiled. All other python modules are run as python, in order to afford the best possible runtime error reporting, and since they are not as time-sensitive. ============== Software Paths ============== All the software for repliversion is confined to "/usr/local/repliversion". Global configuration files are stored in "/etc/repliversion". User scripts/binaries are defined as symbolic links in "/usr/local/bin". Since the git utilities are privileged, symbolic links for them are to be found in "/usr/local/sbin". Socket files used for interprocess communication are placed in "/var/run/repliversion" ("/var/run" is a memory-mapped folder, so this is performant and will reduce disk drive wear...) The systemd service file for repliversion can be found at "/etc/systemd/system/repliversion.service". When repliversion is installed, this service will be automatically enabled and started. A log file of messages generated by the repliversion service can be found in "/var/log/repliversion.log". This is a tab-delimited text file that can be reviewed using a spreadsheet application such as LibreOffice Calc. .. .. image:: log.png .. raw:: html
Reviewing repliversion.log as a spreadsheet.
Provided there are few errors, the amount of messages generated by the repliversion service are not voluminous -though it wouldn't hurt to configure a logrotate file for it (and that is on the :ref:`TO DO list