Manpages

名 前

patch − オ リ ジ ナ ル フ ァ イ ル に 差 分 フ ァ イ ル を 適 用 す る

書 式

patch [options] [originalfile [patchfile]] 通 常 は も っ と 簡 単 に

patch −pnum <patchfile

説 明

patch は 、 プ ロ グ ラ ム diff で 生 成 さ れ た 差 分 リ ス ト を 含 む パ ッ チ フ ァ イ ル patchfile を 引 数 に 取 り 、 1 個 ま た は 複 数 の オ リ ジ ナ ル フ ァ イ ル に こ れ ら の 差 分 を 適 用 し 、 パ ッ チ の 当 た っ た バ ー ジ ョ ン を 生 成 す る 。 通 常 、 オ リ ジ ナ ル フ ァ イ ル は パ ッ チ の 当 た っ た バ ー ジ ョ ン と 置 き 換 わ る 。 バ ッ ク ア ッ プ を 作 成 す る こ と も で き る ( −b ま た は −−backup オ プ シ ョ ン を 参 照 ) 。 通 常 、 パ ッ チ を 当 て る フ ァ イ ル の 名 前 は パ ッ チ フ ァ イ ル か ら 得 ら れ る 。 た だ し 、 パ ッ チ の 当 た る フ ァ イ ル が 1 個 だ け の 場 合 、 orginalfile と し て コ マ ン ド ラ イ ン で 指 定 す る こ と が で き る 。 実 行 す る と 、 patch は 差 分 (diff) リ ス ト の 形 式 を 判 別 す る 。 た だ し 、 −c (−−context), −e (−−ed), −n (−−normal), −u (−−unified) オ プ シ ョ ン の ど れ か が 指 定 さ れ た 場 合 、 自 動 判 別 は 行 な わ れ な い 。 コ ン テ キ ス ト diff (old-style, new-style, unified) お よ び ノ ー マ ル diff は patch プ ロ グ ラ ム 自 身 が パ ッ チ を 適 用 す る 。 い っ ぽ う 、 ed diff は パ イ プ を 通 じ て ed(1) エ デ ィ タ に 流 し 込 ま れ る だ け で あ る 。

patch は 差 分 の 前 に あ る ゴ ミ を 読 み 飛 ば し 、 差 分 を 適 用 し 、 そ し て 後 ろ に あ る ゴ ミ を 読 み 飛 ば そ う と す る 。 そ の た め 、 差 分 リ ス ト を 含 む 記 事 や メ ッ セ ー ジ を patch に 流 し 込 む こ と が で き 、 そ れ で 動 作 す る は ず で あ る 。 diff 全 体 が 一 定 量 イ ン デ ン ト さ れ て い る 場 合 や 、 コ ン テ キ ス ト diff が CRLF で 終 わ る 行 を 含 ん で い る 場 合 、 イ ン タ ー ネ ッ ト RFC 934 で 規 定 さ れ る よ う に "" で 始 ま る 行 の 先 頭 に 1個 ま た は 複 数 個 の " " が 付 い て い る 場 合 に は 、 こ れ ら は 考 慮 さ れ る 。 コ ン テ キ ス ト diff や ノ ー マ ル diff ( ノ ー マ ル diff の 場 合 の 適 用 範 囲 は や や 狭 い ) の 場 合 、 patch は パ ッ チ 中 の 行 番 号 の 誤 り を 検 出 す る こ と が で き 、 パ ッ チ の そ れ ぞ れ の 塊 (hunk) に つ い て 、 正 し い 位 置 を 見 つ け よ う と す る 。 最 初 は 、 hunk に 書 か れ た 行 番 号 に 直 前 の hunk を 適 用 し た 際 の オ フ セ ッ ト を 加 減 し た 位 置 で は な い か と 推 測 す る 。 も し そ れ が 正 し い 位 置 で は な い 場 合 、 patch は hunk 中 の コ ン テ キ ス ト に 一 致 す る 行 が 前 後 に な い か を 探 す 。 ま ず 、 patch は コ ン テ キ ス ト の す べ て の 行 が 一 致 す る 位 置 を 探 す 。 そ の よ う な 位 置 が 見 つ か ら な い 場 合 で 、 か つ コ ン テ キ ス ト diff で あ り 、 か つ fuzz factor (曖 昧 度 合 い ) の 最 大 値 が 1 以 上 の 場 合 、 コ ン テ キ ス ト の 最 初 と 最 後 の 行 を 無 視 し て も う 一 度 探 す 。 そ れ も 失 敗 し 、 fuzz factor の 最 大 値 が 2 以 上 の 場 合 、 コ ン テ キ ス ト の 最 初 と 最 後 の 2 行 ず つ を 無 視 し て も う 一 度 探 す 。 ( デ フ ォ ル ト の fuzz factor の 最 大 値 は 2 で あ る 。 ) patch は 、 パ ッ チ の そ の hunk を 適 用 す る 位 置 を 見 つ け ら れ な い 場 合 、 そ の hunk を reject (却 下 ) フ ァ イ ル に 書 き 出 す 。 通 常 、 reject フ ァ イ ル の 名 前 は 出 力 フ ァ イ ル の 後 ろ に .rej を 付 け た も の か 、 .rej を 付 け る と フ ァ イ ル 名 が 長 く な り す ぎ る 場 合 に は # を 付 け た も の と な る ( も し # 1 文 字 を 付 け て も 長 く な り す ぎ る 場 合 に は 、 フ ァ イ ル 名 の 最 後 の 文 字 を # に 置 き 換 え る ) 。 ( reject (却 下 ) さ れ た hunk は 入 力 さ れ た パ ッ チ の 形 式 に か か わ ら ず 、 通 常 の コ ン テ キ ス ト diff の 形 式 で 出 力 さ れ る 。 入 力 が ノ ー マ ル diff の 場 合 、 コ ン テ キ ス ト の 多 く は 単 純 に 空 に な る 。 ) reject フ ァ イ ル 中 の hunk に 付 け ら れ た 行 番 号 は パ ッ チ フ ァ イ ル の も の と は 異 な る か も し れ な い 。 reject フ ァ イ ル 中 の 行 番 号 は 、 古 い フ ァ イ ル に お け る 位 置 で は な く 、 patch が 新 し い フ ァ イ ル の 中 で hunk が 当 た る と 思 う お お よ そ の 位 置 に な っ て い る 。 そ れ ぞ れ の hunk の 処 理 が 終 わ る と 、 hunk が 失 敗 し た か ど う か や 、 も し 失 敗 し た 場 合 、 patch が ( 新 し い フ ァ イ ル の ) ど の 行 に そ の hunk が 当 た る と 思 っ た か が 通 知 さ れ る 。 hunk が diff に 示 さ れ た 行 番 号 と 異 な る 位 置 に 適 用 さ れ た 場 合 は 、 そ の オ フ セ ッ ト が 通 知 さ れ る 。 大 き な オ フ セ ッ ト が 1 個 だ け 通 知 さ れ た 場 合 、 あ る hunk が 間 違 っ た 位 置 に 適 用 さ れ た か も し れ な い 。 一 致 す る 位 置 を 探 す た め に fuzz factor が 使 わ れ た か ど う か も 通 知 さ れ る が 、 そ の 場 合 に は 少 々 不 審 に 思 っ た ほ う が よ い 。 −−verbose オ プ シ ョ ン を 指 定 す る と 、 hunk が ぴ っ た り 一 致 し た 場 合 に も 通 知 さ れ る 。 コ マ ン ド ラ イ ン で オ リ ジ ナ ル フ ァ イ ル origfile が 指 定 さ れ な か っ た 場 合 、 patch は diff の 前 に あ る ゴ ミ か ら 次 の よ う な 規 則 を 使 っ て 編 集 す べ き フ ァ イ ル を 判 別 し よ う と す る 。 ま ず 、 patch は 候 補 と な る フ ァ イ ル 名 の 順 序 付 き リ ス ト を 次 の よ う に し て 作 る :

ヘ ッ ダ が コ ン テ キ ス ト

diff の も の で あ る 場 合 、 patch は ヘ ッ ダ に あ る 新

旧 の フ ァ イ ル 名 を 使 う 。 −pnum ま た は −−strip=num オ プ シ ョ ン に 見 合 っ た 数 の ス ラ ッ シ ュ が な い フ ァ イ ル 名 は 無 視 さ れ る 。 /dev/null と い う フ ァ イ ル 名 も 無 視 さ れ る 。

diff の 前 の ゴ ミ の 中 に Index: が あ り 、 新 旧 両 方 の フ ァ イ ル 名 が な い か patchPOSIX に 準 拠 し て い る 場 合 、 patchIndex: の 行 に あ る フ ァ イ ル 名 を 使 う 。

以 下 の ル ー ル を 実 現 す る た め に 、 ヘ ッ ダ に 現 れ た 順 に 関 係 な く 、 候 補 と な る フ ァ イ ル 名 は 、 旧 、 新 、 index の 順 序 で 扱 わ れ る 。 そ し て patch は 候 補 リ ス ト か ら 次 の よ う に フ ァ イ ル 名 を 選 択 す る :

複 数 の 名 前 の フ ァ イ ル が 見 つ か っ た 場 合 、

patchPOSIX 準 拠 な ら ば 最 初 の 名 前 を 、 そ う で な け れ ば 最 適 な (best) 名 前 を 選 択 す る 。

patchRCS , ClearCase, SCCS を 無 視 し な い 場 合 ( −g num ま た は −−get=num オ プ シ ョ ン を 参 照 ) で 、 か つ 候 補 リ ス ト の 名 前 の フ ァ イ ル は ど れ も 存 在 し な い が RCS , ClearCase, SCCS マ ス タ が 見 つ か っ た 場 合 、 patchRCS , ClearCase, SCCS マ ス タ の 存 在 す る 候 補 リ ス ト 中 の 最 初 の 名 前 の フ ァ イ ル を 選 択 す る 。

候 補 リ ス ト の 名 前 の フ ァ イ ル が ど れ も 存 在 せ ず 、 RCS , ClearCase, SCCS マ ス タ も 見 つ か ら ず 、 候 補 リ ス ト に は 複 数 の 名 前 が あ り 、 patchPOSIX 準 拠 で は な く 、 そ の パ ッ チ が フ ァ イ ル を 作 成 し よ う と し て い る よ う に 見 受 け ら れ る 場 合 、 patch は 作 成 す る デ ィ レ ク ト リ が 最 も 少 な く て 済 む 、 最 適 な (best) 名 前 を 選 択 す る 。

以 上 の 規 則 で フ ァ イ ル 名 が 決 ま ら な い 場 合 、 patch は パ ッ チ を 当 て る フ ァ イ ル の 名 前 を 尋 ね 、 そ の 名 前 を 使 う 。 空 で な い フ ァ イ ル 名 の リ ス ト か ら 最 適 な (best) も の を 選 ぶ た め に 、 patch は ま ず パ ス 名 の 要 素 が 最 も 少 な い も の を 選 び 、 そ の 中 か ら ベ ー ス ネ ー ム の 最 も 短 い も の を 選 び 、 さ ら に そ の 中 か ら 最 も 短 い も の を 選 び 、 最 後 に 、 残 っ た 中 で 最 初 の 名 前 を 選 ぶ 。 さ ら に 、 前 の ゴ ミ に Prereq: と い う 行 が 含 ま れ る 場 合 、 patch は そ の 必 要 条 件 の 行 か ら 最 初 の 単 語 ( 通 常 は バ ー ジ ョ ン 番 号 ) を 取 り 、 オ リ ジ ナ ル フ ァ イ ル に そ の 単 語 が あ る か ど う か を チ ェ ッ ク す る 。 も し な い 場 合 、 patch は 処 理 す る 前 に 確 認 を 求 め る 。 す べ て の 結 論 は 、 ニ ュ ー ス リ ー ダ を 使 っ て い る と き に は 、 次 の よ う な 感 じ に す れ ば よ い と い う こ と で あ る :

| patch −d /usr/src/local/blurfl こ う す れ ば 、 デ ィ レ ク ト リ blurfl に あ る フ ァ イ ル に 、 パ ッ チ を 含 む 記 事 か ら 直 接 パ ッ チ を 当 て る こ と が で き る 。 パ ッ チ フ ァ イ ル に 複 数 の パ ッ チ が 含 ま れ て い る 場 合 、 patch は 、 そ れ ぞ れ が 別 々 の パ ッ チ フ ァ イ ル か ら 入 力 さ れ た か の よ う に 当 て よ う と す る 。 こ の と き は 、 と り わ け 、 パ ッ チ を 当 て る フ ァ イ ル の 名 前 は そ れ ぞ れ の 差 分 リ ス ト か ら 決 ま ら な け れ ば な ら ず 、 そ れ ぞ れ の 差 分 リ ス ト の 前 の ゴ ミ に は フ ァ イ ル 名 や リ ビ ジ ョ ン 番 号 と い っ た 必 要 な こ と が ら が 含 ま れ て い る こ と が 求 め ら れ る 。

オ プ シ ョ ン

−b ま た は −−backup バ ッ ク ア ッ プ フ ァ イ ル を 作 成 す る 。 つ ま り 、 フ ァ イ ル に パ ッ チ を 当 て る と き 、 元 の フ ァ イ ル を 削 除 せ ず に 、 リ ネ ー ム ま た は コ ピ ー す る 。 存 在 し な い フ ァ イ ル を バ ッ ク ア ッ プ す る と き は 、 空 の 、 読 み 出 す 内 容 の な い バ ッ ク ア ッ プ フ ァ イ ル が 作 ら れ 、 フ ァ イ ル が 存 在 し な か っ た こ と を 表 す も の と な る 。 バ ッ ク ア ッ プ フ ァ イ ル の 名 前 が ど の よ う に 決 ま る か に つ い て は −V ま た は −−version−control オ プ シ ョ ン を 参 照 。
−−backup−if−mismatch
パ ッ チ が フ ァ イ ル に ぴ っ た り 一 致 し な か っ た 場 合 で 、 か つ 他 の 方 法 で バ ッ ク ア ッ プ を 要 求 さ れ て い な い 場 合 に フ ァ イ ル を バ ッ ク ア ッ プ す る 。 patchPOSIX 準 拠 で な い 場 合 は デ フ ォ ル ト で あ る 。
−−no−backup−if−mismatch
パ ッ チ が フ ァ イ ル に ぴ っ た り 一 致 し な か っ た 場 合 で 、 か つ 他 の 方 法 で バ ッ ク ア ッ プ を 要 求 さ れ て い な い 場 合 に は フ ァ イ ル を バ ッ ク ア ッ プ し な い 。 patchPOSIX 準 拠 の 場 合 は デ フ ォ ル ト で あ る 。
−B
pref ま た は −−prefix=pref 簡 易 バ ッ ク ア ッ プ フ ァ イ ル の 名 前 を 生 成 す る と き 、 フ ァ イ ル 名 に pref と い う プ レ フ ィ ク ス を つ け る 。 例 え ば 、 −B /junk/ と す る と 、 src/patch/util.c と い う フ ァ イ ル に 対 す る 簡 易 バ ッ ク ア ッ プ フ ァ イ ル の 名 前 は /junk/src/patch/util.c と な る 。
−−binary
す べ て の フ ァ イ ル を バ イ ナ リ モ ー ド で 読 み 書 き す る 。 た だ し 、 標 準 出 力 と /dev/tty を 除 く 。 POSIX 準 拠 の シ ス テ ム で は こ の オ プ シ ョ ン は 無 効 で あ る 。 こ の オ プ シ ョ ン で 違 い の 出 る DOS の よ う な シ ス テ ム で は 、 パ ッ チ を diff −a −−binary の よ う に し て 作 ら な け れ ば な ら な い 。
−c
ま た は −−context パ ッ チ フ ァ イ ル を 通 常 の コ ン テ キ ス ト diff と し て 解 釈 す る 。
−d
dir ま た は −−directory=dir 何 を す る よ り も 前 に 、 た だ ち に デ ィ レ ク ト リ dir に 移 動 す る 。
−D
define ま た は −−ifdef=define 変 更 に 印 を 付 け る の に #ifdef ... #endif の よ う な 構 造 を 使 う 。 こ の と き 差 分 を 示 す シ ン ボ ル に define を 用 い る 。
−−dry−run
パ ッ チ を 当 て た と き の 結 果 を 表 示 す る が 、 実 際 に は ど の フ ァ イ ル も 変 更 し な い 。
−e
ま た は −−ed パ ッ チ フ ァ イ ル を ed ス ク リ プ ト と し て 解 釈 す る 。
−E
ま た は −−remove−empty−files パ ッ チ を 当 て た あ と 空 に な っ た フ ァ イ ル を 削 除 す る 。 通 常 、 こ の オ プ シ ョ ン は 不 要 で あ る 。 な ぜ な ら patch は ヘ ッ ダ の タ イ ム ス タ ン プ を 見 て 、 パ ッ チ を 当 て た あ と に フ ァ イ ル が 存 在 す る べ き か ど う か を 判 断 す る こ と が で き る か ら で あ る 。 し か し 、 入 力 が コ ン テ キ ス ト diff で な い 場 合 や patchPOSIX 準 拠 の 場 合 、 patch は こ の オ プ シ ョ ン が 与 え ら れ な い 限 り パ ッ チ 後 に 空 に な っ た フ ァ イ ル を 削 除 し な い 。 patch が フ ァ イ ル を 削 除 す る と き は 、 空 の 上 位 デ ィ レ ク ト リ も 削 除 し よ う と す る 。
−f
ま た は −−force ユ ー ザ が 何 を し よ う と し て い る か を 完 全 に 分 か っ て い る と み な し 、 何 も 問 い 合 わ せ を し な い 。 ど の フ ァ イ ル に パ ッ チ を 当 て る べ き か が ヘ ッ ダ に 書 か れ て い な い パ ッ チ は ス キ ッ プ し 、 フ ァ イ ル の バ ー ジ ョ ン が パ ッ チ 中 の Prereq: の 行 に 書 か れ た バ ー ジ ョ ン と 違 っ て い て も パ ッ チ を 当 て 、 パ ッ チ が 反 転 し て い る よ う に 見 え て も 反 転 し て い な い と み な す 。 こ の オ プ シ ョ ン は コ メ ン ト 出 力 を 抑 制 し な い 。 そ う し た け れ ば −s を 使 う こ と 。
−F
num ま た は −−fuzz=num

fuzz factor の 最 大 値 を 設 定 す る 。 こ の オ プ シ ョ ン は コ ン テ キ ス ト diff に 対 し て の み 有 効 で 、 patch が hunk を 適 用 す る 位 置 を 探 す と き に 無 視 す る 行 数 の 最 大 値 を 指 定 す る 。 fuzz factor を 大 き く す る と パ ッ チ が 間 違 っ て 当 た っ て し ま う 場 合 が 多 く な る こ と に 注 意 す る こ と 。 デ フ ォ ル ト の fuzz factor は 2 で 、 コ ン テ キ ス ト diff の コ ン テ キ ス ト の 行 数 よ り も 大 き く 設 定 し て は な ら な い 。 コ ン テ キ ス ト の 行 数 は 通 常 3 で あ る 。

−g num ま た は −−get=num こ の オ プ シ ョ ン は フ ァ イ ル が RCS ま た は SCCS で 管 理 さ れ て い て 、 フ ァ イ ル が 存 在 し な い か 読 み 取 り 専 用 で デ フ ォ ル ト バ ー ジ ョ ン に 一 致 す る 場 合 、 ま た は フ ァ イ ル が ClearCase で 管 理 さ れ て い て フ ァ イ ル が 存 在 し な い 場 合 の patch の 動 作 を 変 更 す る 。 num が 正 で あ れ ば 、 patch は リ ビ ジ ョ ン 管 理 シ ス テ ム か ら フ ァ イ ル を 取 得 ( チ ェ ッ ク ア ウ ト ) す る 。 0 で あ れ ば 、 patchRCS , ClearCase, SCCS を 無 視 し 、 フ ァ イ ル を 取 得 し な い 。 負 で あ れ ば 、 patch は フ ァ イ ル を 取 得 す る か ど う か を ユ ー ザ に 尋 ね る 。 こ の オ プ シ ョ ン の デ フ ォ ル ト の 値 は 、 環 境 変 数 PATCH_GET が 設 定 さ れ て い れ ば そ の 値 と な る 。 そ う で な い 場 合 、 デ フ ォ ル ト の 値 は patchPOSIX 準 拠 で あ れ ば 0 、 そ う で な け れ ば 負 と な る 。
−−help
オ プ シ ョ ン の 要 約 を 表 示 し 、 終 了 す る 。
−i
patchfile ま た は −−input=patchfile パ ッ チ を patchfile か ら 読 み 込 む 。 patchfile の 場 合 は 標 準 入 力 か ら 読 み 込 み 、 こ れ が デ フ ォ ル ト で あ る 。
−l
ま た は −−ignore−whitespace タ ブ や ス ペ ー ス が 変 更 さ れ て い る 場 合 の た め に 、 パ タ ー ン の 一 致 を ゆ る く 見 る 。 パ ッ チ フ ァ イ ル 中 の 1 個 ま た は 複 数 の 空 白 の 並 び は オ リ ジ ナ ル フ ァ イ ル の 空 白 の ど の 並 び に も 一 致 し 、 行 末 の 空 白 の 並 び は 無 視 さ れ る 。 通 常 文 字 は 完 全 に 一 致 し て い な け れ ば な ら な い 。 コ ン テ キ ス ト の 各 行 は オ リ ジ ナ ル フ ァ イ ル の 1 行 に 一 致 し て い な け れ ば な ら な い 。
−n
ま た は −−normal パ ッ チ フ ァ イ ル を ノ ー マ ル diff と し て 解 釈 す る 。
−N
ま た は −−forward 反 転 し て い る と 思 わ れ る パ ッ チ や す で に 適 用 済 み と 思 わ れ る パ ッ チ を 無 視 す る 。 −R も 参 照 。
−o
outfile ま た は −−output=outfile フ ァ イ ル に パ ッ チ を 当 て て 置 き 換 え る の で は な く 、 出 力 を outfile に 送 る 。
−p
num ま た は −−strip=num パ ッ チ フ ァ イ ル で 見 つ か っ た フ ァ イ ル 名 そ れ ぞ れ に つ い て 、 num 個 の ス ラ ッ シ ュ を 含 む 最 小 の プ レ フ ィ ク ス を 取 り 除 く 。 隣 接 し た 1 個 ま た は 複 数 の ス ラ ッ シ ュ の 並 び は 1 個 の ス ラ ッ シ ュ と し て 数 え ら れ る 。 こ の オ プ シ ョ ン は パ ッ チ を 送 っ た 人 と 異 な る デ ィ レ ク ト リ に フ ァ イ ル を 格 納 し て い る 場 合 の た め に 、 パ ッ チ フ ァ イ ル 中 の フ ァ イ ル 名 の 扱 い を 変 更 す る 。 例 え ば 、 パ ッ チ フ ァ イ ル 中 の フ ァ イ ル 名 が

/u/howard/src/blurfl/blurfl.c で あ っ た と す る と 、 −p0 と す る と フ ァ イ ル 名 全 体 が 変 更 さ れ ず に 用 い ら れ 、 −p1 と す る と

u/howard/src/blurfl/blurfl.c の よ う に 先 頭 の ス ラ ッ シ ュ が 取 り 除 か れ 、 −p4 と す る と

blurfl/blurfl.c の よ う に な り 、 −p を 指 定 し な け れ ば blurfl.c と な る 。 最 終 的 に 参 照 さ れ る デ ィ レ ク ト リ は カ レ ン ト デ ィ レ ク ト リ 、 ま た は −d オ プ シ ョ ン で 指 定 さ れ た デ ィ レ ク ト リ で あ る 。

−−posix 以 下 の よ う に よ り 厳 格 に POSIX 標 準 に し た が う 。

diff ヘ ッ ダ か ら 複 数 の フ ァ イ ル 名 が 得 ら れ た 場 合 、 リ ス ト (old, new, index) の う ち 最 初 に 存 在 し た フ ァ イ ル を 用 い る 。

パ ッ チ を 当 て た あ と 空 に な っ た フ ァ イ ル を 削 除 し な い 。

RCS , ClearCase, SCCS か ら フ ァ イ ル を 取 得 す る か ど う か を 尋 ね な い 。

コ マ ン ド ラ イ ン で は す べ て の オ プ シ ョ ン が フ ァ イ ル の 前 に な け れ ば な ら な い 。

パ ッ チ が 元 の フ ァ イ ル に ぴ っ た り 一 致 し な い 場 合 で も 、 フ ァ イ ル を バ ッ ク ア ッ プ し な い 。

−−quoting−style=word フ ァ イ ル 名 を 出 力 す る の に ス タ イ ル word を 使 う 。 word は 次 の ど れ か で な け れ ば な ら な い :

literal フ ァ イ ル 名 を そ の ま ま 出 力 す る 。

shell フ ァ イ ル 名 に シ ェ ル の メ タ キ ャ ラ ク タ が 含 ま れ る 場 合 や 曖 昧 な 出 力 と な っ て し ま う 場 合 、 フ ァ イ ル 名 に シ ェ ル 用 の 引 用 符 を 付 け る 。

shell-always 通 常 は 引 用 符 が 必 要 で な い 場 合 に も シ ェ ル 用 の 引 用 符 を 付 け る 。

c

C 言 語 文 字 列 と 同 様 に フ ァ イ ル 名 に 引 用 符 を 付 け る 。

escape

c と 同 じ よ う に 引 用 符 を 付 け る が 、 最 初 と 最 後 の ダ ブ ル ク ウ ォ ー ト 文 字 を 省 略 す る 。

−−quoting−style オ プ シ ョ ン の デ フ ォ ル ト 値 は 環 境 変 数 QUOTING_STYLE で 指 定 す る こ と が で き る 。 環 境 変 数 が 設 定 さ れ て い な い 場 合 、 デ フ ォ ル ト 値 は shell で あ る 。

−r rejectfile ま た は −−reject−file=rejectfile

reject ( 却 下 さ れ た hunk) を デ フ ォ ル ト の .rej フ ァ イ ル で は な く rejectfile に 出 力 す る 。

−R ま た は −−reverse こ の パ ッ チ は 新 旧 の フ ァ イ ル が 反 転 し て い る と み な す 。 ( ま あ 、 と き ど き あ る 。 人 間 の や る こ と だ か ら 。 ) patch は そ れ ぞ れ の hunk を 当 て る 前 に 反 転 さ せ る 。 reject ( 却 下 さ れ た hunk) も 反 転 し た あ と の 形 式 で 出 力 さ れ る 。 −R オ プ シ ョ ン は ed 形 式 の diff ス ク リ プ ト に 対 し て は 動 作 し な い 。 反 対 の 操 作 を す る に は 情 報 が 少 な す ぎ る か ら で あ る 。 パ ッ チ の 最 初 の hunk が 失 敗 す る と 、 patch は hunk を 反 転 さ せ て 当 た る か ど う か を み る 。 も し 当 た る 場 合 、 −R オ プ シ ョ ン を セ ッ ト す る か ど う か を 尋 ね る 。 も し 当 た ら な い 場 合 、 通 常 の 方 法 を 継 続 す る 。 ( 注 意 : こ の 方 法 で は 、 ノ ー マ ル diff で 最 初 の コ マ ン ド が 追 加 の ( つ ま り 、 本 来 は 削 除 で あ っ た ) 場 合 に 反 転 さ れ た パ ッ チ を 検 出 す る こ と が で き な い 。 そ れ は 、 空 の コ ン テ キ ス ト は ど こ に で も マ ッ チ す る た め に 、 追 加 は 常 に 成 功 す る か ら で あ る 。 幸 い 、 ほ と ん ど の パ ッ チ は 行 を 追 加 す る か 、 変 更 す る も の で あ っ て 、 削 除 す る も の は 少 な い た め 、 経 験 的 に い っ て 、 反 転 し た ノ ー マ ル diff の ほ と ん ど は 削 除 か ら 始 ま っ て い て 、 失 敗 し て く れ る 。 )
−s
ま た は −−silent ま た は −−quiet エ ラ ー が 発 生 し な い 限 り 、 静 か に 動 作 す る 。
−t
ま た は −−batch

−f と 同 様 に 質 問 を 抑 制 す る 。 た だ し 、 異 な る 仮 定 を す る 。 ヘ ッ ダ に フ ァ イ ル 名 を 含 ま な い パ ッ チ は ス キ ッ プ し (−f と 同 じ ) 、 フ ァ イ ル の バ ー ジ ョ ン が パ ッ チ 中 の Prereq: の 行 に 書 か れ た バ ー ジ ョ ン と 違 う パ ッ チ は ス キ ッ プ し 、 パ ッ チ が 反 転 し て い る よ う に 見 え る 場 合 は 反 転 し て い る と み な す 。

−T ま た は −−set−time パ ッ チ を 当 て た あ と の フ ァ イ ル の 変 更 日 時 と ア ク セ ス 日 時 を コ ン テ キ ス ト diff ヘ ッ ダ の タ イ ム ス タ ン プ に 設 定 す る 。 コ ン テ キ ス ト diff ヘ ッ ダ は ロ ー カ ル 時 刻 を 使 っ て い る と み な す 。 こ の オ プ シ ョ ン は 推 奨 さ れ な い 。 な ぜ な ら ロ ー カ ル 時 刻 を 使 っ た パ ッ チ は 異 な る タ イ ム ゾ ー ン の 人 に は 簡 単 に 使 え な い か ら 、 ま た ロ ー カ ル タ イ ム ス タ ン プ は サ マ ー タ イ ム の 調 整 で 時 刻 が 戻 っ た 場 合 に 曖 昧 に な る か ら で あ る 。 こ の オ プ シ ョ ン を 使 う 代 わ り に 、 UTC で パ ッ チ を 生 成 し 、 −Z ま た は −−set−utc を 使 う こ と 。
−u
ま た は −−unified パ ッ チ フ ァ イ ル を unified コ ン テ キ ス ト diff と し て 解 釈 す る 。
−v
ま た は −−version

patch の リ ビ ジ ョ ン ヘ ッ ダ と パ ッ チ レ ベ ル を 出 力 し 、 終 了 す る 。

−V method ま た は −−version−control=method バ ッ ク ア ッ プ フ ァ イ ル の 名 前 を 決 定 す る の に method を 使 う 。 method は PATCH_VERSION_CONTROL ( ま た は 、 そ れ が な い 場 合 、 VERSION_CONTROL) 環 境 変 数 で 指 定 で き 、 こ の オ プ シ ョ ン で 上 書 き さ れ る 。 method は バ ッ ク ア ッ プ フ ァ イ ル が 作 ら れ る か ど う か に は 影 響 せ ず 、 作 ら れ る バ ッ ク ア ッ プ フ ァ イ ル の 名 前 に 影 響 す る だ け で あ る 。

method の 値 は GNU Emacs の ’version-control’ 変 数 と 同 様 で あ る 。 patch は も っ と 分 か り や す い 同 義 語 も 理 解 す る 。 method の 有 効 な 値 は 次 の と お り で あ る ( 区 別 が 付 け ば 短 縮 形 を 用 い て も よ い ):
existing
ま た は nil 番 号 付 き の バ ッ ク ア ッ プ が あ る 場 合 、 バ ッ ク ア ッ プ に 番 号 を 付 け る 。 そ う で な い 場 合 、 簡 易 バ ッ ク ア ッ プ を 作 る 。 こ れ が デ フ ォ ル ト で あ る 。
numbered
ま た は t バ ッ ク ア ッ プ に 番 号 を 付 け る 。 F と い う フ ァ イ ル に 対 す る 番 号 付 き バ ッ ク ア ッ プ フ ァ イ ル の 名 前 は F.~N~ の よ う に な る 。 N は バ ー ジ ョ ン 番 号 で あ る 。
simple
ま た は never 簡 易 バ ッ ク ア ッ プ を 作 る 。 −B ま た は −−prefix−Y ま た は −−basename−prefix−z ま た は −−suffix オ プ シ ョ ン で 簡 易 バ ッ ク ア ッ プ フ ァ イ ル の 名 前 が 決 ま る 。 こ れ ら の う ち ど の オ プ シ ョ ン も 指 定 さ れ な い 場 合 、 簡 易 バ ッ ク ア ッ プ サ フ ィ ク ス が 使 わ れ る 。 サ フ ィ ク ス は SIMPLE_BACKUP_SUFFIX 環 境 変 数 が 存 在 す る 場 合 は そ の 値 、 そ う で な い 場 合 は .orig で あ る 。 番 号 付 き ま た は 簡 易 バ ッ ク ア ッ プ の 場 合 、 バ ッ ク ア ッ プ フ ァ イ ル の 名 前 が 長 す ぎ る と 、 代 わ り に バ ッ ク ア ッ プ サ フ ィ ク ス ~ が 使 わ れ る 。 ~ を 付 加 し て も 長 す ぎ る 場 合 、 フ ァ イ ル 名 の 最 後 の 文 字 が ~ に 置 き 換 え ら れ る 。

−−verbose 処 理 が 行 な わ れ る 様 子 に つ い て 追 加 の 情 報 を 出 力 す る 。
−x
num ま た は −−debug=num 内 部 デ バ ッ グ フ ラ グ を 設 定 す る 。 patch を 変 更 す る 人 に し か 興 味 の な い も の で あ る 。
−Y
pref ま た は −−basename−prefix=pref 簡 易 バ ッ ク ア ッ プ フ ァ イ ル の 名 前 を 生 成 す る と き 、 フ ァ イ ル 名 の ベ ー ス ネ ー ム に プ レ フ ィ ク ス pref を 付 け る 。 例 え ば 、 −Y .del/ と し た 場 合 、 src/patch/util.c の 簡 易 バ ッ ク ア ッ プ フ ァ イ ル の 名 前 は src/patch/.del/util.c と な る 。
−z
suffix ま た は −−suffix=suffix

suffix を 簡 易 バ ッ ク ア ッ プ サ フ ィ ク ス と し て 使 う 。 例 え ば 、 −z - と し た 場 合 、 src/patch/util.c の 簡 易 バ ッ ク ア ッ プ フ ァ イ ル の 名 前 は src/patch/util.c- と な る 。 バ ッ ク ア ッ プ サ フ ィ ク ス は SIMPLE_BACKUP_SUFFIX 環 境 変 数 で 指 定 す る こ と が で き 、 こ の オ プ シ ョ ン で 上 書 き さ れ る 。

−Z ま た は −−set−utc パ ッ チ を 当 て た あ と の フ ァ イ ル の 変 更 日 時 と ア ク セ ス 日 時 を コ ン テ キ ス ト diff ヘ ッ ダ の タ イ ム ス タ ン プ に 設 定 す る 。 コ ン テ キ ス ト diff ヘ ッ ダ は 世 界 協 定 時 ( UTCGMT と し て も 知 ら れ る ) を 使 っ て い る と み な す 。 −T ま た は −−set−time オ プ シ ョ ン も 参 照 す る こ と 。

−Z ま た は −−set−utc お よ び −T ま た は −−set−time オ プ シ ョ ン は 、 通 常 は フ ァ イ ル の オ リ ジ ナ ル の 時 刻 が パ ッ チ ヘ ッ ダ 中 の 時 刻 と 一 致 し な い 場 合 や 内 容 が パ ッ チ と ぴ っ た り 一 致 し な い 場 合 に は 、 フ ァ イ ル の 時 刻 を 設 定 し な い 。 し か し 、 −f ま た は −−force オ プ シ ョ ン が 指 定 さ れ た 場 合 、 フ ァ イ ル の 時 刻 は 強 制 的 に 設 定 さ れ る 。

diff の 出 力 形 式 の 制 限 の た め 、 こ れ ら の オ プ シ ョ ン で は 内 容 の 変 化 し な い フ ァ イ ル の 時 刻 は 更 新 さ れ な い 。 ま た 、 こ れ ら の オ プ シ ョ ン を 使 っ た 場 合 に は 、 パ ッ チ の 当 た っ た フ ァ イ ル に 依 存 す る フ ァ イ ル を 削 除 し て ( 例 え ば make clean で ) 、 あ と で make を 実 行 し た と き に パ ッ チ の 当 た っ た フ ァ イ ル の 時 刻 で 混 乱 し な い よ う に し な け れ ば な ら な い 。

環 境 変 数

PATCH_GET

patch が 存 在 し な い フ ァ イ ル や 読 み 取 り 専 用 の フ ァ イ ル を デ フ ォ ル ト で RCS , ClearCase, SCCS か ら 取 得 す る か ど う か を 指 定 す る 。 −g ま た は −−get オ プ シ ョ ン を 参 照 。

POSIXLY_CORRECT 設 定 さ れ て い る 場 合 、 patch は デ フ ォ ル ト で POSIX 標 準 に よ り 厳 格 に 従 う 。 −−posix オ プ シ ョ ン を 参 照 。
QUOTING_STYLE

−−quoting−style オ プ シ ョ ン の デ フ ォ ル ト の 値 。

SIMPLE_BACKUP_SUFFIX

.orig の 代 わ り に 簡 易 バ ッ ク ア ッ プ フ ァ イ ル の 名 前 に 使 う 拡 張 子 。

TMPDIR, TMP, TEMP 一 時 フ ァ イ ル を 入 れ る デ ィ レ ク ト リ patch は こ の リ ス ト の 中 で 最 初 に 設 定 さ れ て い る 環 境 変 数 を 使 う 。 ど れ も 設 定 さ れ て い な い 場 合 、 デ フ ォ ル ト は シ ス テ ム 依 存 で あ る 。 Unix ホ ス ト で は 通 常 /tmp で あ る 。
VERSION_CONTROL
ま た は PATCH_VERSION_CONTROL バ ー ジ ョ ン コ ン ト ロ ー ル ス タ イ ル を 選 択 す る 。 −V ま た は −−version−control オ プ シ ョ ン を 参 照 。

フ ァ イ ル

$TMPDIR/p∗ 一 時 フ ァ イ ル 。
/dev/tty
制 御 端 末 。 ユ ー ザ に 尋 ね た 質 問 の 答 え を 得 る た め に 使 わ れ る 。

関 連 項 目

diff(1), ed(1)

Marshall T. Rose and Einar A. Stefferud, Proposed Standard for Message Encapsulation, Internet RFC 934 <URL:ftp://ftp.isi.edu/in-notes/rfc934.txt>; (1985-01).

パ ッ チ を 送 る 人 へ の 注 意

パ ッ チ を 送 ろ う と す る 場 合 に 心 に 留 め て お か な け れ ば な ら な い 点 が い く つ か あ る 。 パ ッ チ を 機 械 的 に 作 る こ と 。 よ い 方 法 は diff −Naur old new の よ う な コ マ ン ド を 使 う こ と で あ る 。 newold は そ れ ぞ れ 新 旧 の デ ィ レ ク ト リ で あ る 。 oldnew に は 1 個 も ス ラ ッ シ ュ が あ っ て は い け な い 。 diff コ マ ン ド の ヘ ッ ダ に 含 ま れ る 日 時 は 伝 統 的 な Unix 形 式 を 使 っ て 協 定 世 界 時 で 書 か れ て い な け れ ば な ら な い 。 そ う す れ ば パ ッ チ を 受 け 取 っ た 人 が −Z ま た は −−set−utc オ プ シ ョ ン を 使 う こ と が で き る 。 次 の も の は Bourne シ ェ ル 形 式 を 使 っ た コ マ ン ド 例 で あ る :

LC_ALL=C TZ=UTC0 diff −Naur gcc−2.7 gcc−2.8 受 け 取 る 人 に は パ ッ チ の 当 て 方 を 伝 え る 。 つ ま り 、 ど の デ ィ レ ク ト リ に cd す れ ば よ い か と ど の patch オ プ シ ョ ン を 使 え ば よ い か を 伝 え る 。 オ プ シ ョ ン 文 字 列 は −Np1 が 推 奨 さ れ る 。 受 け 取 っ た 人 に な っ た つ も り で 手 順 を 試 し 、 オ リ ジ ナ ル フ ァ イ ル の コ ピ ー を 取 っ て 、 作 っ た パ ッ チ を 当 て て み る 。 送 り 出 す パ ッ チ フ ァ イ ル の 最 初 の diff と し て 、 パ ッ チ レ ベ ル を イ ン ク リ メ ン ト し て い く patchlevel.h フ ァ イ ル を 入 れ て お く と 、 多 く の 人 の 面 倒 を 軽 減 で き る 。 パ ッ チ に Prereq: 行 を 加 え て お け ば 、 順 番 を 間 違 え て 警 告 を 食 ら う の を 防 ぐ こ と が で き る 。

/dev/null や 日 時 が Epoch (1970-01-01 00:00:00 UTC ) の 空 の フ ァ イ ル と 作 成 し た い フ ァ イ ル を 比 較 し た diff を 送 る こ と で 、 フ ァ イ ル を 作 成 す る こ と が で き る 。 こ の 方 法 は タ ー ゲ ッ ト の デ ィ レ ク ト リ に 作 成 し た い フ ァ イ ル が ま だ 存 在 し な い 場 合 に 限 っ て 動 作 す る 。 反 対 に 、 削 除 し た い フ ァ イ ル と 日 時 が Epoch の 空 の フ ァ イ ル を 比 較 し た コ ン テ キ ス ト diff を 送 る こ と で 、 フ ァ イ ル を 削 除 す る こ と が で き る 。 フ ァ イ ル は patchPOSIX 準 拠 で な く 、 −E ま た は −−remove−empty−files オ プ シ ョ ン が 指 定 さ れ な い 場 合 に 削 除 さ れ る 。 フ ァ イ ル を 作 成 し た り 削 除 し た り す る パ ッ チ を 生 成 す る 簡 単 な 方 法 は 、 GNU diff−N ま た は −−new−file オ プ シ ョ ン を 使 う こ と で あ る 。 受 け 取 っ た 人 が −pN オ プ シ ョ ン を 使 う こ と が 想 定 さ れ る 場 合 、 次 の よ う な パ ッ チ を 送 ら な い こ と :

diff −Naur v2.0.29/prog/README prog/README
−−− v2.0.29/prog/README Mon Mar 10 15:13:12 1997
+++ prog/README Mon Mar 17 14:58:22 1997
な ぜ な ら 二 つ の フ ァ イ ル 名 は 異 な る 数 の ス ラ ッ シ ュ を 含 ん で お り 、 patch の バ ー ジ ョ ン に よ っ て フ ァ イ ル 名 を 異 な る よ う に 解 釈 す る か ら で あ る 。 混 乱 を 避 け る た め に 、 代 わ り に 次 の よ う な パ ッ チ を 送 る こ と :

diff −Naur v2.0.29/prog/README v2.0.30/prog/README
−−− v2.0.29/prog/README Mon Mar 10 15:13:12 1997
+++ v2.0.30/prog/README Mon Mar 17 14:58:22 1997
バ ッ ク ア ッ プ フ ァ イ ル と 名 前 が 同 じ フ ァ イ ル 、 例 え ば README.orig と 比 較 し た パ ッ チ を 送 ら な い こ と 。 こ の 方 法 で は patch が 混 乱 し て 、 正 し い フ ァ イ ル で は な く バ ッ ク ア ッ プ フ ァ イ ル に パ ッ チ を 当 て て し ま う か も し れ な い か ら で あ る 。 そ う で は な く 、 フ ァ イ ル 名 が 同 じ で 別 の デ ィ レ ク ト リ に あ る フ ァ イ ル ど う し 、 例 え ば old/READMEnew/README を 比 較 し た パ ッ チ を 送 る こ と 。 反 転 し た パ ッ チ を 送 ら な い よ う に 注 意 す る こ と 。 も う パ ッ チ を 当 て た の か と 思 っ て し ま う か ら で あ る 。 自 動 生 成 さ れ る フ ァ イ ル ( 例 え ば 、 makefile に configure: configure.in と い う 行 が あ る 場 合 の configure と い う フ ァ イ ル ) を 変 更 す る パ ッ チ を 作 ら な い よ う に す る こ と 。 受 け 取 っ た 人 は 自 動 生 成 さ れ る フ ァ イ ル を 再 生 成 す る こ と が で き る か ら で あ る 。 自 動 生 成 さ れ る フ ァ イ ル の diff を 送 ら な け れ ば な ら な い 場 合 、 UTC を 用 い て diff を 作 り 、 受 け 取 っ た 人 に −Z ま た は −−set−utc オ プ シ ョ ン を 使 っ て パ ッ チ を 当 て て も ら い 、 パ ッ チ の 当 た っ た フ ァ イ ル に 依 存 す る 、 パ ッ チ の 当 た っ て い な い フ ァ イ ル を 削 除 し て も ら う ( 例 え ば make clean で ) 。

582 も の 差 分 リ ス ト を 1 個 の フ ァ イ ル に 入 れ な く て も 済 む の で あ れ ば 、 ぐ ち ゃ ぐ ち ゃ に な っ て し ま っ た 場 合 に 備 え て 関 連 す る パ ッ チ を 別 々 の フ ァ イ ル に ま と め て お く の が 賢 明 で あ る 。

エ ラ ー と 終 了 ス テ ー タ ス

エ ラ ー は 一 般 に 、 patch が パ ッ チ フ ァ イ ル を 解 析 で き な か っ た こ と を 示 し て い る 。

−−verbose オ プ シ ョ ン を 指 定 し た 場 合 、 Hmm... は パ ッ チ フ ァ イ ル の 中 に 処 理 さ れ な か っ た テ キ ス ト が あ り 、 patch が テ キ ス ト の 中 に パ ッ チ が あ る か ど う か を 必 死 に 探 そ う と し て い る こ と を 表 し て い る 。 パ ッ チ が 見 つ か る と 、 そ の パ ッ チ が ど ん な 種 類 の も の か を 示 す 。

patch の 終 了 ス テ ー タ ス は 、 す べ て の hunk の 適 用 に 成 功 し た 場 合 に 0 、 一 部 の hunk が 適 用 で き な か っ た 場 合 に 1 、 も っ と 深 刻 な 問 題 に 見 舞 わ れ た 場 合 に 2 と な る 。 バ ッ チ 処 理 で 複 数 の パ ッ チ を 適 用 す る 場 合 、 終 了 ス テ ー タ ス を チ ェ ッ ク し て 、 部 分 的 に し か パ ッ チ の 当 た っ て い な い フ ァ イ ル に 以 降 の パ ッ チ を 当 て な い よ う に す る こ と が 必 要 で あ る 。

警 告

コ ン テ キ ス ト diff は 空 の フ ァ イ ル や 空 の デ ィ レ ク ト リ 、 シ ン ボ リ ッ ク リ ン ク な ど の ス ペ シ ャ ル フ ァ イ ル の 作 成 や 削 除 を 確 実 に 表 す こ と は で き な い 。 所 有 者 や ア ク セ ス 権 限 、 あ る フ ァ イ ル が 別 の フ ァ イ ル の ハ ー ド リ ン ク で あ る こ と と い っ た フ ァ イ ル メ タ デ ー タ の 変 更 を 表 す こ と も で き な い 。 も し そ の よ う な 変 更 も 必 要 で あ れ ば 、 別 に 手 順 書 ( 例 え ば 、 シ ェ ル ス ク リ プ ト ) を 用 意 し て 、 パ ッ チ に 添 付 し な け れ ば な ら な い 。

patch は 、 ed ス ク リ プ ト 中 の 行 番 号 が は み 出 し て い る か ど う か は 分 か ら な い し 、 ノ ー マ ル diff の 行 番 号 の 間 違 い は 変 更 や 削 除 を 見 つ け た 場 合 に 限 っ て 検 出 で き る 。 fuzz factor が 3 の コ ン テ キ ス ト diff も 同 じ 問 題 に 遭 遇 す る か も し れ な い 。 適 当 な 対 話 式 の イ ン タ フ ェ ー ス が 導 入 さ れ る ま で は 、 こ の よ う な 場 合 は コ ン テ キ ス ト diff を 作 っ て 変 更 が 妥 当 か ど う か を 確 認 し な け れ ば な ら な い 。 も ち ろ ん 、 エ ラ ー な く コ ン パ イ ル で き た こ と は パ ッ チ が う ま く 当 た っ た よ い 証 拠 に な る が 、 必 ず し も そ う と は い え な い 。

patch は 多 数 の 推 測 が 必 要 な 場 合 で あ っ て も 、 通 常 は 正 し い 結 果 を 出 す 。 し か し 、 結 果 が 正 し い こ と が 保 証 さ れ る の は 、 そ の パ ッ チ が 生 成 さ れ た フ ァ イ ル と 全 く 同 一 の バ ー ジ ョ ン の フ ァ イ ル に 適 用 さ れ た 場 合 だ け で あ る 。

互 換 性 の 問 題

POSIX 標 準 は patch の 古 典 的 な 振 る 舞 い と 異 な る 振 る 舞 い を 規 定 し て い る 。 patch の バ ー ジ ョ ン 2.1 お よ び そ れ 以 前 ( こ れ ら は POSIX に 準 拠 し て い な い ) と 相 互 に 運 用 し な け れ ば な ら な い 場 合 、 こ れ ら の 違 い を 知 っ て お く 必 要 が あ る 。

古 典 的 な

patch で は 、 −p オ プ シ ョ ン の 引 数 は 省 略 可 能 で あ り 、 単 独 の −p

−p0 と 同 等 で あ っ た 。 今 日 の patch で は −p オ プ シ ョ ン に 引 数 が 必 須 で 、 −p 0−p0 と 同 等 で あ る 。 互 換 性 を 最 大 限 に 保 つ た め に 、 −p0−p1 と い っ た オ プ シ ョ ン を 使 う 。 ま た 、 古 典 的 な patch は パ ス プ レ フ ィ ク ス を 取 り 除 く 際 、 ス ラ ッ シ ュ の 数 を 単 純 に 数 え て い た 。 今 日 の patch は パ ス 名 の 要 素 を 数 え る 。 つ ま り 、 1 個 ま た は 複 数 の 隣 接 す る ス ラ ッ シ ュ の 列 は 1 個 の ス ラ ッ シ ュ と し て 数 え ら れ る 。 互 換 性 を 最 大 限 に 保 つ た め に 、 フ ァ イ ル 名 に // を 含 む パ ッ チ は 送 ら な い よ う に す る こ と 。

古 典 的 な

patch で は 、 デ フ ォ ル ト で バ ッ ク ア ッ プ が 有 効 で あ っ た 。 今 日 の

patch で は −b ま た は −−backup オ プ シ ョ ン で 有 効 に な る 。 反 対 に 、 POSIX patch で は 、 不 整 合 が あ っ て も バ ッ ク ア ッ プ は 一 切 作 ら れ な い 。 GNU patch で は 、 こ の 振 る 舞 い は −−no−backup−if−mismatch オ プ シ ョ ン か 、 −−posix オ プ シ ョ ン ま た は POSIXLY_CORRECT 環 境 変 数 で POSIX 準 拠 に す る か で 有 効 に な る 。 古 典 的 な patch−b suffix オ プ シ ョ ン は GNU patch−b −z suffix オ プ シ ョ ン と 同 等 で あ る 。

古 典 的 な

patch は 、 パ ッ チ ヘ ッ ダ か ら パ ッ チ を 当 て る フ ァ イ ル の 名 前 を 決

定 す る の に 複 雑 な ( し か も 完 全 に は ド キ ュ メ ン ト に な っ て い な い ) 手 法 を 用 い て い た 。 こ の 手 法 は POSIX に 準 拠 し て お ら ず 、 い く つ か 誤 り も あ っ た 。 今 日 の patch は 異 な る 、 同 じ く ら い 複 雑 な (し か し ド キ ュ メ ン ト は ま し な ) 手 法 を 用 い て お り 、 オ プ シ ョ ン で POSIX に 準 拠 す る こ と が で き る 。 誤 り が 減 っ て い る と よ い の だ が 。 2 つ の 手 法 は 、 コ ン テ キ ス ト diff の ヘ ッ ダ の フ ァ イ ル 名 と Index: の 行 が プ レ フ ィ ク ス を 除 い て 全 く 同 じ で あ る 場 合 に は 互 換 性 が あ る 。 作 っ た パ ッ チ は 、 そ れ ぞ れ の ヘ ッ ダ の フ ァ イ ル 名 が す べ て 同 じ 数 の ス ラ ッ シ ュ を 含 ん で い れ ば 、 通 常 は 互 換 性 が あ る 。

古 典 的 な

patch が ユ ー ザ に 質 問 を す る と き は 、 質 問 を 標 準 エ ラ ー に 出 力

し 、 以 下 の リ ス ト の う ち タ ー ミ ナ ル で あ る 最 初 の フ ァ イ ル か ら 回 答 を 求 め る : 標 準 エ ラ ー 、 標 準 出 力 、 /dev/tty、 標 準 入 力 。 今 日 の patch は 質 問 は 標 準 出 力 に 出 力 し 、 /dev/tty か ら 回 答 を 得 る 。 回 答 の デ フ ォ ル ト の う ち い く つ か は 変 更 さ れ て お り 、 デ フ ォ ル ト の 回 答 を 使 っ て も patch が 無 限 ル ー プ に 陥 ら な い よ う に な っ て い る 。

古 典 的 な

patch は 、 失 敗 し た hunk の 数 を ス テ ー タ ス 値 と し て 終 了 し 、 本

当 の 問 題 に 出 く わ し た 場 合 は 1 を ス テ ー タ ス 値 と し て い た 。 今 日 の patch は hunk が 失 敗 す る と 1 で 終 了 し 、 問 題 が あ る 場 合 は 2 で 終 了 す る 。

GNU patch、 古 典 的 patchPOSIX 準 拠 の patch の ど れ を 使 う か 分 か ら な い 人 に 宛 て て 手 順 を 送 る 場 合 、 次 の オ プ シ ョ ン 以 外 は 使 わ な い こ と 。 以 下 の リ ス ト で は 空 白 も 意 味 を 持 ち 、 引 数 は 必 須 で あ る 。

−c
−d
dir
−D
define
−e
−l
−n
−N
−o
outfile
−p
num
−R
−r
rejectfile

バ グ

バ グ は 電 子 メ ー ル で <bug-gnu-utils [AT] gnu.org> へ 報 告 し て く だ さ い 。

patch は 部 分 一 致 や 大 き く 逸 脱 し た オ フ セ ッ ト や ひ っ く り 返 っ た コ ー ド に 対 し て も っ と 賢 く す る こ と も で き る だ ろ う が 、 そ の 道 は 長 い だ ろ う 。 コ ー ド が 重 複 し て い る 場 合 ( 例 え ば #ifdef OLDCODE ... #else ... #endif の よ う に 区 切 ら れ て い る 場 合 ) 、 patch は 両 方 の バ ー ジ ョ ン に パ ッ チ を 当 て る こ と は で き な い 。 も し パ ッ チ が 当 た っ た と し た ら 、 間 違 っ た ほ う に パ ッ チ が 当 た っ て し ま っ て い る こ と も よ く あ り 、 そ れ で も 成 功 し た か ら 続 き を や れ と い う だ ろ う 。 す で に 当 た っ て い る パ ッ チ を 当 て よ う と す る と 、 patch は パ ッ チ が 反 転 し て い る と 思 い 、 パ ッ チ を 戻 す か を 尋 ね る 。 こ れ は 機 能 の ひ と つ と み な す こ と が で き よ う 。

著 作 権

Copyright 1984, 1985, 1986, 1988 Larry Wall.
Copyright 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998 Free Software Foundation, Inc.

Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.

Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.

Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be included in translations approved by the copyright holders instead of in the original English.

著 者

オ リ ジ ナ ル の patch は Larry Wall が 書 い た 。 Paul Eggert は 恣 意 的 な 制 限 を 取 り 除 き 、 バ イ ナ リ フ ァ イ ル へ の 対 応 や 、 フ ァ イ ル の 時 刻 設 定 、 フ ァ イ ル の 削 除 を 追 加 し た 。 ま た 、 よ り POSIX に 準 拠 す る よ う に し た 。 ほ か に は Wayne Davison が unidiff へ の 対 応 を 追 加 し 、 David MacKenzie が コ ン フ ィ グ レ ー シ ョ ン と バ ッ ク ア ッ プ へ の 対 応 を 追 加 し た 。