1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
= rdiff-backup: {page-name}
:page-name: Architecture
:sectnums:
:toc: macro
link:..[Home,role="button round"] // *{page-name}*
'''''
this directories contains higher-level documentation about the rdiff-backup architecture.
NOTE: it is much work in progress as of now, and reverse engineering from code.
toc::[]
== Diagrams
* The script link:rdiff_backup_classes.sh[rdiff_backup_classes.sh] generates a link:rdiff_backup_classes.puml[simple class diagram] in https://plantuml.com/class-diagram[PlantUML format], which is itself rendered into an link:rdiff_backup_classes.svg[SVG class diagram], which most browsers should be able to render properly.
This diagram shows only class inheritance but is properly sorted into rdiff-backup's modules.
* Generated with `pyreverse-3 -k -m y -o svg rdiff_backup` (from the `pylint` package), the link:classes.svg[pyreverse class diagram] looks less readable to me but it shows also composition/aggregation of classes.
The link:packages.svg[packages diagram] generated by the same command is itself utterly useless.
== Plug-in architecture
Even if it might not make sense to write plug-ins for rdiff-backup, in the sense of "dropdown" external plug-ins, it definitely makes sense to define plug-in interfaces which makes it easier to disentangle the code, and extend it without inadvertently breaking other aspects.
The link:plugins[plug-ins interface] is defined in a separate document.
== Locations
How xref:locations.adoc[locations objects], i.e. directories and repositories, are handled is described.
There is for now a rather outdated xref:repository_format.adoc[format document].
== Other topics
* xref:completion.adoc[shell completion scripting] - if you want to add your ownshell completion script
* xref:error_policy.adoc[error policy] - quite old
|