{"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\/en\/blog\/news\/dostupna-sistema-upravleniya-ishodnymi-tekstami-git-2-41","title":{"rendered":"The Git 2.41 source code management system is available.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>After three months of development, version 2.41 of the distributed source code management system Git has been released. Git is one of the most popular, reliable, and high-performance version control systems, providing flexible tools for non-linear development based on branching and merging. To ensure the integrity of the history and resilience against 'backdating' changes, implicit hashing of the entire previous history in each commit is used. It's also possible to verify individual tags and commits with digital signatures from developers.     <\/p>\n<p>Compared to the previous release, this new version includes 542 changes made by 95 developers, 29 of whom participated in the development for the first time. Key innovations:  <\/p>\n<ul>\n<li class=\"l\"> The handling of unreachable objects, which have no references (neither branches nor tags) in the repository, has been improved. Unreachable objects are removed by the garbage collector, but they remain in the repository for a certain time before deletion to avoid race conditions. To track the period during which unreachable objects exist, timestamps need to be associated with them, which prevents their storage in a single pack file where all objects share a common modification time. Previously, each unreachable object was saved in a separate file, causing problems when there were many recent unreachable objects not yet subject to deletion. In the new release, the 'cruft packs' mechanism is used by default for packaging unreachable objects, allowing all unreachable objects to be stored in one pack file, while modification time data for each object is reflected in a separate table, stored in a file with the '.mtimes' extension and linked via an index file with the '.idx' extension.    <center><img decoding=\"async\" alt=\"The Git 2.41 source code management system is available.\" src=\"\/wp-content\/uploads\/2023\/06\/1158b26b1dfd1c16c93017669224d7a4.png\" style=\"display:block;margin: 0 auto;\" \/><\/center>\n<li class=\"l\"> The reverse index (revindex) for pack files is enabled by default for on-disk storage. Testing on the torvalds\/linux repository revealed that using the reverse index accelerated resource-intensive operations such as 'git push' by 1.49 times, while simple operations, like calculating the size of a single object using 'git cat-file --batch='%(objectsize:disk)'', were sped up by 77 times. Files ('.rev') containing the reverse index will be saved within the repository in the '.git\/objects\/pack' directory.\n<p>Recall that Git stores all data in the form of objects, which are placed in separate files. To increase efficiency when working with the repository, objects are additionally placed in pack files, where information is presented as a stream of objects following one another (a similar format is used when transferring objects with the git fetch and git push commands). For each pack file, an index file (.idx) is created, allowing rapid identification of the offset in the pack file for a given object's identifier.     <\/p>\n<p>The newly included reverse index aims to optimize the process of identifying an object ID based on the object's placement information in the pack file. Previously, such conversions were performed on-the-fly during the parsing of the pack file and were only stored in memory, which did not allow for the reuse of such indices and required generating the index each time. The index-building operation involves constructing an array of 'object-position' pairs and sorting it by position, which can take a considerable amount of time for large pack files.     <\/p>\n<p>For example, the operation of outputting the contents of objects using the direct index was 62 times faster than the operation of showing the sizes of objects, for which position-to-object data was not indexed. After using the reverse index, these operations took about the same time. Reverse indexes also allow for speeding up object transmission operations when executing fetch and push commands by directly transferring already prepared data from the disk.    <center><img decoding=\"async\" alt=\"The Git 2.41 source code management system is available.\" 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 passing credentials when accessing repositories with restricted access, has added support for transmitting WWW-Authenticate headers between the credential handler and the authentication service. 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 the areas available for requests.\n<li class=\"l\"> The command for-each-ref has been enhanced with the formatting option &#171;%(ahead-behind:&lt;base&gt;)&#187;, allowing users to obtain information about the number of commits present or absent in a specific branch compared to another branch (indicating how much one branch is ahead or behind another in terms of commits). Previously, to obtain such information, two separate commands were required: &#171;git rev-list &#8212;count main..my-feature&#187; to count unique commits of the branch, and &#171;git rev-list &#8212;count my-feature..main&#187; to count the missing commits. Now, these calculations can be reduced to a single command, simplifying the writing of handlers and decreasing execution time. For example, to display branches that have not been merged and to assess their lead or lag compared to the main branch, you can use the one-liner: $ 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 instead of the previously used script, which runs 17 times slower: $ 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\"> The command &#171;git fetch&#187; has been updated with the option &#171;&#8212;porcelain&#187;, which, when specified, produces output in the format &#171;&lt;flag&gt; &lt;old-object-id&gt; &lt;new-object-id&gt; &lt;local-reference&gt;&#187;, which is less user-friendly but more convenient for parsing in scripts.\n<li class=\"l\"> A new setting &#171;fetch.hideRefs&#187; has been added, which speeds up &#171;git fetch&#187; operations by hiding some references in the local repository during the verification stage when the server sends the complete set of objects, thus saving time by limiting the check only to $remote. <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/en\/server\/\"   title=\"servers\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1714\">servers<\/a>, from which data is extracted directly. For example, during a test on a system with repositories containing a large number of tracked external references, excluding all references except those directed to the target <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/en\/server\/dts-shicago\/\"   title=\"server\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2936\">server<\/a> This has reduced the execution time of the &#171;git fetch&#187; operation from 20 minutes to 30 seconds. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs\\\/remotes\\\/$remote &#092; fetch $remote\n<li class=\"l\"> The command &#171;git fsck&#187; has been enhanced to verify for corruption, checksum correctness, and the accuracy of values in availability bitmaps and reverse indices.\n<li class=\"l\"> In the team, the &#171;git clone &#8212;local&#187; command has implemented error output when attempting to copy from a repository that contains symbolic links within $GIT_DIR.        <\/ul>\n<p>Source: <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\/en\/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=\"en_US\" \/>\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\/en\/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\udd47The Git 2.41 source control system is available | ProHoster","description":"After three months of development, version 2.41 of the distributed source control system Git has been released.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/news\/dostupna-sistema-upravleniya-ishodnymi-tekstami-git-2-41","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","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\/en\/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\/en\/wp-json\/wp\/v2\/posts\/108813","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=108813"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/108813\/revisions"}],"predecessor-version":[{"id":160216,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/108813\/revisions\/160216"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/108814"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=108813"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=108813"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=108813"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}