2012-01-27 2 views
0

휴대용이 가능한 diff 라이브러리를 찾고 있는데, 업데이트 메커니즘을 위해 파일 패치를 수행 할 수있는 xdiff와 같은 PHP는 광범위하게 지원되지 않습니다. 내가 사용하는 diff 파일은 형식으로 통일되어 있습니다.diff 패치를 적용하기 전에 유효성을 검사하십시오.

I했습니다 class.simplediff.php 마녀

하지만, 정말 좋은 (그냥 문자열에서 파일을로드의 문제는 상자에서 파일을 지원하지 않는 경우에도입니다)입니다 발견 문제는 모든 교체가 성공적으로 처리 될 수 있는지 여부를 확인하는 방법을 찾을 수 없다는 것입니다.

diff 패치를 적용하기 전에 유효성을 검사 할 수있는 라이브러리를 알고 계십니까, 아니면 어떻게 수행 할 수 있는지 실마리가 있습니까?

답변

0

:

https://gist.github.com/1707075

patch.c 코드 자체는, 그래서 PHP 코드 종류의 혼란입니다. 큰 덩어리 검증은 효과가 있지만, 내가 필요로하는 것처럼 "안전하다"는 것은 아닙니다. 그것이 제가 찾고있는 대답이 아닌 이유지만 다른 사람을 도울 것입니다.

편집 :

코딩했습니다. 100 % 신뢰할 수 있는지 확실하지 않지만 지금까지의 결과는 "패치가 성공과 함께 적용될 수 있도록 읽기 전용으로 유효성을 검사하는 것"이라는 용어로는 정말 좋습니다. https://github.com/idealtech/UnifiedDiffPatcher

희망이 있으면 도움이 될 것입니다. :)

0

논리적으로 패치가 작동하는지 여부를 알 수있는 방법을 생각할 수 없습니다. 여러분의 패치 소스가 "안전"으로 간주됩니다 그러나 경우에 당신은 일을 적어도 유효한 구문인지 여부를 확인 할 수 있습니다 다음

  1. copy
  2. apply 패치
  3. 시도에 패치 할 파일 PHP cli를 사용하여 파일 실행 (php file.php)

3 단계에서 치명적인 예외가 발생하지 않으면 유효한 PHP 구문이 될 가능성이 큽니다.

임의의 PHP를 실행하면 누군가가 시스템을 제어 할 수 있으므로 패치 소스가 안전하지 않은 경우에는이 작업을 수행하고 싶지 않을 것입니다. 나는 PHP로 patch.c 코드를 번역 한

+0

글쎄, unix patch 명령을 사용할 때 "Hunk failed"오류가 발생할 수 있습니다. 그게 제가 확인하고 싶은 것입니다. 왜냐하면 대체가 이루어지지 않으면, 일반적으로 구문 적으로 말하는 코드를 깨뜨리지 않기 때문입니다. – FMaz008

관련 문제