وصله (یونیکس)
ابزار کامپیوتر وصله یک برنامه یونیکس است که های متنی را طبق دستورالعمل های موجود در یک جداگانه ، به نام "وصله" ، به روز می کند. وصله (که به اختصار "وصله" نیز نامیده می شود) یک متنی است که از لیستی از تفاوت ها تشکیل شده است و با اجرای برنامه diff مربوط به همراه اصلی و به روز شده به عنوان آرگومان، تولید می شود. به روزرسانی پرونده ها با وصله اغلب به عنوان "اعمال وصله" یا به سادگی "وصله" ها گفته می شود.
برنامه اصلی وصله توسط لری وال (کسی که با ایجاد زبان برنامه نویسی Perl ادامه داد ) نوشته شد و در codice_1 (که بعدا به codice_2 تبدیل شد) در می 1985 ارسال شد. یک نوع برنامه (اما نه تنها نوع برنامه ) بخشی از پروژه GNU است و توسط FSF نگهداری می شود.
وصله که توسط یک برنامه نویس برای سایر برنامه نویسان ساخته شده است ، اغلب برای به روزرسانی کد منبع به نسخه جدیدتر استفاده می شود. به همین دلیل ، بسیاری از افراد برای مرتبط سازی وصله ها با کد منبع درآمدند ، در حالی که وصله ها در واقع می توانند برای هر متنی اعمال شوند. "پرونده های وصله" شده هیچ متن غیر ضروری را جمع نمی کند ، همان چیزی است که برخی از مردم براساس معنای انگلیسی کلمه درک می کنند. وصله به همان میزانی که قابلیت حذف متن را دارد می تواند آن را اضافه کند.
وصله های توصیف شده در اینجا نباید با وصله های باینری اشتباه گرفته شوند ، اگرچه می توانند از نظر مفهومی مشابه باشند ، اما برای به روزرسانی پرونده های باینری متشکل از برنامه به نسخه جدید توزیع می شوند.
های diff که به عنوان ورودی برای وصله استفاده می شوند ، های متنی قابل خواندن هستند ، به این معنی که آنها می توانند به راحتی توسط انسان قبل از استفاده بررسی یا اصلاح شوند.
علاوه بر برنامه " diff " ، تفاوت ها را می توان توسط برنامه های دیگری مانند Subversion ، CVS ، RCS ، Mercurial و Git نیز تولید کرد
وصله ها جز اجزای اساسی بسیاری از سیستم های کنترل منبع ، از جمله CVS بوده اند .
وقتی از diff های پیشرفته تری استفاده می شود ، وصله ها را می توان حتی برای پرونده هایی که در این ضمن اصلاح شده اند اعمال کرد ، به شرطی که این تغییرات با وصله تداخل نداشته باشند. این امر با استفاده از " diff های زمینه ای " و " diff های یکپارچه " (همچنین به عنوان "unidiffs" شناخته می شود) ، که هر تغییر را با زمینه احاطه می کند ، که زمینه، متن بلافاصله قبل و بعد از قسمت تغییر یافته تعریف می شود . سپس وصله می تواند از این زمینه برای تعیین منطقه مورد نظر برای وصله حتی اگر با تغییراتی که قبلاً در پرونده جابجا شده است ، استفاده کند و از شماره خطوط در diff ها به عنوان نقطه شروع استفاده کند. به دلیل این خاصیت ، diff های زمینه ای و یکپارچه نوع ارجح تر وصله ها برای ارسال به بسیاری از پروژه های نرم افزاری است.
ویژگی های فوق diff و وصله را به ویژه برای تبادل اصلاحات در نرم افزار منبع باز محبوب می کند. افراد خارجی می توانند جدیدترین کد منبع موجود را بارگیری کنند ، اصلاحاتی در آن انجام دهند و آنها را به صورت متفاوت برای تیم توسعه ارسال کنند. با استفاده از diff ها ، تیم توسعه این توانایی را دارد که وصله ها را قبل از استفاده به طور موثر بررسی کنند و می تواند آنها را در یک کد جدیدتر از آنچه که توسعه دهنده خارجی به آن دسترسی داشته است ، اعمال کنند.
برای ایجاد یک وصله ، می توان دستور زیر را در پوسته اجرا کرد: $ diff -u oldFile newFile > mods.diff # -u tells diff to output unified diff format برای اعمال وصله ، می توان دستور زیر را در پوسته اجرا کرد: $ patch < mods.diff این به وصله می گوید که تغییرات را درون پرونده های مشخص شده در codice_3 اعمال می کند.اعمال وصله ها در زیرپوشه ها به آپشن اضافی codice_4 نیاز دارد ، در صورتی که اگر پوشه پایه درخت منبع در diff وجود داشته باشد ، "عدد 1 است و در غیر این صورت 0 است."
با گزینه " codice_5 " می توان وصله ها را لغو یا معکوس کرد: $ patch -R < mods.diff در برخی موارد که پرونده با نسخه ای که در تناظر آن diff ایجاد شده یکسان نیست ، وصله نمی تواند به صورت تمیز اعمال شود. به عنوان مثال ، اگر در ابتدا خطوط متن درج انجام شود ، شماره خطوط اشاره شده در وصله نادرست خواهد بود.وصله با نگاه کردن به خطوط مجاور برای جابجایی مجدد متن مورد نظر برای وصله می تواند جای جدید را پیدا کند. همچنین با تغییر خطوط زمینه (برای diff های زمینه ای و یکپارچه) بازیابی خواهد شد. این به عنوان فاز توصیف می شود.
در اصل برای سیستم های یونیکس و یونیکس مانند نوشته شده است ، همچنین به ویندوز و بسیاری از سیستم عامل های دیگر نیز منتقل شده است. درگاه های وصله ویندوز توسط GnuWin32 و UnxUtils ارائه می شوند .
یک دستور patch نیز بخشی از ASCII تحت عنوان "ابزارهای MSX-DOS2" برای MSX-DOS نسخه 2 است.