2012-01-27 13 views
0

私は、移植性のあるdiffライブラリを探しています(No Pear、xdiffのような広範に普及していない拡張機能はありません)。私が使用しているdiffファイルは、と統一して使用しています。適用前にdiffパッチを検証する

私はclass.simplediff.php魔女は本当にいいです見つけた

、(それは箱から出して、ファイルをサポートしていない場合でも、それは文字列内のファイルをロードするだけです)

しかし、問題は、すべての置換が正常に処理されるかどうかを検証する方法が見つからないということです。

diffパッチを適用する前にそれを検証できるライブラリがありますか、それともどのように行うのか手掛かりがありますか?

答えて

0

https://gist.github.com/1707075

patch.cコード自体は、それほどPHPコードは一種の厄介です。ハンクの検証は機能しますが、私が必要とするほど「安全」ではありません。それが、私が探している答えではないのですが、他の人に役立つかもしれません。

編集:私は何かをコード化しました

。私はそれが100%信頼できるかどうかはまだ分かりませんが、これまでの結果は「パッチが成功に適用されることを確実にするために読み取りのみで検証する」という点では本当に良い結果です。 :)

0

パッチが動作するかどうかは、論理的にはわかりません。しかし、あなたのパッチソースを使用すると、それが次の操作を行って、少なくとも有効な構文であるかどうかを確認することができるかもしれない「安全」とみなされた場合:

  1. copyから
  2. applyパッチ
  3. 試みをパッチを適用するファイルPHP cliを使用してファイルを実行する(php file.php

手順3で致命的な例外が発生しない場合は、有効なPHP構文が適用されている可能性があります。

任意のPHPを実行すると、誰かがあなたのマシンを制御する可能性があるので、パッチのソースが安全でない場合、これをしたくないでしょう。私はPHPにpatch.cコードを翻訳してきました

+0

まあ、unix patchコマンドを使用すると、 "Hunk failed"エラーが発生する可能性があります。それで、私がチェックしたいのは...置き換えができない場合は、通常、構文的に言えばコードを分解しないからです。 – FMaz008

関連する問題