\subsubsection{Grafting}

\hfill \includegraphics[scale=0.55]{bilder/grafting.png} \hspace*{\fill}

Die aus der Abhandlung \href{http://sigops.org/sosp/sosp13/papers/p151-mashtizadeh.pdf}{>>Replication, History, and Grafting in the Ori File System<<} von Entwicklern der Standford University stammende Grafik >>Figure 1<< zeigt eine bespielhafte Nutzung von Ori. Das Dateisystem eines Nutzers wurde über mehrere Geräte repliziert. Ein Freund des Nutzers hat mit Hilfe des Grafting eines der Verzeichnisse des Nutzers in sein eigenes Dateisystem übertragen. Änderungen an den übertragenen Dateien sollen später manuell synchronisiert werden können. \\

Wenn ein Verzeichnis Q als Verzeichnis Z in das Ziel-Dateisystem übertragen wird, soll dort ein spezieller Commit-Eintrag erstellt werden. Dieser enthält zusätzlich zu einem normalen Eintrag die UUID des Quell-Dateisystems \emph{graft-fsid}, den Quell-Pfadnamen \emph{graft-path}, einen Hash des Original-Commits aus dem Quell-Dateisystem \emph{graft-commit} und den Ziel-Pfadnamen \emph{graft-target}. Ist das Quell-Verzeichnis selbst gegrafted worden, werden dessen Quell-Informationen eingetragen. \\

Das Grafting soll mit Hilfe dieses Befehls ausgeführt werden:

\shellcmd{ori graft q\_repo/q\_path z\_repo/z\_path}

Bei \emph{q\_repo/q\_path} handelt es sich um das Verzeichnis Q im Quell-Repo und bei \emph{z\_repo/z\_path} um das Verzeichnis Z im Ziel-Repo. Mir war es jedoch nicht möglich, diesen Befehl erfolgreich auszuführen. Zwar wurde das Verzeichnis Q nach einer Warnung (Quelle oder Ziel ist kein Repository) in das Ziel-Repo übertragen, dennoch wurde dort keinerlei Eintrag in der History angelegt.

\pagebreak
