私はいくつかのExcelファイルとSQLスキーマファイルを担当しています。これらのファイルでドキュメントのバージョン管理を改善するにはどうすればよいですか?
これらのファイルで変更された部分(異なる部分)を確認し、すべてのバージョンを参照用に保持する必要があります。現在、ファイル名にタイムスタンプを追加していますが、効率が悪いようです。
ドキュメントのバージョン管理を改善する方法または良い方法はありますか?
ちなみに、編集者はメールでファイルを送ってくれます。
私はいくつかのExcelファイルとSQLスキーマファイルを担当しています。これらのファイルでドキュメントのバージョン管理を改善するにはどうすればよいですか?
これらのファイルで変更された部分(異なる部分)を確認し、すべてのバージョンを参照用に保持する必要があります。現在、ファイル名にタイムスタンプを追加していますが、効率が悪いようです。
ドキュメントのバージョン管理を改善する方法または良い方法はありますか?
ちなみに、編集者はメールでファイルを送ってくれます。
回答:
あなたの質問にタグを付けたので ギット このためのGitの使用について質問していると思います。
まあ、SQLダンプは通常のテキストファイルなので、Gitで追跡することは完全に理にかなっています。リポジトリを作成してそこに保存するだけです。ファイルの新しいバージョンを取得したら、単に上書きしてコミットすると、Gitがすべてを把握し、変更日を確認したり、このファイルの特定のバージョンをチェックアウトしたり、さまざまなバージョンを比較したりできます。
同じことが当てはまります .xlsx
解凍した場合も。.xlsx
ファイルは、XMLファイルのディレクトリを圧縮したものです(内部のサブコンポーネントから有効なxlsxファイルを適切にアセンブルする方法を参照してください)。解凍しない限り、Gitはそれらをバイナリとして表示します。を解凍して.xlsx
、アーカイブ内の個々のXMLファイルへの変更を追跡することができます。
.xls
ファイルでこれを行うこともできますが、ここでの問題は、.xls
形式がバイナリであるため、そこから意味のある差分を取得できないことです。ただし、変更履歴を確認したり、特定のバージョンをチェックアウトしたりすることはできます。
.xlsx
はXML なので、正常に動作するはずです。一般に、2つの.xls
ファイルを簡単に比較する方法はありません。あなたはおそらく.csv
それを近くに置くpre-commitフックを追加することができ、それらをdiffすることができます。
ここで私が書いた答えはこの場合にも適用できます。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属性
私はこの数日間、この正確な問題に取り組んできました。小さな.NETユーティリティを作成して、Excelファイルをソース管理に格納しやすい方法で抽出および正規化しました。ここに実行可能ファイルを公開しました:
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コンテンツの差分を表示するように、すべてのワークブックファイル形式で機能することです(ある時点で、この機能をワークシートコンテンツにも適用します)。
まだ初期段階ですが、役立つかもしれません。
別の回答のコメントで述べたように、.xlsxファイルは単なるXMLです。
XMLディレクトリ(git
-ableです)に移動するには、.xlsxファイルをディレクトリに「解凍」する必要があります。Windowsでこれを確認する簡単な方法は、ファイル<filename> .xlsxの名前を<filename> .zipに変更することです。これにより、内部のコンテンツが表示されます。これをバイナリと一緒に保存して、チェックアウト時にExcelでドキュメントを開くために他の手順を実行する必要がないようにします。
このExcelユーティリティは私にとって非常にうまく機能します。
これは、ブックとVBAマクロ用の非常に単純なバージョン管理ツールです。バージョンをコミットすると、PCのGitリポジトリに保存されます。私はそれを試したことはありません。SQLスキーマファイルですが、回避策があると確信しています。
xltrail
それよりずっと簡単です。
Excelファイルでの私のアプローチはJonのアプローチと似ていますが、生のExcelテキストデータを操作する代わりに、より使いやすい形式にエクスポートします。
ここに私が使用するツールがあります: https //github.com/stenci/ExcelToGit/tree/master
必要なのは、.xlsmファイルをダウンロードすることだけです(このページの [Rawを表示]リンクをクリックしてください))。readmeに記載されているように、Excel設定を確認することを忘れないでください。SQLデータをテキストファイルにエクスポートするコードを追加することもできます。
このワークブックは、バイナリExcelからテキストファイルへのコンバーターであり、Windows Gitツールのランチャーでもあり、Excel以外の関連プロジェクトでも使用できます。
私の作業バージョンは、数十のExcelブックで構成されています。このファイルを使用して、Excel以外のプロジェクトのGit-guiを開き、手動でgitフォルダーを追加します。