{"id":99450,"date":"2021-03-16T16:22:41","date_gmt":"2021-03-16T14:22:41","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/vypusk-raspredelyonnoj-sistemy-upravleniya-ishodnymi-tekstami-git-2-31"},"modified":"2021-03-16T16:22:41","modified_gmt":"2021-03-16T14:22:41","slug":"vypusk-raspredelyonnoj-sistemy-upravleniya-ishodnymi-tekstami-git-2-31","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/news\/vypusk-raspredelyonnoj-sistemy-upravleniya-ishodnymi-tekstami-git-2-31","title":{"rendered":"Release of distributed version control system Git 2.31","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>A new release of the distributed version control system Git 2.31 is now available. Git is one of the most popular, reliable, and high-performance version control systems, offering flexible nonlinear development tools based on branching and merging. Implicit hashing of the entire previous history in every commit is used to ensure the integrity of the history and resilience to 'backward' changes, while the digital signatures of developers can verify individual tags and commits.       <\/p>\n<p>Compared to the previous release, the new version includes 679 changes, prepared with the participation of 85 developers, of which 23 participated in the development for the first time. Key innovations include:  <\/p>\n<ul>\n<li class=\"l\"> The command 'git maintenance' has been added, allowing periodic tasks to be performed on systems that do not support cron. For example, with the new command, it is possible to set up a periodic process for packing the repository, so you don't have to wait for the completion of the repository's lock during automatic packing while executing various commands. The 'git maintenance' command enables optimizations and maintenance operations to keep the repository structure optimal in the background without blocking the interactive session \u2014 every hour, it preloads fresh objects from the remote repository and updates the commit graph file, and every night it triggers the repository packing process.\n<li class=\"l\"> Support for maintaining a reverse index (revindex) on disk for pack files has been added. Recall that Git stores all data in the form of objects that are placed in separate files. To improve efficiency when working with the repository, objects are additionally placed in pack files, where information is represented in the form of a stream of objects following one another (a similar format is used when transferring objects with git fetch and git push commands). An index file (.idx) is created for each pack file, allowing for very quick determination of the offset in the pack file by the object's identifier. The proposed reverse index (.rev) in Git 2.31 aims to optimize the process of identifying an object's identifier based on information about the object's placement in the pack file.\n<p>Previously, such transformation was carried out 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 generation of 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 retrieving object content using a direct index was performed 62 times faster than the operation of displaying object sizes, for which position-to-object relationship data was not indexed. After using a reverse index, the mentioned operations took approximately the same amount of time. Reverse indexes also help speed up object submission operations when executing fetch and push commands by directly transferring already prepared data from disk. By default, reverse indexes are not created; to generate them, the setting 'git config pack.writeReverseIndex true' must be enabled, followed by packing the repository with the command 'git repack -Ad'.    <\/p>\n<li class=\"l\"> Performance optimizations have been added based on the introduction of the commit-graph file format, which is used to optimize access to commit information, as well as new data about commit generation numbers that can be used to accelerate additional operations with commits.\n<li class=\"l\"> The ability to override the default main branch name used in new repositories (init.defaultBranch setting) has been enhanced. When accessing external repositories, git tries to retrieve the branch that HEAD points to, i.e., if the external <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/en\/server\/\"   title=\"server\" data-wpil-keyword-link=\"linked\">server<\/a> defaults to using the 'main' branch, so the 'git clone' operation will attempt to locally fetch 'main'. In Git 2.31, support for this type of fetching is now also implemented for empty repositories. For example, when locally cloning a new repository before adding the first patches, the local copy will now have the external exposure set. <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/en\/server\/dts-dronten\/\"   title=\"server\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2621\">server<\/a> default branch name.\n<li class=\"l\"> The 'git rev-list' command has been enhanced with the '--disk-usage' option, which provides summary information about the size of objects.\n<li class=\"l\"> In anticipation of the upcoming backend replacement for merge operations, rename detection has been significantly optimized.\n<li class=\"l\"> Support for the outdated PCRE1 regular expression library has been discontinued.\n<li class=\"l\"> The ability to force the prohibition of using abbreviated references has been provided, operating independently of the hash algorithm. The prohibition is enabled by assigning the value 'no' to the core.abbrev parameter.\n<li class=\"l\"> The 'git rev-parse' command has been enhanced with the '--path-format=(absolute|relative)' option to explicitly define whether to output relative or absolute paths.\n<li class=\"l\"> In scripts for command completion in Bash, the addition of completion rules for custom 'git' subcommands has been simplified.\n<li class=\"l\"> The 'git bundle' command now includes the '--stdin' option for reading references from standard input.\n<li class=\"l\"> A new option '--diff-merges=' has been added to the 'git log' command.\n<li class=\"l\"> The 'git ls-files' command has been enhanced with the '--deduplicatecan' option to eliminate duplicates when outputting.\n<li class=\"l\"> New masks for excluding commit ranges have been added \u2014 '^!' and '^-'.\n<li class=\"l\"> The 'git range-diff' command has been enhanced with the '--left-only' and '--right-only' options to show only one side of the compared range.\n<li class=\"l\"> The commands &#171;git diff&#187; and &#171;git log&#187; have been enhanced with the options &#8212;skip-to=&lt;path&gt;&#187; and &#171;&#8212;rotate-to=&lt;path&gt;&#187; to skip or move to the end of initial paths.\n<li class=\"l\"> The command &#171;git difftool&#187; now includes the &#171;&#8212;skip-to=&lt;path&gt;&#187; option to resume an interrupted session from any specified path.\n<li class=\"l\"> The Code of Conduct, defining the main principles for resolving conflicts between developers, has been updated to version 2.0 (previously version 1.4 was used).<br \/>\n<br \/>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=54765\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u043e\u0441\u0442\u0443\u043f\u0435\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.31. 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, \u0442\u0430\u043a\u0436\u0435 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e \u0443\u0434\u043e\u0441\u0442\u043e\u0432\u0435\u0440\u0435\u043d\u0438\u0435 \u0446\u0438\u0444\u0440\u043e\u0432\u044b\u043c\u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-99450","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u043e\u0441\u0442\u0443\u043f\u0435\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.31.\" \/>\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\/vypusk-raspredelyonnoj-sistemy-upravleniya-ishodnymi-tekstami-git-2-31\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\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\u0412\u044b\u043f\u0443\u0441\u043a \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\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.31 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u043e\u0441\u0442\u0443\u043f\u0435\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.31.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/news\/vypusk-raspredelyonnoj-sistemy-upravleniya-ishodnymi-tekstami-git-2-31\" \/>\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=\"2021-03-16T14:22:41+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2021-03-16T14:22:41+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\udd47Release of the distributed version control system Git 2.31 | ProHoster","description":"The release of the distributed version control system Git 2.31 is now available.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/news\/vypusk-raspredelyonnoj-sistemy-upravleniya-ishodnymi-tekstami-git-2-31","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\u0412\u044b\u043f\u0443\u0441\u043a \u0440\u0430\u0441\u043f\u0440\u0435\u0434\u0435\u043b\u0451\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.31 | ProHoster","og:description":"\u0414\u043e\u0441\u0442\u0443\u043f\u0435\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.31.","og:url":"https:\/\/prohoster.info\/en\/blog\/news\/vypusk-raspredelyonnoj-sistemy-upravleniya-ishodnymi-tekstami-git-2-31","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":"2021-03-16T14:22:41+00:00","article:modified_time":"2021-03-16T14:22:41+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"99450","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":null,"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":"2021-03-16 14:26:20","updated":"2026-02-09 21:38:09","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\/99450","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=99450"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/99450\/revisions"}],"predecessor-version":[{"id":172923,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/99450\/revisions\/172923"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=99450"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=99450"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=99450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}