FYI: Versionskontrolle mit Git, z.B. für Notationssoftware, DAWs usw.

MS-SPO
MS-SPO
Registrierter Benutzer
Zuletzt hier
21.06.21
Registriert
03.05.19
Beiträge
1.327
Kekse
3.919
Moin zusammen,

vielleicht eher ein Randthema ... allerdings ist Versionskontrolle irgendwie für Jede/n Kreativen wichtig. Hier einige "Hausmacher"-Lösungen für durch Software entstandene Werke aller Art:
  • Werk häufiger unter neuem Dateinamen (zwischen-) speichern (z.B. Song-V1.1, Song V1.2 usw.)
  • Backups / Archive / zip
  • möglicherweise hat das eine oder andere Programm auch eine ähnliche Funktionalität.

Git kommt aus der Software-Entwicklung ... auch hier steckt ein gewisser Linus Thorwald dahinter. Ich möchte jetzt gar nicht in die Untiefen des flexiblen Git eintauchen, sondern auf DEN Knackpunkt fokussieren für Dateien, die KEIN Textformat sind (also so ziemlich alle für uns hier).

Dazu:
  • Hintergrund
  • Die Krux
  • Lösungsansatz
  • Beispiel (Word)

ZUNÄCHST HINTERGRUND
Folgende Graphik zeigt eine Situation, die auch im Musikbereich vorkommen kann, wenn man etwas erschafft, verändert oder anpasst:
  • man fängt irgendwo an (im Bild rechts), z.B. mit der Strophe zum Song, in >>> erster Variante <<<
  • dann macht man weiter (nach links)
  • vielleicht trägt ein Dritter parallel bei (orange)
  • vielleicht möchte ich den Refrain (blau) schon einmal entwickeln, während es mit der Strophe noch weitergeht (grün)
  • und irgendwie hat man am Ende einen "Stand von heute" (Master, links)
  • die Kreise können z.B. sein:
    • mehrere Einzeldateien zum Gesamtstück
    • verschiedene Abschnitte in derselben Gesamtdatei
    • Lyrics-Varianten
    • alternative Darstellungen (Layout, Formatierung, Zeilenumbrüche ...)
    • usw.
  • jeder Kreis entspricht einem Snapshot aller unter Git verwalteten Dateien
  • die Zeitachse läuft quasi von rechts nach links
git-branches-merge.png




Wenn ich mir das als Dateiengewirr vorstelle, ist das ganz oft ganz wenig schön, vielleicht sogar mit einer Flut an Unterverzeichnissen mit entsprechender Namensgebung. Git hilft hier prinzipiell so:
  • man hat nur ein Arbeitsverzeichnis (gut !)
  • darin befinden sich alle Dateien, die zu einem der Kreise (Versionen) gehören (d.h. der Verzeichnisinhalt hängt von der Version ab)
  • Versionsbezeichnungen verteilt man selbst
  • man kann verzweigen (zu orange und/oder zu blau)
  • man kann zusammenführen (blau + grün)
  • man kann zu einem alten Versionsstand zurückkehren, neue verzweigen ("neue Idee, neuer Versuch, Alternative ...")
  • usw.
  • alles geschieht lokal und offline
  • das Git-Verzeichnis kann ich beliebig mit anderen teilen (orange) usw.
Schick und schlank.

DIE KRUX:
Das Zusammenführen (merge) ist kritisch:
  • manche Zusammenführungen sind sorglos (voneinander unabhängige Teile)
  • andere bieten Konflikte (Alternativen in "derselben" Datei)
In der Softwarewelt, in der jeder Quellcode ja nur eine ASCII-Textdatei ist, macht Git Folgendes:
  • es meldet den Konflkt beim Versuch, zusammenzuführen (merge)
  • es SCHREIBT in die betreffenden Textdateien direkt hinen (hier Alt, dort Neu)
  • man editiert dann direkt darin und führt das Endergebnis wieder Git's Versionsverwaltung zu.
Technisch ruft Git dabei eine diff-Funktion auf, die genau das macht ...


Und wenn man nun KEINE Textdatei hat (.midi, .mscz, .daw, ...), ist das doof.

Gängiger Ansatz in der Software-Welt:
  • irgendwie automatisch nach TEXT konvertieren
  • TEXTe vergleichen
  • irgendwie Änderungen einarbeiten
  • für Word landet man dann zwanglos bei Pandoc u.Ä. ...
  • ... und schick ist anders :evil:
  • ... denn beispielsweise Word bietet schon eine schicke Überarbeitungsfunktion

LÖSUNGANSATZ:
Voraussetzung:
  • das Notenprogramm, DAW, Word usw. (Lieblingsprogramm) SELBST kann zwei Datein seiner selbst vergleichen
  • UND die Unterschiede geeignet sichtbar machen
  • idealerweise kann es dann auch Änderungen interaktiv zusammenführen
Konkrete Beispiele:
  • Noten: Musescore 3, unter View / Score, dann compare // führt allerdings nicht zusammen
  • Lyrics: Word, unter Überprüfen // führt auch zusammen

MANUELLER WORKFLOW:
  • aktuellen master-Stand an Git übergeben (git add, git commit), z.B. den vorletzten grünen Kreis links
  • den interessierenden Endstand aus dem Nebenzweig aufrufen (git checkout alternative), z.B. den letzten blauen Kreis links
  • diese Datei unter temporärem Namen speichern
  • master-Stand zurückholen (git checkout master)
  • "gleiche" Datei mit der temporären über das Lieblingsprogramm vergleichen, zusammenführen und speichern (d.h. überschreiben)
  • temporäre Datei löschen: sie hat ihren Lebenszweck erfüllt
  • Git Versionskontrolle des neuen Zustandes (git add, git commit)
  • ggf. neuen Tag verteilen (git tag -a neueIdee)

BEISPIEL:
Aus einem Szenario mit Word. Man stelle sich das mit seinem Lieblingsprogramm vor ... Zunächst die Historie, von unten nach oben:
1623417627310.png


V0.1 kann ich wiederherstellen, und so sieht das Verzeichnis aus:
1623417676463.png

Beispiel.docx ist wüst und leer, bis auf ein wenig Lore-ipsum Blindtext. Am Anfang verzweige ich:
  • Zweig test: der fügt im utneren Teil von Beispiel.docx Überschriften ein (später gelöscht, weil sein Lebenszweck erfüllt war ... daher hier nicht mehr sichtbar)
  • parallel im Zweig master: Überschriften im oberen Teil
  • will ich jetzt die beiden verschiedenen Inhalte von Beispiel.docx zusammenführen ...
  • ... dann geht das, wie oben unter Workflow beschrieben :D , also außerhalb von Git
Fleißig weitergearbeitet, ergibt in V0.3.1:
1623417883329.png

Dabei verknüpft Oberdok.docx am Ende Beispiel und Unterteil, d.h. DIESES enthält immer den kompletten Stand aus Arbeiten an Beispiel oder Unterteil.
  • Viele Versionen, ein aufgeräumtes Verzeichnis.
  • Schick und schlank.

Und so sieht dann z.B. Oberdock in V0.3.1 aus, völlig ohne Dateiengewusel für Zwischenstände:
1623418749106.png


Würde mich freuen, wenn das dem Einen oder der Anderen weiterhilft.
Grüße, Michael
 
Zuletzt bearbeitet:
  • Interessant
  • Gefällt mir
Reaktionen: 2 Benutzer
C
Christian_Hofmann
Registrierter Benutzer
Zuletzt hier
20.06.21
Registriert
21.07.20
Beiträge
393
Kekse
1.156
Einige Programme wie Sibelius bieten ja eine eingebaute Versionskontrolle an. Da lohnt es sich auch noch einmal für seine Software zu schauen ob es eine fertige Lösung gibt.

Wenn nicht ist deine Lösung sehr gut, danke dafür.
 
  • Gefällt mir
Reaktionen: 1 Benutzer
MS-SPO
MS-SPO
Registrierter Benutzer
Zuletzt hier
21.06.21
Registriert
03.05.19
Beiträge
1.327
Kekse
3.919
Danke + guter Hinweis :giggle:

Ganz, ganz notfalls, wenn das Lieblingsprogramm nun gar nichts vergleichen will, gibt es ja noch manuelle Notbehelfe zum Vergleichen / zur Differenzbildung:
  • visueller Vergleich (am besten mehrfach nach unterschiedlichen Schwerpunkten)
  • zweckentfremdetes Feature:
    • z.B. Paint.net bei Bildern
      • beide Bilder in je eine Ebene laden
      • XOR verknüpfen
      • so fallen Änderungen wenigstens auf
    • z.B. DAW mit .wav Dateien
      • je eine Spur anlegen
      • Differenzspur bilden (z.B. durch Invertieren
      • so fallen Zeitabschnitte mit starken Veränderungen auf
      • von da aus weiter vorhangeln
Kreativität siegt :D
 

Ähnliche Themen

Neue Themen

Unser weiteres Online-Angebot:
Bassic.de · Deejayforum.de · Sequencer.de · Clavio.de · Guitarworld.de · Recording.de

Musiker-Board Logo
Oben