私はいくつかの Excel ファイルと SQL スキーマ ファイルを担当しています。これらのファイルのドキュメントのバージョン管理を改善するにはどうすればよいですか?
これらのファイルで変更された部分 (異なる部分) を知り、参照用にすべてのバージョンを保持する必要があります。現在、ファイル名にタイムスタンプを追加していますが、効率が悪いようです。
ドキュメントのバージョン管理を改善する方法や良い方法はありますか?
ちなみに、編集者はメールでファイルを送ってくれます。
私はいくつかの Excel ファイルと SQL スキーマ ファイルを担当しています。これらのファイルのドキュメントのバージョン管理を改善するにはどうすればよいですか?
これらのファイルで変更された部分 (異なる部分) を知り、参照用にすべてのバージョンを保持する必要があります。現在、ファイル名にタイムスタンプを追加していますが、効率が悪いようです。
ドキュメントのバージョン管理を改善する方法や良い方法はありますか?
ちなみに、編集者はメールでファイルを送ってくれます。
ここに書いた答えは、この場合に適用できます。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 book には、このテーマに関する優れた章があります: 8.2 Git のカスタマイズ - Git 属性
質問にgitのタグを付けたので、これに対する Git の使用法について質問していると思います。
SQL ダンプは通常のテキスト ファイルなので、Git で追跡するのは理にかなっています。リポジトリを作成してそこに保存するだけです。ファイルの新しいバージョンを取得したら、それを上書きしてコミットするだけで、Git がすべてを把握し、変更日を確認したり、このファイルの特定のバージョンをチェックアウトしたり、異なるバージョンを比較したりできます。
.xlsx
解凍した場合も同様です。.xlsx
ファイルは、XML ファイルのディレクトリを圧縮したものです (内部サブコンポーネントから有効な xlsx ファイルを適切に組み立てるには? を参照してください)。解凍しない限り、Git はそれらをバイナリとして表示します。.xlsx
アーカイブ内の個々の XML ファイルを解凍して変更を追跡することができます。
.xls
ファイルでこれを行うこともできますが、ここでの問題は、.xls
形式がバイナリであるため、意味のある差分を取得できないことです。ただし、変更履歴を表示したり、特定のバージョンをチェックアウトしたりすることは引き続き可能です。
私はここ数日間、まさにこの問題に取り組んでおり、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を使用してバージョン間の違いを効果的に視覚化することができました。テキストモード。
NB: Mercurial を使用していますが、解決策を調べているときにこの質問を読みましたが、解決策について Mercurial 固有のものは何もありません。Git やその他の VCS で問題なく動作するはずです。
この Excel ユーティリティは私にとって非常にうまく機能します。
これは、ワークブックおよび VBA マクロ用の非常に簡単なバージョン管理ツールです。バージョンをコミットすると、PC の Git リポジトリに保存されます。私はそれを再試行したことはありません。SQLスキーマファイルですが、回避策があると確信しています.
Excel ファイルに対する私のアプローチは Jon のアプローチと似ていますが、未加工の Excel テキスト データを扱う代わりに、より使いやすい形式にエクスポートします。
私が使用するツールは次のとおりです: https://github.com/stenci/ExcelToGit/tree/master
必要なのは、.xlsm ファイルをダウンロードすることだけです (このページの [View Raw] リンクをクリックします)。readme に記載されているように、Excel の設定を確認することを忘れないでください。コードを追加して、SQL データをテキスト ファイルにエクスポートすることもできます。
ワークブックは、バイナリ Excel からテキスト ファイルへのコンバーターであり、Windows Git ツールの起動ツールでもあり、Excel 関連以外のプロジェクトでも使用できます。
私の作業バージョンは、多数の Excel ワークブックで構成されています。このファイルを使用して、Excel 以外のプロジェクトの Git-gui を開き、git フォルダーを手動で追加するだけです。
別の回答のコメントで述べたように、.xlsx ファイルは単なる XML です。
XML ディレクトリ (可能git
) にアクセスするには、.xlsx ファイルをディレクトリに「解凍」する必要があります。Windows でこれを確認する簡単な方法は、ファイル <filename>.xlsx の名前を <filename>.zip に変更することです。これにより、内部の内容が表示されます。これをバイナリと共に保存して、チェックアウト時にドキュメントを Excel で開くために他の手順を実行する必要がないようにします。