Кіріспе

Unix-тің мәтіндік файлдарға өзгерістер енгізу құралы

Patch компьютерлік бағдарламасы – бұл Unix бағдарламасы, ол мәтіндік файлдарды жеке файлда (patch файлы) сақталған нұсқауларға сәйкес жаңартады. Patch файлы (немесе қысқаша, жаңырту) – мәтіндік файл, ол өзгерістердің тізімін қамтиды және бастапқы және жаңартылған файлдарды аргументтер ретінде пайдаланып diff бағдарламасын іске қосу арқылы жасалады. Файлдарды patch арқылы жаңартуды «patch қолдану» немесе жай ғана «жаңарту» деп атайды.

Тарих

Бастапқы жаңарту бағдарламасын Ларри Уолл жазды (кейіннен Perl бағдарламалау тілін жасаған) және 1985 жылдың мамырында mod.sources (кейіннен comp.sources.unix) тобына жариялады.

patch XPG4 стандартына қосылды, ол кейіннен POSIX болды. Уоллдың коды OpenBSD, FreeBSD және schilytools жүйелеріндегі "patch" бағдарламаларының негізі болып табылады. The Open Group құрамына біріккен Open Software Foundation осыдан туындаған нұсқаны сақтап тұрған деген ақпарат бар. GNU жобасы/FSF Ларри Уолл нұсқасынан бөлінген patch бағдарламасын күтіп келеді. Мұрағат GNU diffutils мұрағатынан өзгеше, бірақ құжаттамасы ортақ басқарылады.

Пайдалану контексі

Бағдарламашылар үшін бағдарламашы жасаған түзетулер көбінесе бастапқы кодты жаңа нұсқаға жаңарту үшін қолданылды. Осы себепті көптеген адамдар түзетулерді бастапқы кодпен байланыстырады, бірақ түзетулер кез келген мәтінге қолданылуы мүмкін. Түзетілген файлдар қажетсіз мәтінді жинақтамайды, кейбір адамдар сөздің ағылшын тіліндегі мағынасына сүйене отырып, олай ойлайды; түзету мәтінді қосумен қатар алып тастауға да қабілетті. Мұнда сипатталған түзетулер бинарлық түзетулермен шатастырылмауы керек, олар тұжырымдық тұрғыдан ұқсас болғанымен, бағдарлама құрамына кіретін бинарлық файлдарды жаңа нұсқаға жаңарту үшін таралды.

Бағдарламалық жасақтаудағы жаңсақ жерлер

Жаңартуды қолдануға кіріс ретінде берілетін diff файлдары оқуға қолайлы мәтіндік файлдар болып табылады, яғни оларды пайдалану алдында адамдар оңай қарап шығуға немесе өзгертуге болады. "diff" бағдарламасынан өзге, diff файлдарын Subversion, CVS, RCS, Mercurial және Git сияқты басқа бағдарламалар да жасау мүмкін. Жапсырмалар көптеген нұсқаулықты басқару жүйелерінің, оның ішінде CVS-тің маңызды бөлігі болды.

Жоғары деңгейдегі айырмашылықтар

Қосымша жетілдірілген айырмашылықтар қолданылғанда, түзетулер орталық уақытта өзгертілген файлдарға да қолданылуы мүмкін, егер бұл түзетулерге кедергі келтірмесе. Бұл "контексттік айырмашылықтар" және "біріктірілген айырмашылықтар" (сондай-ақ "біртұтас айырмашылықтар" деп те аталады) арқылы іске асырылады, олар әр өзгерісті өзгертілген бөліктің алдында және кейін орналасқан мәтінмен – контекстпен қоршайды. Түзету, файлдың басындағы өзгерістер салдарынан орны ауысқан жағдайда да, айырмашылықтардағы жол нөмірін бастапқы нүкте ретінде пайдаланып, түзетілуі тиіс бөлікті анықтау үшін осы контексті қолдана алады. Осы қасиетінің арқасында контексттік және біріктірілген айырмашылықтар көптеген бағдарламалық жобаларға жіберу үшін артықшылықты түзету нысаны болып табылады. Аталған мүмкіндіктер diff және patch құралдарын ашық бастапқы кодты бағдарламалық жасақтамаға өзгерістер жіберу үшін ерекше танымал етеді. Сыртқы қолданушылар соңғы қолжетімді бастапқы кодты жүктеп алады, оған өзгерістер енгізеді және оларды diff түрінде әзірлеу тобына жібереді. Diff құралын пайдаланып, әзірлеу тобы түзетулерді қолдану алдында тиімді түрде қарап шыға алады және оларды сыртқы әзірлеушінің қолжетімділігінде болған нұсқадан гөрі жаңа код базасына қолдана алады.

Жапсырма порттары

Бастапқыда Unix және Unix-қа ұқсас жүйелер үшін жазылған, patch сондай-ақ Windows және көптеген басқа платформаларға көшірілді. Patch-тың Windows порттарын GnuWin32 және UnxUtils ұсынады. Patch командасы ASCII-дің MSX DOS2 құралдарының MSX DOS 2 нұсқасының да бір бөлігі болып табылады.