\subsubsection{Funktionsweise} \hfill \includegraphics{ori/ori.pdf} \hspace*{\fill} Wie aus dem Systemdiagramm ersichtlich ist, besteht Ori aus den Teilprogrammen \emph{ori}, \emph{orisync} und \emph{orifs}, die auf \emph{libori} aufgebaut sind. \begin{description} \item[\emph{ori}] stellt die Schnittstelle zum Nutzer dar. Hier werden Repos erstellt, gelöscht und manuelle Operationen ausgeführt. Folgende Befehle sind implementiert: \begin{description} \item[\emph{newfs [name]}] erstellt ein neues Repo namens \emph{name}. \item[\emph{removefs [name]}] löscht das Repo \emph{name}. \item[\emph{list}] listet alle lokalen Repositorien auf. \item[\emph{status}] gibt eine Liste modifizierter Dateien aus. \item[\emph{diff}] zeigt alle Änderungen seit dem letzten Snapshot an. \item[\emph{snapshot [description]}] erstellt einen Snapshot mit einer \emph{description}, die optional ist. Zugleich wird das Repo eingecheckt. \item[\emph{purgesnapshot [commitid]}] löscht den Snapshot zu \emph{commitid} und gibt Speicher frei. \item[\emph{log}] zeigt die History des Repos an. \item[\emph{replicate [node:repo]}] repliziert das Repo \emph{repo} von Node \emph{node}. \item[\emph{pull}] synchronisiert manuell das Repo. \item[\emph{merge [commitid]}] vereinigt manuell das vorhandene Repo mit dem von \emph{commitid}. \item[\emph{checkout [commitid]}] checkt das Repo mit \emph{commitid} lokal aus. \end{description} \item[\emph{orisync}] entdeckt andere Kopien eines Repos und synchronisiert diese automatisch. \end{description}