Ich bin verantwortlich für mehrere Excel-Dateien und SQL-Schemadateien. Wie soll ich eine bessere Versionskontrolle für diese Dateien durchführen?
Ich muss das modifizierte Teil (anderes Teil) in diesen Dateien kennen und alle Versionen als Referenz aufbewahren. Derzeit hänge ich den Zeitstempel an den Dateinamen an, fand ihn jedoch ineffizient.
Gibt es eine Möglichkeit oder eine bewährte Methode für eine bessere Versionskontrolle von Dokumenten?
Übrigens senden mir die Redakteure die Dateien per E-Mail.
Da Sie Ihre Frage mit git markiert haben, gehen wir davon aus, dass Sie dazu Fragen zur Git-Nutzung haben.
Nun, SQL-Dumps sind normale Textdateien, daher ist es absolut sinnvoll, sie mit Git zu verfolgen. Erstellen Sie einfach ein Repository und speichern Sie sie darin. Wenn Sie eine neue Version einer Datei erhalten, überschreiben Sie sie einfach und bestätigen Sie sie. Git wird alles für Sie herausfinden und Sie werden in der Lage sein, Änderungsdaten zu sehen, bestimmte Versionen dieser Datei auszuchecken und verschiedene Versionen zu vergleichen.
Gleiches gilt für .xlsx
wenn Sie sie dekomprimieren. .xlsx
-Dateien sind komprimierte Verzeichnisse von XML-Dateien (Siehe Wie wird eine gültige xlsx-Datei aus ihren internen Unterkomponenten korrekt zusammengesetzt?). Git zeigt sie als Binärdateien an, sofern sie nicht dekomprimiert wurden. Es ist möglich, das .xlsx
und verfolgen Sie die Änderungen an den einzelnen XML-Dateien im Archiv.
Sie können dies auch mit .xls
Dateien, aber das Problem hier ist, dass .xls
Format ist binär, so dass Sie keine aussagekräftigen Unterschiede daraus erhalten können. Sie können jedoch weiterhin den Änderungsverlauf anzeigen und bestimmte Versionen auschecken.
Die Antwort, die ich geschrieben habe hier kann in diesem Fall angewendet werden. Ein Tool mit dem Namen xls2txt kann eine lesbare Ausgabe von XLS-Dateien bereitstellen. Kurz gesagt, sollten Sie dies in Ihre .gitattributes-Datei einfügen:
*.xls diff=xls
Und in der .git/config:
[diff "xls"]
binary = true
textconv = /path/to/xls2txt
Natürlich können Sie ähnliche Tools auch für andere Dateitypen finden, indem Sie git diff
ein sehr nützliches Tool für Office-Dokumente. Das habe ich aktuell in meiner globalen .gitconfig:
[diff "xls"]
binary = true
textconv = /usr/bin/py_xls2txt
[diff "pdf"]
binary = true
textconv = /usr/bin/pdf2txt
[diff "doc"]
binary = true
textconv = /usr/bin/catdoc
[diff "docx"]
binary = true
textconv = /usr/bin/docx2txt
Das Pro Git-Buch enthält ein gutes Kapitel zum Thema: 8.2 Anpassen von Git - Git-Attributen
Ich habe in den letzten Tagen mit genau diesem Problem zu kämpfen und ein kleines .NET-Dienstprogramm geschrieben, mit dem Excel-Dateien so extrahiert und normalisiert werden können, dass sie in der Quellcodeverwaltung viel einfacher gespeichert werden können. Ich habe die ausführbare Datei hier veröffentlicht:
https: //bitbucket.org/htilabs/ooxmlunpack/downloads/OoXmlUnpack.exe
..und die Quelle hier:
https: //bitbucket.org/htilabs/ooxmlunpack
Wenn es ein Interesse gibt, das ich gerne konfigurierbarer machen möchte, sollten Sie die ausführbare Datei im Moment in einem Ordner ablegen (z. B. im Stammverzeichnis Ihres Quell-Repositorys). Wenn Sie es ausführen, geschieht Folgendes:
Natürlich sind nicht alle diese Dinge notwendig, aber das Endergebnis ist eine Kalkulationstabellendatei, die immer noch in Excel geöffnet wird, die jedoch für unterschiedliche und inkrementelle Komprimierungen viel besser geeignet ist. Durch das Speichern der extrahierten Dateien wird auch im Versionsverlauf deutlich, welche Änderungen in den einzelnen Versionen vorgenommen wurden.
Wenn es Appetit gibt, bin ich froh, das Tool konfigurierbarer zu machen, da ich denke, dass nicht jeder die Inhalte extrahieren oder möglicherweise die Werte aus den Formelzellen entfernen möchte, aber diese beiden sind im Moment sehr nützlich für mich.
In Tests 'entpackt' eine 2-MB-Tabelle auf 21 MB, aber dann konnte ich fünf Versionen mit kleinen Änderungen in einer 1,9-MB-Mercurial-Datendatei speichern und die Unterschiede zwischen den Versionen mithilfe von effektiv visualisieren. -Beyond Compare im Textmodus.
NB: Obwohl ich Mercurial verwende, habe ich diese Frage während der Recherche nach meiner Lösung gelesen und es gibt nichts Mercurial-spezifisches an der Lösung, sollte für Git oder ein anderes VCS gut funktionieren.
Tante hat es sehr einfach gemacht in Zip-basierte Dateiformate in Git verwalten:
Öffnen Sie Ihre ~/.gitconfig-Datei (falls noch nicht vorhanden) und fügen Sie die folgende Zeilengruppe hinzu:
[diff "Zip"]
textconv = unzip -c -a
Wir haben eine Open-Source-Git-Befehlszeilenerweiterung für Excel-Arbeitsmappen erstellt: https://www.xltrail.com/git-xltrail .
Kurz gesagt, das Hauptmerkmal ist, dass es git diff
Arbeiten Sie mit beliebigen Arbeitsmappendateiformaten, sodass der Unterschied im VBA-Inhalt der Arbeitsmappe angezeigt wird (irgendwann wird dies auch für den Inhalt der Arbeitsmappen gelten).
Es ist noch früh, aber es könnte helfen.
Dieses Excel-Dienstprogramm funktioniert sehr gut für mich:
Es ist ein recht einfaches Versionierungswerkzeug für Arbeitsmappen und VBA-Makros. Sobald Sie eine Version festgeschrieben haben, wird diese in einem Git-Repository auf Ihrem PC gespeichert. Ich habe es nie wieder versucht. SQL-Schemadateien, aber ich bin mir sicher, dass es einen Ausweg gibt.
Wie im Kommentar einer anderen Antwort erwähnt, handelt es sich bei XLSX-Dateien nur um XML.
Um zum XML-Verzeichnis zu gelangen (das git
- fähig ist), müssen Sie die XLSX-Datei in ein Verzeichnis "entpacken". Eine schnelle Möglichkeit, dies unter Windows zu sehen, besteht darin, die Datei <Dateiname> .xlsx in <Dateiname> .Zip umzubenennen. Sie sehen dann den inneren Inhalt. Ich würde dies zusammen mit der Binärdatei speichern, damit Sie beim Auschecken keine weiteren Schritte ausführen müssen, um das Dokument in Excel zu öffnen.
Verwenden Sie die offene Dokumenterweiterung .fods
. Es ist ein einfaches, unkomprimiertes XML-Markup-Format, das sowohl von Excel als auch von LibreOffice geöffnet werden kann, und die Unterschiede sehen gut aus.
Mein Ansatz mit Excel-Dateien ist ähnlich wie bei Jon, aber anstatt mit den rohen Excel-Textdaten zu arbeiten, exportiere ich sie in freundlichere Formate.
Hier ist das Tool, das ich benutze: https://github.com/stenci/ExcelToGit/tree/master
Sie müssen lediglich die .xlsm-Datei herunterladen (klicken Sie auf den Link View Raw auf diese Seite .) Vergessen Sie nicht, die Excel-Einstellung wie in der Readme-Datei beschrieben zu überprüfen. Sie können auch den Code zum Exportieren von SQL-Daten in Textdateien hinzufügen.
Die Arbeitsmappe ist sowohl ein Konverter von binärem Excel in Textdateien als auch ein Starter der Windows-Git-Tools. Sie kann auch mit Projekten verwendet werden, die nicht mit Excel zusammenhängen.
Meine Arbeitsversion ist mit Dutzenden von Excel-Arbeitsmappen konfiguriert. Ich benutze die Datei auch, um Git-gui für Nicht-Excel-Projekte zu öffnen, indem ich einfach den Git-Ordner von Hand hinzufüge.