{"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\/pt\/blog\/news\/dostupna-sistema-upravleniya-ishodnymi-tekstami-git-2-41","title":{"rendered":"O sistema de controle de vers\u00f5es Git 2.41 est\u00e1 dispon\u00edvel","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Ap\u00f3s tr\u00eas meses de desenvolvimento, foi publicado o lan\u00e7amento do sistema distribu\u00eddo de controle de vers\u00f5es Git 2.41. O Git \u00e9 um dos sistemas de controle de vers\u00f5es mais populares, confi\u00e1veis e de alto desempenho, oferecendo ferramentas flex\u00edveis para desenvolvimento n\u00e3o linear, baseadas em ramifica\u00e7\u00f5es e mesclagens. Para garantir a integridade do hist\u00f3rico e a resist\u00eancia a altera\u00e7\u00f5es 'retroativas', \u00e9 utilizado um hashing impl\u00edcito de todo o hist\u00f3rico anterior em cada commit, al\u00e9m de ser poss\u00edvel a verifica\u00e7\u00e3o com assinaturas digitais dos desenvolvedores para tags e commits espec\u00edficos.     <\/p>\n<p>Em compara\u00e7\u00e3o com a vers\u00e3o anterior, a nova vers\u00e3o incorpora 542 altera\u00e7\u00f5es, preparadas com a participa\u00e7\u00e3o de 95 desenvolvedores, dos quais 29 participaram do desenvolvimento pela primeira vez. As principais inova\u00e7\u00f5es s\u00e3o:  <\/p>\n<ul>\n<li class=\"l\"> Foi aprimorado o tratamento de objetos inacess\u00edveis (unreachable), para os quais n\u00e3o h\u00e1 refer\u00eancias no reposit\u00f3rio (n\u00e3o referenciados por branches ou tags). Objetos inacess\u00edveis s\u00e3o removidos pelo coletor de lixo (garbage collector), mas permanecem no reposit\u00f3rio por um certo tempo antes da exclus\u00e3o, para evitar estados de corrida. Para rastrear o per\u00edodo em que os objetos inacess\u00edveis est\u00e3o presentes, \u00e9 necess\u00e1rio vincular a eles etiquetas com o hor\u00e1rio de altera\u00e7\u00e3o desses objetos, o que impede que sejam armazenados em um \u00fanico arquivo pack, onde todos os objetos t\u00eam um hor\u00e1rio de modifica\u00e7\u00e3o comum. Anteriormente, cada objeto inacess\u00edvel era salvo em um arquivo separado, o que gerava problemas quando havia um grande n\u00famero de objetos inacess\u00edveis rec\u00e9m-criados, que ainda n\u00e3o podiam ser exclu\u00eddos. No novo lan\u00e7amento, para empacotar objetos inacess\u00edveis, o mecanismo 'cruft packs' \u00e9 utilizado por padr\u00e3o, permitindo armazenar todos os objetos inacess\u00edveis em um \u00fanico arquivo pack, enquanto os dados sobre o hor\u00e1rio de modifica\u00e7\u00e3o de cada objeto s\u00e3o refletidos em uma tabela separada, armazenada em um arquivo com a extens\u00e3o '.mtimes' e vinculada por meio de um arquivo \u00edndice com a extens\u00e3o '.idx'.    <center><img decoding=\"async\" alt=\"O sistema de controle de vers\u00f5es Git 2.41 est\u00e1 dispon\u00edvel\" src=\"\/wp-content\/uploads\/2023\/06\/1158b26b1dfd1c16c93017669224d7a4.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>\n<li class=\"l\"> Foi ativado por padr\u00e3o o rastreamento em disco do \u00edndice reverso (revindex) para arquivos pack. Durante o teste no reposit\u00f3rio torvalds\/linux, a aplica\u00e7\u00e3o do \u00edndice reverso acelerou opera\u00e7\u00f5es que consomem muitos recursos, como 'git push', em 1,49 vezes, enquanto opera\u00e7\u00f5es simples, como calcular o tamanho de um \u00fanico objeto usando 'git cat-file --batch='%(objectsize:disk)'', foram aceleradas em 77 vezes. Os arquivos ('.rev') com o \u00edndice reverso ser\u00e3o salvos dentro do reposit\u00f3rio no diret\u00f3rio '.git\/objects\/pack'.\n<p>Lembramos que o Git armazena todos os dados na forma de objetos, que s\u00e3o colocados em arquivos separados. Para aumentar a efici\u00eancia do trabalho com o reposit\u00f3rio, os objetos s\u00e3o colocados em arquivos pack, nos quais as informa\u00e7\u00f5es s\u00e3o apresentadas na forma de uma sequ\u00eancia de objetos (um formato semelhante \u00e9 usado na transmiss\u00e3o de objetos pelos comandos git fetch e git push). Para cada arquivo pack, um arquivo de \u00edndice (.idx) \u00e9 criado, permitindo que, com a identifica\u00e7\u00e3o do objeto, a posi\u00e7\u00e3o no arquivo pack onde o dado objeto est\u00e1 armazenado seja determinada muito rapidamente.     <\/p>\n<p>O \u00edndice reverso inclu\u00eddo na nova vers\u00e3o visa otimizar o processo de identifica\u00e7\u00e3o de objetos com base nas informa\u00e7\u00f5es de localiza\u00e7\u00e3o no arquivo pack. Anteriormente, essa convers\u00e3o era realizada em tempo real durante a an\u00e1lise do arquivo pack e era armazenada apenas na mem\u00f3ria, o que impedia a reutiliza\u00e7\u00e3o de tais \u00edndices e for\u00e7ava a gera\u00e7\u00e3o do \u00edndice a cada vez. A opera\u00e7\u00e3o de constru\u00e7\u00e3o do \u00edndice consiste na cria\u00e7\u00e3o de um array de pares \"objeto-posic\u00e3o\" e sua ordena\u00e7\u00e3o por posi\u00e7\u00e3o, o que pode levar muito tempo para arquivos pack grandes.     <\/p>\n<p>Por exemplo, a opera\u00e7\u00e3o de exibi\u00e7\u00e3o do conte\u00fado dos objetos, na qual \u00e9 utilizado o \u00edndice direto, foi executada 62 vezes mais r\u00e1pido do que a opera\u00e7\u00e3o de exibi\u00e7\u00e3o do tamanho dos objetos, para a qual os dados de associa\u00e7\u00f5es de posi\u00e7\u00e3o com objeto n\u00e3o foram indexados. Ap\u00f3s a utiliza\u00e7\u00e3o do \u00edndice reverso, essas opera\u00e7\u00f5es passaram a levar aproximadamente o mesmo tempo. \u00cdndices reversos tamb\u00e9m permitem acelerar as opera\u00e7\u00f5es de envio de objetos ao executar comandos fetch e push, devido \u00e0 transmiss\u00e3o direta de dados j\u00e1 prontos a partir do disco.    <center><img decoding=\"async\" alt=\"O sistema de controle de vers\u00f5es Git 2.41 est\u00e1 dispon\u00edvel\" src=\"\/wp-content\/uploads\/2023\/06\/ed6cb7102da37d1262fd3079ac983158.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>      <\/p>\n<li class=\"l\"> No protocolo \"credential helper\", utilizado para transmitir credenciais ao acessar reposit\u00f3rios com acesso restrito, foi adicionada a suporte \u00e0 transmiss\u00e3o de cabe\u00e7alhos WWW-Authenticate entre o manipulador de credenciais e o servi\u00e7o que realiza a autentica\u00e7\u00e3o. O suporte ao cabe\u00e7alho WWW-Authenticate permite transmitir par\u00e2metros de escopo OAuth para uma segmenta\u00e7\u00e3o mais granular do acesso do usu\u00e1rio aos reposit\u00f3rios e delimita\u00e7\u00e3o das \u00e1reas dispon\u00edveis para solicita\u00e7\u00f5es.\n<li class=\"l\"> A op\u00e7\u00e3o de formata\u00e7\u00e3o &#171;%(ahead-behind:&lt;base&gt;)&#187; foi adicionada ao comando for-each-ref, permitindo obter de uma s\u00f3 vez informa\u00e7\u00f5es sobre o n\u00famero de commits presentes ou ausentes em um determinado ramo em rela\u00e7\u00e3o a outro (quanto um ramo est\u00e1 atrasado ou \u00e0 frente do outro em termos de commits). Anteriormente, para obter essas informa\u00e7\u00f5es, era necess\u00e1rio executar dois comandos separados: &#171;git rev-list &#8212;count main..my-feature&#187; para obter o n\u00famero de commits \u00fanicos do ramo e &#171;git rev-list &#8212;count my-feature..main&#187; para obter o n\u00famero de commits ausentes. Agora, esses c\u00e1lculos podem ser reduzidos a um \u00fanico comando, o que simplifica a escrita de manipuladores e reduz o tempo de execu\u00e7\u00e3o. Por exemplo, para mostrar ramos que n\u00e3o foram mesclados e avaliar seu atraso ou avan\u00e7o em rela\u00e7\u00e3o ao ramo principal, pode-se usar a linha de comando:           $ 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      em vez do script anteriormente utilizado, que executava 17 vezes mais devagar:         $ 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\"> A op\u00e7\u00e3o &#171;&#8212;porcelain&#187; foi adicionada ao comando &#171;git fetch&#187;, que, ao ser especificada, gera uma sa\u00edda no formato &#171;&lt;flag&gt; &lt;old-object-id&gt; &lt;new-object-id&gt; &lt;local-reference&gt;&#187;, menos leg\u00edvel, mas mais conveniente para an\u00e1lise em scripts.\n<li class=\"l\"> Adicionada a configura\u00e7\u00e3o &#171;fetch.hideRefs&#187;, que permite acelerar as opera\u00e7\u00f5es do &#171;git fetch&#187; ocultando parte das refer\u00eancias no reposit\u00f3rio local durante a verifica\u00e7\u00e3o do envio do conjunto completo de objetos pelo servidor, economizando tempo ao limitar a verifica\u00e7\u00e3o apenas ao $remote. <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pt\/server\/\"   title=\"servidores\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1714\">servidores<\/a>, dos quais os dados s\u00e3o extra\u00eddos diretamente. Por exemplo, ao realizar um teste em um sistema com reposit\u00f3rios que cont\u00eam um grande n\u00famero de links externos rastreados, a exclus\u00e3o de todos os links, exceto aqueles que apontam para o destino <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pt\/server\/dts-shicago\/\"   title=\"servidor\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2936\">servidor<\/a> $remote, o que reduziu o tempo de execu\u00e7\u00e3o da opera\u00e7\u00e3o &#171;git fetch&#187; de 20 minutos para 30 segundos.       $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs\\\/remotes\\\/$remote &#092;     fetch $remote\n<li class=\"l\"> O comando &#171;git fsck&#187; agora implementa a verifica\u00e7\u00e3o de danos, conformidade de somas de verifica\u00e7\u00e3o e corre\u00e7\u00e3o de valores em mapas de bits de disponibilidade e \u00edndices inversos.\n<li class=\"l\"> Na equipe &#171;git clone &#8212;local&#187;, foi implementada a exibi\u00e7\u00e3o de erro ao tentar copiar de um reposit\u00f3rio que cont\u00e9m links simb\u00f3licos dentro de $GIT_DIR.        <\/ul>\n<p>Fonte: <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.3 - 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\/pt\/blog\/news\/dostupna-sistema-upravleniya-ishodnymi-tekstami-git-2-41\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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\udd47Sistema de controle de vers\u00f5es Git 2.41 dispon\u00edvel | ProHoster","description":"Ap\u00f3s tr\u00eas meses de desenvolvimento, foi publicado o lan\u00e7amento do sistema distribu\u00eddo de controle de vers\u00f5es Git 2.41.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/news\/dostupna-sistema-upravleniya-ishodnymi-tekstami-git-2-41","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/108813","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=108813"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/108813\/revisions"}],"predecessor-version":[{"id":160216,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/108813\/revisions\/160216"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/108814"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=108813"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=108813"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=108813"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}