10.6 ファイル内の複数のパッチ
パッチファイルは一つ以上のパッチが含まれている場合,そして,コマンドライ
ンで入力ファイルを指定していない場合,patchはそれぞれのファイ
ルを個別のパッチファイルから来たもののように適用します.これは,それぞれ
のパッチに対するパッチをあてるファイル名を決定し,ファイル名に対するそれ
ぞれのパッチの前に前置されているテキストと,必要条件となるリビジョンレベ
ルを調べるということを意味します(この話題の詳細は,see Making Patches).
パッチの前に前置されてるテキストからファイル名を直観で知るために,
patchは以下の規則を使用します.最初に,patchは以下の
ような対象となるファイル名の順序のあるリストを受けとります.
-
ヘッダが周りの文を使用した差分の場合,patchは古いものと新しい
もののファイル名をヘッダから受けとります.-pnumや
--strip=numオプションに満たないスラッシュしかない場合,名
前は無視されます./dev/nullという名前も無視されます.
-
前置される不要な情報に`Index:'行があり,古いものの名前も新しいもの
の名前も両方とも無い,またはpatchがposixに準拠している場
合,patchは`Index:'行の名前を受けとります.
-
以下の規則の目的で,対象となるファイル名は,ヘッダに現れる順番によらず,
(古いもの,新しいもの,索引の)順番にならんでいると考えられます.
そして,patchは以下のような対象となるファイルのリストからファ
イル名を選択します.
-
指定されたファイルが存在する場合,posixに準拠している場合は最初の名
前を,それ以外では最適な名前を選択します.
-
patchがrcs,ClearCase,そしてsccs(see Revision Control)を無視せず,rcs,ClearCase,またはsccs以外の名前のファ
イルが存在しない場合,patchはrcs,ClearCase,または
sccsのマスターで最初に指名されたファイルを選択します.
-
指名したファイルが存在しないせず,rcs,ClearCase,またはsccsの
マスターも見つからない,名前が与えられていない,patchが
posixに準拠していない,そしてパッチがファイルを作成しているように見
える場合,patchはディレクトリの作成が最小になるように,要求さ
れている最適な名前を選択します.
-
上記の発見的手法の結果でもファイル名が付かない場合,パッチをあてるファイ
ル名を尋ねられ,patchはその名前を選択します.
ファイル名の空ではない最適な(best)リストを決定するため,
patchは最初に,パス名の構成要素を最小にして,すべての名前を受
けとります.そして,最短のベース名にしてすべての名前を受けとります.そし
て,すべての最短の名前を受けとります.最後に,残っている最初の名前を受け
とります.
patchがposixに準拠しているかどうかを知るために,
See patch and POSIX.