The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

30.11.2016 14:48  Релиз распределенной системы управления исходными текстами Git 2.11.0

Представлен выпуск распределенной системы управления исходными текстами Git 2.11.0. Git является одной из самых популярных, надёжных и высокопроизводительных систем управления версиями, предоставляющей гибкие средства нелинейной разработки, базирующиеся на ответвлении и слиянии веток. Для обеспечения целостности истории и устойчивости к изменениям задним числом используются неявное хеширование всей предыдущей истории в каждом коммите, также возможно удостоверение цифровыми подписями разработчиков отдельных тегов и коммитов. Из проектов, разрабатываемых с использованием Git, можно отметить ядро Linux, Android, LibreOffice, Systemd, X.Org, Wayland, Mesa, GStreamer, Wine, Debian, DragonFly BSD, Perl, Eclipse, GNOME, KDE, Qt, Ruby on Rails, PostgreSQL, VideoLAN, PHP, Xen, Minix.

По сравнению с прошлым выпуском в новую версию принято 673 изменения, подготовленных при участии 74 разработчиков, из которых 15 впервые приняли своё участие в разработке. Основные изменения:

  • Переработан алгоритм формирования сокращённой формы отображения идентификаторов объектов. Так как полный хэш SHA-1 состоит из 40 шестнадцатеричных цифр и достаточно трудно воспринимается пользователем, в git активно применяется сокращённая система отображения, которая значительно упрощает ввод идентификаторов различных объектов. Чтобы избежать коллизий, приводящих к ссылкам сокращённой формы на более чем один объект в репозитории, до сих пор в Git применялся адаптивный алгоритм формирования идентификатора - вначале формируется 7-символьное представление хэша, которое оставляется если в репозитории нет других объектов с таким идентификатором, и доводится до 8- или 9-символьного варианта в случае обнаружения пересечений.

    Для 7-символьных имён коллизии начинают проявляется в репозиториях, содержащих десятки тысяч объектов. В репозитории с ядром Linux, насчитывающем 5 млн объектов, коллизии наблюдаются для идентификаторов, размером менее 12-символов. Применяемый подход обладает существенным недостатком: отсутствие коллизии в текущий момент не исключает их появление для объектов, которые будут добавлены в будущем. В небольших репозиториях вероятность появления отложенной коллизии невелика, но становится вполне ощутимой в больших и динамично развивающихся репозиториях. Например, опубликованный в системе отслеживания ошибок идентификатор со временем может начать указывать на несколько объектов.

    В Git 2.11.0 существенно расширены средства для проверки пересечений при выполнении операций. Минимальный размер сокращённого идентификатора теперь не фиксирован и динамически выбирается в зависимости от числа объектов в репозитории. Кроме того, если в команде задан слишком короткий идентификатор, для которого в репозитории присутствует несколько объектов, кроме предупреждения о выявлении конфликта, в git 2.11 будет выведен список пересекающихся объектов с дополнительной информацией, достаточной для того чтобы уточнить, какой из более длинных идентификаторов выбрать. Информация в списке выводится с учётом контекста - в первую очередь показываются более вероятные кандидаты объектов, например, в "git log" в первую очередь показываются коммиты. Для выбора первичных типов для других команд, таких как "git show", предложена новая опция "core.disambiguate".

  • Ускорен доступ к delta-цепочкам в базе объектов, что положительно сказалось на производительности многих типовых операций. Delta-цепочки служат для объединения дубликатов при хранении файлов с частично совпадающим содержимым. Для эффективного хранения пересечений один из объектов выбирается как базовый, а похожие на него другие объекты оформляются в виде delta - набора инструкций, определяющих имеющиеся изменения. Так как базовый объект со временем может меняться, в качестве основы для других объектов могут выступать delta-изменения, образуя таким образом delta-цепочки (версия 2 сохраняется как delta от версии 1, а версия 3 как delta от версии 2 и т.п.).

    Чем глубже уровень вложенности, тем больше требуется ресурсов для реконструкции содержимого объекта. В режиме агрессивной упаковки "git gc --aggressive" ранее допускалось создание вложенных цепочек, включающих до 250 объектов, но так как при размере цепочки в более 50 объектов разбор становится неэффективным с точки зрения нагрузки на CPU, по умолчанию максимальный уровень вложенности в Git 2.11 ограничен 50 объектами. Для сокращения нагрузки также полностью переработана реализация кэша недавно восстановленных объектов, что позволило примерно на 10% ускорить работу в больших репозиториях. Для дальнейшего повышения эффективности можно увеличить размер кэша через опцию core.deltaBaseCacheLimit, которая по умолчанию установлена в 96 Мб (например, при увеличении до 1 Гб скорость работы с репозиторием ядра Linux возросла на 32%);

  • Увеличена производительность поиска объектов, в условиях наличия нескольких pack-файлов в репозитории. При большом числе объектов, Git упаковывает группы объектов в сводные pack-файлы, включающие также индексы для быстрой выборки. Новые pack-файлы могут появляться при извлечении или приёме изменений по сети, что приводит к постепенному увеличению числа pack-файлов в репозитории до тех пор, пока не будет инициирована операция переупаковки репозитория. Несмотря на то, что разбор отдельного pack-файла достаточно быстрая операция, при наличии большого числа pack-файлов поиск нужного объекта превращается в последовательный перебор pack-файлов.

    Частично проблема решалась через кэш, определяющий привязку объектов к pack-файлам, а в git 2.10 дополнительно был применён более эффективный метод, перебирающий pack-файлы в порядке прошлого обращения к ним. В Git 2.11 сделан ещё один шаг и новая стратегия перебора задействована при выполнении операции переупаковки. Например, внесённые изменения позволили на 70% ускорить переупаковку репозитория с ядром Linux, в котором накопилось 1000 pack-файлов;

  • Увеличена производительность вычислений идентификаторов патчей (patch ID), активно применяемых при выполнении операции "git rebase". Идентификатор патча представляет собой хэш от изменений, внесённых в рамках одного коммита, что позволяет выявлять дубликаты коммитов и избегать операций переименования и слияния коммитов. В Git 2.11 скорость проверки дубликатов на основе идентификаторов патчей в некоторых ситуациях возросла до 50 раз;
  • Реализован новый протокол для организации запуска фильтров, используемых для преобразования содержимого файла в представление локальной файловой системы. В том числе через фильтры можно подключить собственный обработчик, вызываемый при операциях с Git LFS. Старый протокол, подразумевал запуск отдельного процесса для обработки каждого файла, что при наличии большого числа файлов приводило к большим накладным расходам из-за запуска большого числа процессов, а также ограничивало возможности совместного использования ресурсов между разными экземплярами фильтра.

    Добавленный в Git 2.11 новый протокол позволяет организовать цикличную обработку разных файлов в одном процессе. В некоторых ситуациях в репозиториях с большим числом объектов в Git LFS, новый протокол позволяет увеличить скорость применения фильтра в 80 раз. В будущем планируется расширить новый протокол поддержкой выполнения фильтров в асинхронном режиме. Поддержка старого протокола сохранена для обеспечения обратной совместимости;

  • На основе замечаний о работе экспериментальной опции "--compaction-heuristic", включающей дополнительную эвристику для корректного отображения логики изменений, в которых фигурируют повторяющиеся блоки, в Git 2.11 представлен улучшенный алгоритм компоновки отступов. Новый алгоритм доступен через опцию "--indent-heuristic" (настройка diff.indentHeuristic) и возможно будет активирован по умолчанию в одном из следующих выпусков Git;
  • Добавлена поддержка метки "^-1" для исключения показа изменений, уже имеющихся в ветке до выполнения операции слияния. Например, "git log 1234abcd^-1" покажет все коммиты, которые были приняты при слиянии с веткой 1234abcd, но не отобразит уже имеющиеся в ветке коммиты;
  • В contrib/ добавлен модуль для хранения паролей Git при помощи GNOME libsecret;
  • В команду "git diff" добавлена опция "--submodule=diff", при которой будут показаны изменения субмодулей в форме патча между двумя состояниями субмодуля;
  • В "git status" реализован новый машиночитаемый формат вывода для упрощения автоматизированного разбора данных;
  • С целью увеличения производительности продолжена работа по замене shell-скриптов Git на программы на языке Си.


  1. Главная ссылка к новости (https://github.com/blog/2288-g...)
  2. OpenNews: Представлена децентрализованная СУБД Noms, основанная на идеях Git
  3. OpenNews: Выпуск распределенной системы управления исходными текстами Git 2.10.0
  4. OpenNews: Выпуск распределенной системы управления исходными текстами Git 2.9.0
  5. OpenNews: Выявлен дубликат короткого идентификатора PGP-ключа Линуса Торвальдса
  6. OpenNews: Опасная уязвимость во всех версиях Git
Лицензия: CC-BY
Тип: Программы
Ключевые слова: git
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.1, Аноним, 15:36, 30/11/2016 [ответить] [смотреть все]
  • +9 +/
    >> Например, опубликованный в системе отслеживания ошибок идентификатор со временем может начать указывать на несколько объектов.

    Ну так а кто записывает сокращённый, тот ССЗБ. В мануале явно написано, что это сокращённый и сделан только для, эээ, локального удобства.

     
  • 1.2, Аноним, 16:43, 30/11/2016 [ответить] [смотреть все]
  • +5 +/
    Надеюсь в планах есть замена не только shell-скриптов на Си, но и perl-скриптов ... весь текст скрыт [показать]
     
     
  • 2.7, anonymous, 19:39, 30/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • –5 +/
    А смысл Это нормальные языки программирования, в отличие от ущербного шелла, и ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.9, Аноним, 20:06, 30/11/2016 [^] [ответить] [смотреть все]  
  • +/
    Это интерпретируемые языки, так же как и shell, а у интерпретируемых языков скор... весь текст скрыт [показать]
     
     
  • 4.40, Аноним, 05:59, 01/12/2016 [^] [ответить] [смотреть все]  
  • +3 +/
    Для начала посмотри, где используются скрипты, раз уж взялся кудахтать https ... весь текст скрыт [показать]
     
     
  • 5.42, Andrey Mitrofanov, 09:19, 01/12/2016 [^] [ответить] [смотреть все]  
  • +/
    А на баше они sha1 , думаешьЮ писали Если твои титоны будут тормозть на вин... весь текст скрыт [показать]
     
  • 3.20, Аноним, 22:47, 30/11/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    Питон вообще должен сдохнуть Достал постоянным террариумом - в убунте в репах у... весь текст скрыт [показать]
     
     
  • 4.31, Аниним, 01:39, 01/12/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    анончик заблуждается есть 2.7 и 3 ветки вот и все.
     
     
  • 5.33, Аноним, 01:55, 01/12/2016 [^] [ответить] [смотреть все]  
  • –3 +/
    Ничего не знаю, в убунтах бидон 3 5 еще есть Отдельно от остальных 3 х Видимо ... весь текст скрыт [показать]
     
     
  • 6.34, Stax, 01:56, 01/12/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Тем не менее - чуток посовместимее, чем perl5 и perl6...
     
     
  • 7.48, Аноним, 11:37, 01/12/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Мне похрен Я бы предпочел развидеть и то и другое ... весь текст скрыт [показать]
     
  • 6.37, Аноним, 02:16, 01/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Мы уже поняли, можете не повторять Очевидно, это проблемы убунт и убунтоводов ... весь текст скрыт [показать]
     
     
  • 7.49, Аноним, 11:43, 01/12/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Хороший перевод стрелок, но нет Врядли они все это организовали от хорошей жизн... весь текст скрыт [показать]
     
     
  • 8.53, Аноним, 12:27, 01/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Ага, а у других языков проблем с совместимостью между версиями быть не может по ... весь текст скрыт [показать]
     
     
  • 9.64, Аноним, 18:05, 02/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Таких как у питона Больше ни у кого не видел Если уж про переписывание на си -... весь текст скрыт [показать]
     
  • 8.61, Аноним, 20:11, 01/12/2016 [^] [ответить] [смотреть все]  
  • +4 +/
    С какого препугу эта констатация факта совершенно внезапно версия 3 5 принадлеж... весь текст скрыт [показать]
     
     
  • 9.65, Аноним, 18:28, 02/12/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Это фраза мы уже поняли - констатация факта Что она консатирует Что вы спосо... весь текст скрыт [показать]
     
     
  • 10.71, Аноним, 02:43, 03/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Передерг такой передерг А уж сколько версий гцц в репах дебиана Ужас, да Если... весь текст скрыт [показать]
     
     
  • 11.72, Аноним, 21:01, 03/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Ну а смысл тончить, если вы в дверь ходите боком Не знаю чего ужасного - у м... весь текст скрыт [показать]
     
     
  • 12.73, Аноним, 22:32, 03/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Какой юлеж, какие экспрессии А кто же это тут, в 65 отвечал и просил примеры ... весь текст скрыт [показать]
     
  • 4.54, Аноним, 12:27, 01/12/2016 [^] [ответить] [смотреть все]  
  • +/
    > Питон вообще должен сдохнуть.

    А мужики-то не знали!

     
     
  • 5.66, Аноним, 18:29, 02/12/2016 [^] [ответить] [смотреть все]  
  • –3 +/
    Да почему же Мужики в гугле вывели целое поколение go пников и из той же вебни ... весь текст скрыт [показать]
     
  • 3.57, Аноним, 13:23, 01/12/2016 [^] [ответить] [смотреть все]  
  • +/
    А причём здесь скорость? Эти языки лишние зависимости тянут.
     
  • 2.10, KonstantinB, 20:33, 30/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +8 +/
    Это распределение ничего особо не значит. Заметная часть - это реализация программных интефейсов к гиту на этих языках, и всякие дополнительные утилиты, особо никому не нужные, типа git-svn.
     
  • 2.13, Аноним84701, 21:19, 30/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    Ну, глянем поподробнее https github com git git blob 35f6318d44379452d8d33e88... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.15, vitalikp, 22:08, 30/11/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Отсутствие в зависимостях перла и питона для меня был бы огромный плюс Не люблю... весь текст скрыт [показать]
     
     
  • 4.23, Аноним, 22:54, 30/11/2016 [^] [ответить] [смотреть все]  
  • –2 +/
    Два чая этому господину А я вот объяснил что террариум из трех полунедосовмести... весь текст скрыт [показать]
     
     
  • 5.28, Аноним84701, 00:56, 01/12/2016 [^] [ответить] [смотреть все]  
  • +2 +/
    А ссылочка будет, где там в гите три разных версии бидона используется А разр... весь текст скрыт [показать]
     
     
  • 6.35, Аноним, 01:58, 01/12/2016 [^] [ответить] [смотреть все]  
  • –5 +/
    Да какая мне разница, в гите это или нет Если кто тащит гадюку - я смотрю на эт... весь текст скрыт [показать]
     
     
  • 7.38, Аноним, 02:17, 01/12/2016 [^] [ответить] [смотреть все]  
  • +7 +/
    > Я его назыаю бидоном. Его фанаты гремят много.

    Пока что в этом треде гремишь только ты. Ты случаем не фанат? )

     
     
  • 8.50, Аноним, 11:53, 01/12/2016 [^] [ответить] [смотреть все]  
  • –3 +/
    Если хочешь, можешь записать меня в фанаты git а, разумеется ... весь текст скрыт [показать]
     
  • 7.47, Аномномномнимус, 10:04, 01/12/2016 [^] [ответить] [смотреть все]  
  • +3 +/
    Да будет лопухам известно, что ваша бубунта без питона просто перестанет работат... весь текст скрыт [показать]
     
     
  • 8.51, Аноним, 12:04, 01/12/2016 [^] [ответить] [смотреть все]  
  • –4 +/
    Да будет ламакам с гвидобэйсиком известно гвидобэйсик не требуется для работы с... весь текст скрыт [показать]
     
     
  • 9.55, Аноним, 12:38, 01/12/2016 [^] [ответить] [смотреть все]  
  • +4 +/
    Дальше не читал LFS Только LFS, батенька Gentoo не катит, т к Portage написа... весь текст скрыт [показать]
     
     
  • 10.67, Аноним, 18:33, 02/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Это вы к Zenkov у с такими развлечениями, я предпочитаю менее хардкорно Дык з... весь текст скрыт [показать]
     
  • 9.58, Аноним, 15:56, 01/12/2016 [^] [ответить] [смотреть все]  
  • +4 +/
    И чего тогда неламаки ноют Напишите замену, в убунтах наверняка обрадуются Эт... весь текст скрыт [показать]
     
     
  • 10.68, Аноним, 19:01, 02/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Вы наверное тоже будете не в восторге если сосед камаз коровяка перед вашим домо... весь текст скрыт [показать]
     
  • 4.30, Аноним84701, 01:29, 01/12/2016 [^] [ответить] [смотреть все]  
  • +1 +/
    Не плохо Но, как вы сами заметили, задачи переписывания тестов или сборочных ск... весь текст скрыт [показать]
     
  • 4.44, Andrey Mitrofanov, 09:49, 01/12/2016 [^] [ответить] [смотреть все]  
  • +/
    А почему ты не можешь прочитать, что тебе написали, объяснишь 124 Добавлю п... весь текст скрыт [показать]
     
     
  • 5.52, Аноним, 12:14, 01/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Пипец, митрорфан превращается в изена ... весь текст скрыт [показать]
     
     
  • 6.56, Andrey Mitrofanov, 12:49, 01/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Да http www opennet ru openforum vsluhforumID3 109353 html 125 готовлюсь вли... весь текст скрыт [показать]
     
     
  • 7.69, Аноним, 19:03, 02/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Не, ну до эталона ламера еще работать и работать Но флудить копипастами как изе... весь текст скрыт [показать]
     
  • 5.60, vitalikp, 17:21, 01/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Что прочитать Я все прочитал Зато в коде есть ... весь текст скрыт [показать]
     
  • 1.3, Crazy Alex, 17:26, 30/11/2016 [ответить] [смотреть все]  
  • +1 +/
    В очередной раз у гита просто образцовый список изменений
     
     
  • 2.5, Аноним, 17:45, 30/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +8 +/
    Конечно! Как бы вы описывали любимую программу, ради написания которой завели целый проект свободного ядра.
     
  • 2.63, freehck, 12:14, 02/12/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Поддерживаю на все сто Ребята не просто молодцы, они прямо-таки титаны Я даже ... весь текст скрыт [показать] [показать ветку]
     
  • 1.4, anonimus, 17:43, 30/11/2016 [ответить] [смотреть все]  
  • +/
    > В команду "git diff" добавлена опция "--submodule=diff", при которой будут показаны изменения субмодулей в форме патча между двумя состояниями субмодуля;

    Джва года этого ждал. При работе с сабмодулями постоянные проблемы - типа что-то изменилось, а если хочешь узнать - сходи в него ручками и посмотри изменения сам.

     
  • 1.11, Спасибо за все, 20:56, 30/11/2016 [ответить] [смотреть все]  
  • +7 +/
    Слава Линусу, Git приносящему! А большего мне и не надо.
     
     
  • 2.19, Аноним, 22:45, 30/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Тогда уж принёсшему, потому что как видно из https github com git git graphs c... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.29, шельмец, 01:06, 01/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Слава Junio, Git приносящему! А большего мне и не надо.
     
     
  • 4.45, Andrey Mitrofanov, 09:53, 01/12/2016 [^] [ответить] [смотреть все]  
  • +/
    Угу, спасибо Линусу, отобравшему его у Ларри и Джунио за мерж параллельного... весь текст скрыт [показать]
     
  • 1.14, Аноним, 22:01, 30/11/2016 [ответить] [смотреть все]  
  • –2 +/
    чё та с сайта качается только 2.10.2! обман же в новости.
     
     
  • 2.18, vitalikp, 22:22, 30/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    на окна еще не завезли, а вообще вот https://github.com/git/git/releases
     
  • 2.25, Led, 23:57, 30/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +3 +/
    Вендузятник должен страдать.
     
     
  • 3.62, Аноним, 10:03, 02/12/2016 [^] [ответить] [смотреть все]  
  • –1 +/
    А мусье мазохист-вендузятник или садист-линуксоид По поводу сабжа - уже завезли... весь текст скрыт [показать]
     
  • 1.16, vitalikp, 22:18, 30/11/2016 [ответить] [смотреть все]  
  • +1 +/
    Моя первая система контроля версий это была csv,
    потом пришлось перейти на svn. Честно говоря не пользовался ими уже достаточно давно.
    Ну а потом я познакомился с гитом.
    Поначалу было не привычно, но потом я его полюбил.
    Первое что пытался использовать это подмодули(submodule).
    Но потом я бросил эту затею, все же лучше код разделять на репозитории.
    Hg немного читал, но на практике использовать не приходилось.
    И честно говоря единственный код, который мне доводилось читать в нем это код mozilla(firefox и thunderbird).

    Хорошая новость.

     
     
  • 2.22, Аноним, 22:51, 30/11/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +2 +/
    Тролльвальдс знает как это делать правильно У него большая распределенная коман... весь текст скрыт [показать] [показать ветку]
     
  • 2.26, vitalikp, 00:03, 01/12/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    > была csv

    точнее cvs:)

     
  • 1.43, Аноним, 09:42, 01/12/2016 [ответить] [смотреть все]  
  • +/
    Таненбаум с его сегодняшними студентами сидят на поделке предыдущего его студент... весь текст скрыт [показать]
     
     
  • 2.46, Ergil, 10:01, 01/12/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Торвальдс никогда не был его студентом Переписка между ними была, но студентом ... весь текст скрыт [показать] [показать ветку]
     
  • 2.59, Аноним, 17:11, 01/12/2016 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Кто чей студент?
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor