Ich bin verantwortlich für mehrere Excel-Dateien und SQL-Schemadateien. Wie sollte ich eine bessere Versionskontrolle für Dokumente für diese Dateien durchführen?
Ich muss das geänderte Teil (anderes Teil) in diesen Dateien kennen und alle Versionen als Referenz behalten. Momentan füge ich den Zeitstempel an den Dateinamen an, aber ich fand ihn ineffizient.
Gibt es eine Möglichkeit oder bewährte Methode, um die Versionskontrolle von Dokumenten zu verbessern?
Die Redakteure senden mir die Dateien übrigens per E-Mail.
git
version-control
ms-office
versioning
Marcus Thornton
quelle
quelle
Antworten:
Da hast du deine Frage mit getaggt git Ich gehe davon aus, dass Sie nach der Verwendung von Git fragen.
Nun, SQL-Dumps sind normale Textdateien, daher ist es absolut sinnvoll, sie mit Git zu verfolgen. Erstellen Sie einfach ein Repository und speichern Sie es darin. Wenn Sie eine neue Version einer Datei erhalten, diese einfach überschreiben und festschreiben, wird Git alles für Sie herausfinden und Sie können Änderungsdaten anzeigen, bestimmte Versionen dieser Datei auschecken und verschiedene Versionen vergleichen.
Gleiches gilt,
.xlsx
wenn Sie sie dekomprimieren..xlsx
Dateien sind komprimierte Verzeichnisse von XML-Dateien (siehe So stellen Sie eine gültige XLSX-Datei ordnungsgemäß aus ihren internen Unterkomponenten zusammen? ). Git betrachtet sie als binär, sofern sie nicht dekomprimiert sind. Es ist möglich,.xlsx
die Änderungen an den einzelnen XML-Dateien im Archiv zu entpacken und zu verfolgen.Sie können dies auch mit
.xls
Dateien tun , aber das Problem hier ist, dass das.xls
Format binär ist, sodass Sie keine aussagekräftigen Unterschiede daraus erhalten können. Sie können jedoch weiterhin den Änderungsverlauf anzeigen und bestimmte Versionen auschecken.quelle
.xlsx
ist XML, sollte also gut funktionieren. Im Allgemeinen gibt es keine Möglichkeit, zwei.xls
Dateien einfach zu vergleichen . Sie könnten wahrscheinlich einen Pre-Commit-Hook hinzufügen, der einen in die.csv
Nähe bringt, und Sie können diese unterscheiden.Die Antwort, die ich hier geschrieben habe, kann in diesem Fall angewendet werden. Ein Tool namens xls2txt kann für Menschen lesbare Ausgaben von XLS-Dateien bereitstellen. Kurz gesagt, sollten Sie dies in Ihre .gitattributes-Datei einfügen:
Und in der .git / config:
Ich bin mir sicher, dass Sie ähnliche Tools auch für andere Dateitypen finden können, was
git diff
ein sehr nützliches Tool für Office-Dokumente darstellt. Folgendes habe ich derzeit in meiner globalen .gitconfig:Das Pro Git-Buch enthält ein gutes Kapitel zu diesem Thema: 8.2 Anpassen von Git-Git-Attributen
quelle
Ich habe in den letzten Tagen mit genau diesem Problem zu kämpfen und ein kleines .NET-Dienstprogramm geschrieben, um Excel-Dateien so zu extrahieren und zu normalisieren, dass sie in der Quellcodeverwaltung viel einfacher zu speichern sind. 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 Interesse gibt, bin ich froh, dies konfigurierbarer zu machen, aber im Moment sollten Sie die ausführbare Datei in einem Ordner (z. B. dem Stammverzeichnis Ihres Quell-Repositorys) ablegen. Wenn Sie sie ausführen, wird sie:
Natürlich sind nicht alle diese Dinge notwendig, aber das Endergebnis ist eine Tabellenkalkulationsdatei, die weiterhin in Excel geöffnet wird, die jedoch einer unterschiedlichen und inkrementellen Komprimierung viel besser zugänglich ist. Durch das Speichern der extrahierten Dateien wird im Versionsverlauf viel deutlicher, welche Änderungen in den einzelnen Versionen vorgenommen wurden.
Wenn da draußen Appetit besteht, bin ich froh, das Tool konfigurierbarer zu machen, da ich denke, dass nicht jeder den Inhalt extrahieren oder möglicherweise die Werte aus Formelzellen entfernen möchte, aber beide sind im Moment sehr nützlich für mich.
In Tests wurde eine 2-MB-Tabelle auf 21 MB entpackt, aber dann konnte ich fünf Versionen mit jeweils kleinen Änderungen in einer 1,9-MB-Mercurial-Datendatei speichern und die Unterschiede zwischen den Versionen mithilfe von Beyond Compare in effektiv visualisieren Textmodus.
NB: Obwohl ich Mercurial verwende, habe ich diese Frage bei der Recherche meiner Lösung gelesen und es gibt nichts Mercurial-spezifisches an der Lösung, das für Git oder jedes andere VCS gut funktionieren sollte.
quelle
Tante empfahl einen sehr einfachen Ansatz zum Verwalten von ZIP-basierten Dateiformaten in Git :
quelle
Verwenden Sie die offene Dokumenterweiterung
.fods
. Es ist ein einfaches, unkomprimiertes XML-Markup-Format, das sowohl Excel als auch LibreOffice öffnen können, und die Unterschiede sehen gut aus.quelle
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 macht
git diff
alle Arbeitsmappen-Dateiformate bearbeitet werden, sodass der Unterschied zum VBA-Inhalt der Arbeitsmappe angezeigt wird (irgendwann wird dies auch für den Inhalt der Arbeitsblätter funktionieren).Es ist noch früh, aber es könnte helfen.
quelle
Wie im Kommentar einer anderen Antwort erwähnt, sind XLSX-Dateien nur XML.
Um zum XML-Verzeichnis zu gelangen (das
git
-able 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. Der innere Inhalt wird angezeigt. 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.quelle
Dieses Excel-Dienstprogramm funktioniert sehr gut für mich:
Versionskontrolle für Excel
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 sicher, es gibt einen Ausweg.
quelle
xltrail
ist viel einfacher als das.Mein Ansatz mit Excel-Dateien ähnelt dem von Jon, aber anstatt mit den rohen Excel-Textdaten zu arbeiten, exportiere ich in benutzerfreundlichere 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 dieser Seite ). Vergessen Sie nicht, die Excel-Einstellung wie in der Readme- 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 und kann auch mit nicht Excel-bezogenen Projekten verwendet werden.
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.
quelle