Ich suche derzeit nach einem System, mit dem ich sowohl den Code als auch die Daten in meiner Forschung versionieren kann.
Ich denke, meine Art der Datenanalyse ist nicht ungewöhnlich, und dies ist nützlich für Viele Leute machen Bioinformatik und streben nach Reproduzierbarkeit.
Hier sind die Anforderungen:
- Die Analyse wird auf mehreren Computern (lokal, Cluster, Server) durchgeführt.
- Der gesamte Code wird transparent zwischen den Computern synchronisiert.
- Quellcode-Versionierung.
- Generierte Datenversionierung.
- Unterstützung für eine große Anzahl kleiner generierter Dateien (> 10k). Diese können auch gelöscht werden.
- Unterstützung für große Dateien (> 1 GB). Irgendwann können alte generierte Dateien dauerhaft gelöscht werden. Es wäre verrückt, diese transparent zu synchronisieren, aber es wäre schön, sie bei Bedarf synchronisieren zu können.
Bisher verwende ich git + rsync / scp. Es gibt jedoch mehrere Nachteile.
- Die Synchronisierung zwischen mehreren Computern ist etwas mühsam, d. H. Sie müssen vor jedem Arbeitsbeginn einen Git-Pull ausführen und nach jedem Update einen Git-Push durchführen. Damit kann ich leben.
- Sie sollten keine großen generierten Datendateien oder eine große Anzahl von Dateien in Ihrem Repository speichern.
- Daher muss ich Datendateien manuell mit rsync synchronisieren. Dies ist fehleranfällig.
Es gibt einen so genannten Git-Anhang. Es scheint wirklich nah an dem zu sein, was ich brauche. Aber:
- Ein bisschen mehr Arbeit als Git, aber das ist in Ordnung.
- Leider scheint es mit der großen Anzahl von Dateien nicht gut zu funktionieren. Oft habe ich mehr als 10.000 kleine Dateien in meiner Analyse. Es gibt einige Tricks, um die Indizierung zu verbessern, aber das Problem wird dadurch nicht gelöst. Was ich brauche, ist ein Symlink, der den gesamten Inhalt des Verzeichnisses darstellt.
Eine mögliche Lösung besteht darin, Dropbox oder ähnliches (wie Syncthing) in Kombination mit Git zu verwenden. Der Nachteil ist jedoch, dass keine Verbindung zwischen der Quellcodeversion und der Datenversion besteht.
Gibt es ein Versionsverwaltungssystem für den Code und die Daten, die den von Ihnen empfohlenen Anforderungen entsprechen?