いくつかのExcelファイルとSQLスキーマファイルを担当しています。これらのファイルのドキュメントバージョン管理を改善するにはどうすればよいですか?
これらのファイルで変更された部分(異なる部分)を知り、すべてのバージョンを参照できるようにする必要があります。現在、ファイル名にタイムスタンプを追加していますが、効率が悪いようです。
ドキュメントのバージョン管理を改善する方法や良い方法はありますか?
ところで、編集者は私にメールでファイルを送ってくれます。
git で質問にタグを付けたので、このためのGitの使用について尋ねていると思います。
さて、SQLダンプは通常のテキストファイルなので、Gitで追跡することは完全に理にかなっています。リポジトリを作成して保存するだけです。ファイルの新しいバージョンを取得したら、それを上書きしてコミットするだけで、Gitはすべてを自動的に判断します。変更日を確認し、このファイルの特定のバージョンをチェックアウトし、異なるバージョンを比較できます。
.xlsx
を解凍した場合も同様です。 .xlsx
ファイルは、XMLファイルのディレクトリに圧縮されています(内部サブコンポーネントから有効なxlsxファイルを適切にアセンブルする方法?)。 Gitは、解凍されない限り、バイナリとしてそれらを表示します。 .xlsx
を解凍し、アーカイブ内の個々のXMLファイルへの変更を追跡することができます。
.xls
ファイルでこれを行うこともできますが、ここでの問題は.xls
形式がバイナリであるため、意味のある差分を取得できないことです。ただし、変更履歴を確認し、特定のバージョンをチェックアウトすることはできます。
here と書いた答えは、この場合に適用できます。 xls2txt というツールを使用すると、.xlsファイルから人間が読み取れる出力を提供できます。要するに、これを.gitattributesファイルに追加する必要があります。
*.xls diff=xls
そして.git/configで:
[diff "xls"]
binary = true
textconv = /path/to/xls2txt
もちろん、他の種類のファイルにも同様のツールを見つけることができると確信しており、git diff
はオフィス文書に非常に便利なツールになっています。これは私が現在グローバル.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
Pro Gitブックには、テーマに関する適切な章があります:8.2 Gitのカスタマイズ-Git属性
この数日間、この正確な問題に苦労してきました。Excelファイルをソース管理に保存しやすいように抽出および正規化する小さな.NETユーティリティを作成しました。ここで実行可能ファイルを公開しました:
https://bitbucket.org/htilabs/ooxmlunpack/downloads/OoXmlUnpack.exe
..そしてここのソース:
https://bitbucket.org/htilabs/ooxmlunpack
興味がある場合は、これをより構成可能にしますが、現時点では、実行可能ファイルをフォルダー(たとえば、ソースリポジトリのルート)に入れて実行する必要があります:
明らかにこれらのすべてが必要というわけではありませんが、最終結果はExcelで開くスプレッドシートファイルですが、差分圧縮と増分圧縮の方がはるかに適しています。また、抽出されたファイルも保存すると、バージョン履歴で各バージョンに適用された変更がより明確になります。
食欲がある場合は、ツールをより構成可能にしたいと思います。誰もがコンテンツを抽出したり、おそらく式セルから値を削除したりする必要はないと思いますが、現時点ではこれらは両方とも非常に便利です。
テストでは、2 MBのスプレッドシートが21 MBに「展開」されますが、1.9 MBのMercurialデータファイルに、それぞれの間にわずかな変更を加えた5つのバージョンを保存し、バージョン間の違いを効果的に視覚化できました Beyond Compare テキストモード。
注:Mercurialを使用していますが、ソリューションの調査中にこの質問を読みました。Mercurial固有のソリューションはありません。Gitやその他のVCSで正常に動作するはずです。
TanteはGitでのZipベースのファイル形式の管理で非常にシンプルにしました:
〜/ .gitconfigファイルを開き(まだ存在しない場合は作成)、次のスタンザを追加します。
[diff "Zip"]
textconv = unzip -c -a
Excelブック用のオープンソースGitコマンドライン拡張機能 https://www.xltrail.com/git-xltrail を作成しました。
一言で言えば、主な機能は、git diff
を任意のワークブックファイル形式で動作させ、ワークブックのVBAコンテンツの差分を表示することです(ある時点で、このワークシートコンテンツでも動作します) )。
まだ初期段階ですが、役に立つかもしれません。
このExcelユーティリティは私にとって非常にうまく機能します:
これは、ワークブックおよびVBAマクロ用の非常に簡単なバージョン管理ツールです。バージョンをコミットすると、PCのGitリポジトリに保存されます。私はそれを再試行しませんでした。 SQLスキーマファイルですが、回避策はあると確信しています。
別の回答のコメントで述べたように、.xlsxファイルは単なるXMLです。
XMLディレクトリ(git
- able)にアクセスするには、.xlsxファイルをディレクトリに「解凍」する必要があります。 Windowsでこれを簡単に確認するには、ファイル<filename> .xlsxの名前を<filename> .Zipに変更すると、内部の内容が表示されます。チェックアウト時に、Excelでドキュメントを開くために他の手順を実行する必要がないように、これをバイナリと共に保存します。
オープンドキュメント拡張機能.fods
を使用します。これは、ExcelとLibreOfficeの両方で開くことができる、プレーンで非圧縮のXMLマークアップ形式であり、差分は見栄えがよくなります。
Excelファイルでの私のアプローチはJonのアプローチと似ていますが、生のExcelテキストデータを使用する代わりに、より使いやすい形式にエクスポートします。
私が使用するツールは次のとおりです。 https://github.com/stenci/ExcelToGit/tree/master
必要なのは、.xlsmファイルをダウンロードすることだけです( このページ の[生の表示]リンクをクリックします)。readmeの説明に従って、Excelの設定を確認することを忘れないでください。 SQLデータをテキストファイルにエクスポートするコードを追加することもできます。
このブックは、バイナリExcelからテキストファイルへのコンバーターであり、Windows Gitツールのランチャーでもあり、Excelに関連しないプロジェクトでも使用できます。
私の作業バージョンは、多数のExcelブックで構成されています。このファイルを使用して、Excel以外のプロジェクトのGit-guiを開き、手動でgitフォルダーを追加します。