실행파일 제공하는 곳은 cygwin, mingw, gnuwin32 등등 여러군데 있는데, 하나같이 불필요한 DLL을 설치하기를 강요하거나, 패치파일이나 패치대상 파일의 개행문자가 자기들이 정한대로 따르지 않으면 그냥 자빠져 버리는 등, 사용성에 있어서 참 짜증스럽게 만들어 놓았다.
어차피 patch는 소스가 공개되어 있으니 좀 고치면 원하는대로 바꿀 수 있다. 목표는, 우선 개행문자의 제약을 없애고, 다음으로 유닉스에서처럼 --posix옵션이 주어지지 않으면 백업파일을 자동으로 만들게 하는 것이다. 어차피 patch를 이용해 패치하는 파일들은 소스코드들이니, 개행문자를 가지고 패치가 엉터리라고 까다롭게 구는 것은 별 의미가 없다고 생각된다.
이 패치를 제작하는 과정에서 컴파일러는 마이크로소프트에서 무료로 제공하는 것을 썼다. 곁다리: gcc를 쓸거면 어차피 cygwin이나 mingw을 설치해야 gcc를 쓸 수 있으니, 거기서 제공하는 patch실행파일을 쓰는게 여기의 것을 쓰는 것보다 일관성의 측면에서 낫다. 게다가 mingw용 patch는 reject파일도 unified diff로 만드는 옵션이 있다. context diff에 익숙하지 않으면 꽤 유용한 옵션이다.
소스는 ftp://ftp.gnu.org/gnu/patch/patch-2.5.9.tar.gz에서 받아오면 되고, 패치파일은 아래에서 받으면 된다.
명령행 요약: (패치파일 맨처음과 같은 내용. 현재 스킨에서는 마지막 줄의 일부만 보인다.)
tar xzf patch-2.5.9.tar.gz cd patch-2.5.9 patch -p0 -b < patch.patch cl /I. /DHAVE_CONFIG_H /Ded_PROGRAM=\"ed\" /Fepatch.exe error.c addext.c argmatch.c backupfile.c basename.c dirname.c getopt.c getopt1.c inp.c maketime.c partime.c patch.c pch.c quote.c quotearg.c quotesys.c util.c version.c xmalloc.c
---
@ 패치를 패치한다고 하니까 말이 꼬인다.