Git 2.29.0 SHA-256-ны эксперименттік қолдау, жақсартулар және басқаларымен келеді

Git - нұсқаларды басқарудың ең танымал жүйелерінің бірі, тармақталуға және біріктіруге негізделген икемді сызықтық емес құралдарды қамтамасыз ететін сенімді және жоғары өнімділік. Тарихтың тұтастығын және өзгерістерге төзімділікті «артқа қарай» қамтамасыз ету үшін әрбір бұрынғы тарихтың жасырын хэштелуі қолданылады, сонымен қатар жеке тегтер мен міндеттемелерді әзірлеушілердің цифрлық қолтаңбасымен куәландыруға болады.

Жақында оның «Git 2.29.0» жаңа нұсқасы жарияланды және алдыңғы нұсқасымен салыстырғанда, 627 өзгертулер жаңа редакцияда қабылданды, 89 әзірлеушінің қатысуымен шығарылды, оның 24-і алғаш рет әзірлеуге қатысты.

Git 2.29.0 негізгі жаңа мүмкіндіктері

Бұл жаңа нұсқада, SHA-256 хэштеу алгоритмін қолданудың эксперименттік нұсқасын қамтиды ымыралы SHA-1 орнына репозиторийге объектілерді жазу кезінде. Хэш Git ішіндегі әрбір объектінің мазмұнынан жасалады және оның бірегей идентификаторы болып табылады. Деректердегі немесе объектінің тақырыптарындағы кез-келген өзгеріс оның идентификаторының өзгеруіне әкеледі. Хэштеу алгоритміндегі қақтығыстардың пайда болуы теориялық тұрғыдан алынған хэшпен екі түрлі мәліметтер жиынын құруға кедергі болмайды.

Өкінішке орай, SHA-1 алгоритмі жасанды соқтығысудың қалыптасуына төзімді емес болып шықты, бірақ SHA-1 соқтығысуларын манипуляциялау арқылы Git-тегі объектілерді алмастыруға нақты шабуылдар жасау, бұл екіталай, өйткені жеке объектіні тоқтату үшін жойылған нысанда соқтығысу үлгісі болуы керек, яғни ерікті блокты ауыстыру мүмкін емес.

Әр соқтығысу үшін өте үлкен есептеуіш ресурстар қажет болғандықтан, қазірдің өзінде есептелген шаблондар белгілі соқтығысуларға әкелетін және одан бұрын Git-те оларды объектілерде қолдану әрекеттері үшін тексеру қосылды.

Дамудың осы сатысында сіз тек SHA-1 және SHA-256 арасында таңдау жасай аласыз, бірақ әзірге сіз әртүрлі хэштерді репозиторийде бір уақытта біріктіре алмайсыз. Сондай-ақ, қазіргі уақытта Git провайдері, оның ішінде GitHub SHA-256 хэштері бар репозитарийлерді қолдамайды. Болашақта портативті мүмкіндіктерді қосу жоспарда бар.

Бұл жаңа нұсқадағы тағы бір өзгеріс пәрменде «Git fetch» ​​және «git push» кімге эксклюзивті сілтеме сипаттамаларына қолдау көрсетеді (refspec), жергілікті және сыртқы репозитарийлердегі филиалдар арасындағы сәйкес құқықтарды кеңейтеді. Анықтамалық сипаттамаларды қоспағанда, сіз тек таңдап қана қоймай, сонымен қатар белгілі бір тармақтарды картадан шығарып тастау қажет болған жағдайда пайдалы болуы мүмкін. Мысалы, бір «refs / heads / ref-to-exception» -тен басқа барлық «refs / heads / *» тармақтарын тексеру қажет болғанда, алдымен әр филиалды қосып толық тізімін көрсету қажет болды.

Жаңа өрістер «git for-each-ref» қосылды объектінің атына, түріне және идентификаторына қосымша «-format» параметрімен көрсетілуі мүмкін. Мысалы, қосылған өрістердің мазмұны: мөлшері, тақырыбы: тазарту және модификатор: қысқа объект идентификаторларын көрсету үшін қысқа. Сондай-ақ, сілтемелерді сүзу үшін бірнеше «- біріктірілген» және «- біріктірілмеген» аргументтерді көрсетуге рұқсат етіледі.

«Git біріктіру» операциясы кезінде жанжал туындаған кезде, жасаңыз хабарлама тақырыбы жақсырақ бөлінуі керек Git диагностикалық хабарламаларынан деректерді қабылдау.

Жаңа «merge.renormalize» параметрі қосылды, орнатылған кезде, шығу және тіркеу операциялары үш жақты комбинацияның әр кезеңі үшін орындалады.

Git байланыс хаттамасының екінші нұсқасы кері қайтарылды, ол 2.27 нұсқасында өшірілген және клиент қашықтан Git серверіне қосылған кезде қолданылады. Тұрақтылықты тудыратын қате диагностикаланып, жойылды.

«-First-parent» параметрі «git bisect» командасына қосылды, Que регрессивті өзгеріс болған қайта қарауды анықтау үшін қолданылады, белгілі жұмыс шолуы мен мәселе туындаған шолу арасында өтетін міндеттемелердің таңдауын өзгерту. Егер сіз «–first-parent» деп көрсетсеңіз, біріктірілген міндеттеменің өзін ескермей, тек біріктірілген тармақтағы міндеттемелер есептеледі.

«Git index-pack» ішкі командасының тиімділігі жақсарды «Git push» немесе «git fetch» ​​іске қосылған кезде көп ядролы жүйелерде индекстің оралуын параллельдеу кезінде қолданылады.

Филиалдар біріктірілген кезде шығарылатын «бұрын $ dest» фразасын «$ upstream $ dest» -ке біріктіруді басқаратын «merge.suppressDest» параметрі қосылды (бұрын ол $ dest) әдепкі бойынша негізгі филиал үшін).

«Contrib / mw-to-git» артқы жағындағы осалдық жойылды MediaWiki-ден деректерді итеріп алу үшін (әдепкі бойынша салынбаған). Мәселе шабуылдаушының бақылауында болған MediaWiki данасына кіру кезінде кодтың орындалуын ұйымдастыруға мүмкіндік берді.

Ақырында, егер сіз бұл туралы көбірек білгіңіз келсе, егжей-тегжейін тексере аласыз Келесі сілтемеде.


Мақаланың мазмұны біздің ұстанымдарымызды ұстанады редакторлық этика. Қате туралы хабарлау үшін нұқыңыз Мұнда.

Бірінші болып пікір айтыңыз

Пікіріңізді қалдырыңыз

Сіздің электрондық пошта мекен-жайы емес жарияланады.

*

*

  1. Деректерге жауапты: Мигель Анхель Гатан
  2. Деректердің мақсаты: СПАМ-ны басқару, түсініктемелерді басқару.
  3. Заңдылық: Сіздің келісіміңіз
  4. Деректер туралы ақпарат: заңды міндеттемелерді қоспағанда, деректер үшінші тұлғаларға жіберілмейді.
  5. Деректерді сақтау: Occentus Networks (ЕО) орналастырған мәліметтер базасы
  6. Құқықтар: Сіз кез-келген уақытта ақпаратты шектей, қалпына келтіре және жоя аласыз.