\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}