{"id":108813,"date":"2023-06-02T15:10:15","date_gmt":"2023-06-02T13:10:16","guid":{"rendered":"https:\/\/prohoster.info\/?p=108813"},"modified":"2023-06-02T17:30:17","modified_gmt":"2023-06-02T15:30:17","slug":"dostupna-sistema-upravleniya-ishodnymi-tekstami-git-2-41","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/news\/dostupna-sistema-upravleniya-ishodnymi-tekstami-git-2-41","title":{"rendered":"Dost\u0119pny jest system kontroli wersji Git 2.41.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Po trzech miesi\u0105cach prac i rozwoju opublikowano wersj\u0119 2.41 rozproszonego systemu zarz\u0105dzania kodem \u017ar\u00f3d\u0142owym Git. Git jest jednym z najbardziej popularnych, niezawodnych i wydajnych system\u00f3w kontroli wersji, oferuj\u0105cym elastyczne narz\u0119dzia do nieliniowego rozwoju, oparte na ga\u0142\u0119zi i scalaniu. Aby zapewni\u0107 integralno\u015b\u0107 historii i odporno\u015b\u0107 na zmiany 'wstecz', u\u017cywane jest niejawne haszowanie ca\u0142ej poprzedniej historii w ka\u017cdym commicie, a tak\u017ce mo\u017cliwe jest uwierzytelnienie cyfrowymi podpisami deweloper\u00f3w poszczeg\u00f3lnych tag\u00f3w i commit\u00f3w.     <\/p>\n<p>W por\u00f3wnaniu do poprzedniej wersji w nowej wersji wprowadzono 542 zmiany, przygotowane przez 95 deweloper\u00f3w, z czego 29 wzi\u0119\u0142o udzia\u0142 w rozwoju po raz pierwszy. G\u0142\u00f3wne nowo\u015bci:  <\/p>\n<ul>\n<li class=\"l\"> Ulepszono obs\u0142ug\u0119 obiekt\u00f3w nieosi\u0105galnych (unreachable), do kt\u00f3rych w repozytorium brak jest odniesie\u0144 (nie s\u0105 prowadzone przez ga\u0142\u0119zie ani tagi). Obiekty nieosi\u0105galne s\u0105 usuwane przez kolektor \u015bmieci, ale przez pewien czas pozostaj\u0105 w repozytorium, aby wykluczy\u0107 stany wy\u015bcigu. Aby \u015bledzi\u0107 okres istnienia obiekt\u00f3w nieosi\u0105galnych, konieczne jest przypisanie im znacznik\u00f3w z czasem modyfikacji tych obiekt\u00f3w, co nie pozwala na przechowywanie ich w jednym pliku pack, w kt\u00f3rym wszystkie obiekty maj\u0105 wsp\u00f3lny czas modyfikacji. Wcze\u015bniej ka\u017cdy obiekt nieosi\u0105galny by\u0142 przechowywany w osobnym pliku, co prowadzi\u0142o do problem\u00f3w przy du\u017cej liczbie \u015bwie\u017cych obiekt\u00f3w nieosi\u0105galnych, kt\u00f3re jeszcze nie podlega\u0142y usuni\u0119ciu. W nowej wersji do pakowania obiekt\u00f3w nieosi\u0105galnych domy\u015blnie u\u017cywany jest mechanizm 'cruft packs', kt\u00f3ry pozwala na przechowywanie wszystkich obiekt\u00f3w nieosi\u0105galnych w jednym pliku pack, a dane o czasie modyfikacji ka\u017cdego obiektu s\u0105 odzwierciedlane w osobnej tabeli przechowywanej w pliku o rozszerzeniu '.mtimes' i \u0142\u0105czonej za pomoc\u0105 pliku indeksowego o rozszerzeniu '.idx'.    <center><img decoding=\"async\" alt=\"Dost\u0119pny jest system kontroli wersji Git 2.41.\" src=\"\/wp-content\/uploads\/2023\/06\/1158b26b1dfd1c16c93017669224d7a4.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>\n<li class=\"l\"> Domy\u015blnie w\u0142\u0105czono prowadzenie lokalnego indeksu zwrotnego (revindex) dla plik\u00f3w pack. Podczas testowania na repozytorium torvalds\/linux zastosowanie indeksu zwrotnego pozwoli\u0142o przyspieszy\u0107 zasoboch\u0142onne operacje 'git push' o 1,49 razy, a proste operacje, takie jak obliczanie rozmiaru jednego obiektu za pomoc\u0105 'git cat-file --batch='%(objectsize:disk)'', o 77 razy. Pliki ('.rev') z indeksem zwrotnym b\u0119d\u0105 przechowywane w repozytorium w katalogu '.git\/objects\/pack'.\n<p>Przypominamy, \u017ce Git przechowuje wszystkie dane w formie obiekt\u00f3w, kt\u00f3re s\u0105 umieszczane w oddzielnych plikach. W celu zwi\u0119kszenia efektywno\u015bci pracy z repozytorium obiekty dodatkowo umieszczane s\u0105 w plikach paczek, w kt\u00f3rych informacje przedstawione s\u0105 w postaci strumienia obiekt\u00f3w, id\u0105cych jeden po drugim (analogiczny format stosowany jest przy przesy\u0142aniu obiekt\u00f3w poleceniami git fetch i git push). Dla ka\u017cdego pliku paczki tworzony jest plik indeksowy (.idx), kt\u00f3ry pozwala na bardzo szybkie okre\u015blenie przesuni\u0119cia w pliku paczki dla danego obiektu na podstawie identyfikatora obiektu.     <\/p>\n<p>Now included in the latest release, the reverse index aims to optimize the process of identifying an object ID based on the object's location information in the pack file. Previously, this transformation was performed on-the-fly during the parsing of the pack file and was only stored in memory, which did not allow for the reuse of such indexes and forced the index to be generated each time. The indexing operation involves building an array of 'object-position' pairs and sorting it by position, which can take a significant amount of time for large pack files.     <\/p>\n<p>Na przyk\u0142ad operacja wy\u015bwietlania zawarto\u015bci obiekt\u00f3w, w kt\u00f3rej u\u017cywany jest indeks bezpo\u015bredni, by\u0142a wykonywana 62 razy szybciej ni\u017c operacja pokazywania rozmiaru obiekt\u00f3w, dla kt\u00f3rej dane dotycz\u0105ce powi\u0105zania pozycji z obiektem nie by\u0142y indeksowane. Po zastosowaniu indeksu odwrotnego wskazane operacje zacz\u0119\u0142y zajmowa\u0107 mniej wi\u0119cej ten sam czas. Indeksy odwrotne r\u00f3wnie\u017c przyspieszaj\u0105 operacje przesy\u0142ania obiekt\u00f3w przy wykonywaniu polece\u0144 fetch i push dzi\u0119ki bezpo\u015bredniemu przesy\u0142aniu ju\u017c gotowych danych z dysku.    <center><img decoding=\"async\" alt=\"Dost\u0119pny jest system kontroli wersji Git 2.41.\" src=\"\/wp-content\/uploads\/2023\/06\/ed6cb7102da37d1262fd3079ac983158.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>      <\/p>\n<li class=\"l\"> The 'credential helper' protocol, used for transmitting credentials when accessing repositories with restricted access, has added support for passing WWW-Authenticate headers between the credential handler and the service performing authentication. The support for the WWW-Authenticate header allows the transmission of OAuth scope parameters for more granular control over user access to repositories and delineation of areas accessible for requests.\n<li class=\"l\"> Do zespo\u0142u for-each-ref dodano opcj\u0119 formatowania &#171;%(ahead-behind:&lt;base&gt;)&#187;, umo\u017cliwiaj\u0105c\u0105 uzyskanie informacji o liczbie commit\u00f3w obecnych lub brakuj\u0105cych w okre\u015blonej ga\u0142\u0119zi w por\u00f3wnaniu z inn\u0105 ga\u0142\u0119zi\u0105 (w jakim stopniu jedna ga\u0142\u0105\u017a jest op\u00f3\u017aniona lub wyprzedza drug\u0105 na poziomie commit\u00f3w). Wcze\u015bniej, aby uzyska\u0107 podobne informacje, nale\u017ca\u0142o wykona\u0107 dwie oddzielne komendy: &#171;git rev-list &#8212;count main..my-feature&#187; w celu uzyskania liczby unikalnych commit\u00f3w dla ga\u0142\u0119zi oraz &#171;git rev-list &#8212;count my-feature..main&#187; w celu uzyskania liczby brakuj\u0105cych commit\u00f3w. Teraz tego typu obliczenia mo\u017cna sprowadzi\u0107 do jednej komendy, co u\u0142atwia pisanie skrypt\u00f3w i skraca czas wykonania. Na przyk\u0142ad, aby pokaza\u0107 ga\u0142\u0119zie, kt\u00f3re nie przesz\u0142y scalania, i oceni\u0107 op\u00f3\u017anienie lub wyprzedzenie ich g\u0142\u00f3wnej ga\u0142\u0119zi, mo\u017cna u\u017cy\u0107 jednoliniowego skryptu:           $ git for-each-ref &#8212;no-merged=origin\/HEAD &#092;       &#8212;format=&#8217;%(refname:short) %(ahead-behind:origin\/HEAD)&#8217; &#092;       refs\/heads\/tb\/ | column -t       tb\/cruft-extra-tips 2 96     tb\/for-each-ref&#8212;exclude 16 96     tb\/roaring-bitmaps 47 3      zamiast wcze\u015bniej stosowanego skryptu, kt\u00f3ry dzia\u0142a\u0142 17 razy wolniej:         $ git for-each-ref &#8212;format=&#8217;%(refname:short)&#8217; &#8212;no-merged=origin\/HEAD &#092;       refs\/heads\/tb |       while read ref       do         ahead=&#187;$(git rev-list &#8212;count origin\/HEAD..$ref)&#187;         behind=&#187;$(git rev-list &#8212;count $ref..origin\/HEAD)&#187;         printf &#171;%s %d %d&#092;n&#187; &#171;$ref&#187; &#171;$ahead&#187; &#171;$behind&#187;       done | column -t       tb\/cruft-extra-tips 2 96     tb\/for-each-ref&#8212;exclude 16 96     tb\/roaring-bitmaps 47 3\n<li class=\"l\"> Do komendy &#171;git fetch&#187; dodano opcj\u0119 &#171;&#8212;porcelain&#187;, kt\u00f3ra, je\u015bli jest u\u017cyta, generuje wyj\u015bcie w formacie &#171;&lt;flag&gt; &lt;old-object-id&gt; &lt;new-object-id&gt; &lt;local-reference&gt;&#187;, mniej czytelny, ale bardziej odpowiedni do analizy w skryptach.\n<li class=\"l\"> Dodano ustawienie &#171;fetch.hideRefs&#187;, kt\u00f3re pozwala przyspieszy\u0107 operacje &#171;git fetch&#187; dzi\u0119ki ukrywaniu cz\u0119\u015bci referencji w lokalnym repozytorium podczas etapu weryfikacji przez serwer pe\u0142nego zbioru obiekt\u00f3w, co pozwala zaoszcz\u0119dzi\u0107 czas, ograniczaj\u0105c weryfikacj\u0119 tylko do $remote, co pozwoli\u0142o skr\u00f3ci\u0107 czas wykonania operacji &#171;git fetch&#187; z 20 minut do 30 sekund.       $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs\/remotes\/$remote &#092;     fetch $remote <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/server\/\"   title=\"serwer\u00f3w\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1714\">serwer\u00f3w<\/a>, z kt\u00f3rych bezpo\u015brednio wydobywane s\u0105 dane. Na przyk\u0142ad, przeprowadzaj\u0105c test na systemie z repozytoriami zawieraj\u0105cymi du\u017c\u0105 liczb\u0119 \u015bledzonych zewn\u0119trznych odniesie\u0144, wykluczenie wszystkich link\u00f3w, z wyj\u0105tkiem tych skierowanych do docelowego <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/server\/dts-shicago\/\"   title=\"serwera\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2936\">serwera<\/a> W komendzie &#171;git fsck&#187; wprowadzono mo\u017cliwo\u015b\u0107 sprawdzania uszkodze\u0144, zgodno\u015bci sum kontrolnych oraz poprawno\u015bci warto\u015bci w bitmapach dost\u0119pno\u015bci i odwr\u00f3conych indeksach.\n<li class=\"l\"> W komendzie &#171;git fsck&#187; zrealizowano mo\u017cliwo\u015b\u0107 sprawdzania uszkodze\u0144, zgodno\u015bci sum kontrolnych oraz poprawno\u015bci warto\u015bci w bitmapach dost\u0119pno\u015bci i odwr\u00f3conych indeksach.\n<li class=\"l\"> W zespole &#171;git clone &#8212;local&#187; wprowadzono wy\u015bwietlanie b\u0142\u0119du w przypadku pr\u00f3by kopiowania z repozytorium zawieraj\u0105cego symboliczne linki wewn\u0105trz $GIT_DIR.        <\/ul>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=59234\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u043e\u0441\u043b\u0435 \u0442\u0440\u0451\u0445 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438 Git 2.41. Git \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445, \u043d\u0430\u0434\u0451\u0436\u043d\u044b\u0445 \u0438 \u0432\u044b\u0441\u043e\u043a\u043e\u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u0441\u0442\u0435\u043c \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0432\u0435\u0440\u0441\u0438\u044f\u043c\u0438, \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0449\u0435\u0439 \u0433\u0438\u0431\u043a\u0438\u0435 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043d\u0435\u043b\u0438\u043d\u0435\u0439\u043d\u043e\u0439 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0431\u0430\u0437\u0438\u0440\u0443\u044e\u0449\u0438\u0435\u0441\u044f \u043d\u0430 \u043e\u0442\u0432\u0435\u0442\u0432\u043b\u0435\u043d\u0438\u0438 \u0438 \u0441\u043b\u0438\u044f\u043d\u0438\u0438 \u0432\u0435\u0442\u043e\u043a. \u0414\u043b\u044f \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u044f \u0446\u0435\u043b\u043e\u0441\u0442\u043d\u043e\u0441\u0442\u0438 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0438 \u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0441\u0442\u0438 \u043a \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f\u043c &#171;\u0437\u0430\u0434\u043d\u0438\u043c \u0447\u0438\u0441\u043b\u043e\u043c&#187; \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f \u043d\u0435\u044f\u0432\u043d\u043e\u0435 \u0445\u0435\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u0441\u0435\u0439 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u0432 \u043a\u0430\u0436\u0434\u043e\u043c \u043a\u043e\u043c\u043c\u0438\u0442\u0435, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":108814,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-108813","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u043e\u0441\u043b\u0435 \u0442\u0440\u0451\u0445 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438 Git 2.41.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/news\/dostupna-sistema-upravleniya-ishodnymi-tekstami-git-2-41\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438 Git 2.41 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u043e\u0441\u043b\u0435 \u0442\u0440\u0451\u0445 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438 Git 2.41.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/news\/dostupna-sistema-upravleniya-ishodnymi-tekstami-git-2-41\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2023-06-02T13:10:16+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2023-06-02T15:30:17+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Dost\u0119pny system zarz\u0105dzania kodem \u017ar\u00f3d\u0142owym Git 2.41 | ProHoster","description":"Po trzech miesi\u0105cach prac opublikowano wydanie rozproszonego systemu zarz\u0105dzania kodem \u017ar\u00f3d\u0142owym Git 2.41.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/news\/dostupna-sistema-upravleniya-ishodnymi-tekstami-git-2-41","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0414\u043e\u0441\u0442\u0443\u043f\u043d\u0430 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438 Git 2.41 | ProHoster","og:description":"\u041f\u043e\u0441\u043b\u0435 \u0442\u0440\u0451\u0445 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u043c\u0438 \u0442\u0435\u043a\u0441\u0442\u0430\u043c\u0438 Git 2.41.","og:url":"https:\/\/prohoster.info\/pl\/blog\/news\/dostupna-sistema-upravleniya-ishodnymi-tekstami-git-2-41","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2023-06-02T13:10:16+00:00","article:modified_time":"2023-06-02T15:30:17+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"108813","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2026-02-09 16:51:35","updated":"2026-02-09 21:42:06","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/108813","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=108813"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/108813\/revisions"}],"predecessor-version":[{"id":160216,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/108813\/revisions\/160216"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/108814"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=108813"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=108813"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=108813"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}