Кіріспе

diff3 – үш файлды салыстырып, олардың арасындағы айырмашылықтарды көрсететін Unix құралы. Diff3 файлдарды біріктіре де алады, үш тармақты біріктіруді жүзеге асырады.

Тарих және жүзеге асыру

бастапқыда 1979 жылғы Unix 7 нұсқасында пайда болды. Осыған ұқсас нұсқа Беркли бағдарламалық қамтамасының (BSD) дистрибутивінде табылды және OpenBSD-ге, сондай-ақ мүмкін, Solaris-ке мұрагерлікпен берілді. Көптеген қазіргі заманғы Unix сияқты жүйелерде, тіпті FreeBSD және NetBSD сияқты BSD-ден туындаған жүйелерде де, ұсынылған diff3 – GNU-ның diffutils (бұрынғы GNU Tools) нұсқасы. Бұл нұсқа файлдарды өздігінен біріктіре алады, үшінші тарапты шақыруға тәуелді болмайды, бірақ басқа да үйлесімді құралдарды пайдалана алады. Бұл команда Microsoft Windows үшін UnxUtils жинағының бөлігі ретінде жеке пакет ретінде қолжетімді, ол көптеген GNU Unix сияқты утилиталардың Win32-ге портталған нұсқаларын қамтиды. "Diff3" үш жолды біріктіру алгоритмінің жалпылама атауы ретінде де қолданылады, әсіресе бірінші бастапқы дереккөзден туындаған екі түрлі өзгертуді келістіруге негізделген алгоритм.

Бір атадан тараған

Екі адам бір файлдың көшірмелеріне өзгерістер енгізген кезде, diff3 біріктірілген нәтижені шығара алады, онда өзгерістердің екі жиынтығы да, сондай-ақ қайшылықтар туралы ескертулер де болады. diff3 файлға бір уақытта екі өзгерістер жиынтығын біріктіру арқылы үш немесе одан да көп өзгерістер жиынтығын біріктіре алады. diff3 екі өзгертілген нұсқадағы өзгерістерді ортақ алдыңғы нұсқаға қоса алады. Бұл пайдаланушыларға екі жаңа файлдағы өзгерістер жиынтығын біріктіруге мүмкіндік береді. Бұны мынадай команда арқылы іске қосуға болады: diff3 mine older yours. Бұл, older файлынан yours файлындағы айырмашылықты алып тастап, нәтижесін mine файлына қосу сияқты, немесе older файлы yours файлына айналуы үшін қажетті өзгерістерді mine файлына біріктіру сияқты. Бұл біріктіру, mine және older файлдары әрбір өзгерістің маңында сәйкес келсе, жақсы анықталған. Егер үш кіріс файлдың барлығы да әртүрлі болса немесе тек older файлы ғана ерекшеленсе, онда бұл дұрыс емес; мұндай жағдайда қақтығыс туындайды. Егер үш кіріс файлдың барлығы да әртүрлі болса, қақтығыс жапсарлас болып табылады. diff3 жапсарласқан және қайшылықтарды басқарудың бірнеше әдісін ұсынады. Ол жапсарласқан немесе қайшылықтарды жоюы, немесе тек жапсарласқан бөліктерді таңдауы, немесе қайшылықтарды арнайы <<<<<<< және >>>>>>> жолдармен белгілеуі мүмкін. diff3 біріктірілген нәтижені редакциялық скрипт түрінде шығара алады, оны бірінші файлға қолдану арқылы біріктірілген нәтижені алуға болады. Дегенмен, біріктірілген нәтижені тікелей жасау ed-мен байланысты кейбір мәселелерді болдырмайды.