3

git では.gitattributes、.odt ファイル、libreofice ライター ファイルを difftool と比較するために使用しようとしています。このガイドに従うことから: http://www-verimag.imag.fr/~moy/opendocument/私はこれで.gitattributesファイル .gitattributes を作りました:

*.ods diff=odf
*.odt diff=odf
*.odp diff=odf

*.ods difftool=odf
*.odt difftool=odf
*.odp difftool=odf

これにより、git diff が .odt のテキストを比較するようになりましたが、git difftool が kdiff3 を起動して .odt ファイルを比較すると、次のポップアップ エラーが発生します。

Some input characters could not be converted to valid unicode.
You might be using the wrong codec. (e.g. UTF-8 for non UTF-8 files).
Don't save the result if unsure. Continue at your own risk.
Affected input files are in A, B.

...そして、ファイル内のすべての文字は巨大ジャンボです。

何が悪かったのか?これを修正するにはどうすればよいですか?

PS:

これが重要かどうかはわかりませんが、コマンドを実行するたびに「diff.tool」を構成していないと思います。

$ git difftool 

私はこの出力を得る:

This message is displayed because 'diff.tool' is not configured.
See 'git difftool --tool-help' or 'git help config' for more details.
'git difftool' will now attempt to use one of the following tools:
opendiff kdiff3 tkdiff xxdiff meld kompare gvimdiff diffuse diffmerge ecmerge p4merge araxis bc codecompare emerge vimdiff

Viewing (1/1): 'diffexperiment.odt'
Launch 'kdiff3' [Y/n]:

それが、kdiff3 が odt2txt で動作しないように見える理由でしょうか?

編集: Microsoft Word 文書でこれを再試行し、ここでもう少し進めました。

.kdiff3rc 構成をいじってみました...追加したオプションのどれも、読み取り不能な文字を読み取り可能にするようには見えませんでした。比較ツールを vimdiff に変更しました。また、Microsoft Word ドキュメントで git difftool を実行すると、vimdiff は、判読できない文字ではなく、.xml で終わるファイルのリストを表示しました。

ファイルの 1 つで Enter キーを押すと、次のように表示されます。

<?xml version="1.0" encoding="UTF-8"?>
  " Browsing zipfile /tmp/4LMJbj_HI I am writing something here..docx                          |<Types xmlns="http://schemas.openxmlformats.org/package/2006/content-types"><Override PartName
  " Select a file with cursor and press ENTER                                                  |="/_rels/.rels" ContentType="application/vnd.openxmlformats-package.relationships+xml"/><Overr
                                                                                               |ide PartName="/word/settings.xml" ContentType="application/vnd.openxmlformats-officedocument.w
  _rels/.rels                                                                                  |ordprocessingml.settings+xml"/><Override PartName="/word/_rels/document.xml.rels" ContentType=
  word/settings.xml                                                                            |"application/vnd.openxmlformats-package.relationships+xml"/><Override PartName="/word/fontTabl
  word/_rels/document.xml.rels                                                                 |e.xml" ContentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+x
  word/fontTable.xml                                                                           |ml"/><Override PartName="/word/styles.xml" ContentType="application/vnd.openxmlformats-officed
  word/numbering.xml                                                                           |ocument.wordprocessingml.styles+xml"/><Override PartName="/word/document.xml" ContentType="app
  word/styles.xml                                                                              |lication/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml"/><Override Part
  word/document.xml                                                                            |Name="/docProps/app.xml" ContentType="application/vnd.openxmlformats-officedocument.extended-p
  docProps/app.xml                                                                             |roperties+xml"/><Override PartName="/docProps/core.xml" ContentType="application/vnd.openxmlfo
  docProps/core.xml                                                                            |rmats-package.core-properties+xml"/>
  [Content_Types].xml                                                                          |</Types>

この問題に関する新しい質問をここに投稿しました。

4

2 に答える 2

2

に加えて、何を意味するか.gitattribute設定する必要があります。odf

git config diff.odf.textconv odt2txt

または(Windows)odt2txtに (OpenDocument テキストからプレーン テキストへの単純なコンバーター)が必要です。$PATH (Linux/Mac)%PATH%

デフォルトで十分なのでdifftool、設定する必要はありません。 ただし、テキストファイルを開く必要があるため、(最初にドキュメントをテキストファイルに変換するために)kdiff3
kdiff3odt2txt


の詳細については、「バイナリ ファイルのテキスト差分の実行textconv」を参照してください。

一部のバイナリ ファイルのテキスト変換バージョンの差分を表示することが望ましい場合があります。たとえば、ワード プロセッサ ドキュメントを ASCII テキスト表現に変換し、テキストの差分を表示できます。
この変換によって一部の情報が失われますが、結果の差分は人間が見るのに役立ちます (ただし、直接適用することはできません)。

config オプションは、このtextconvような変換を実行するためのプログラムを定義するために使用されます。プログラムは、変換するファイルの名前である単一の引数を取り、結果のテキストを stdout に生成する必要があります。

ノート

通常、テキスト変換は一方向の変換です。これは、 によって生成された差分textconvが適用に適していないことを意味します。

このため、git diffおよびgit logコマンド ファミリー (つまり、logwhatchangedshow) のみがテキスト変換を実行します。
git format-patchこの出力を生成することはありません。

バイナリ ファイルのテキスト変換された diff を誰かに送信したい場合 (たとえば、行った変更をすばやく伝えるため)、それを個別に生成し、通常のバイナリ diff に加えてコメントとして送信する必要があります。送信。


OPジャックコメントで言及しています:

Linux では、ホーム ディレクトリで実行しました。

$ git config diff.odf.textconv odt2txt

私はodt2txtインストールしていました... が にあると思いodt2txtます。$PATHなぜなら、 を実行する$ odt2txtと に関する情報が得られるからodt2txtです。ただし、何らかの理由でファイルを
作成するものはないようです。 Iの場合、テキストが正確にどのように区別されるかではなく、バイナリファイル fileone.odt と filetwo.odt が異なるという出力が得られます。 なぜ機能しないのかわかりません。git diff .odt
$ git diff fileone.odt filetwo.odt

于 2015-10-31T05:24:01.180 に答える