GitHub выпустила инструмент для измерения репозиториев

GitHub

Компания GitHub сообщила о выпуске нового инструмента, предназначенного для измерения репозиториев. Git-sizer анализирует различные показатели размера проекта и выдает предупреждение, если какой-либо из них может негативно влиять на работу пользователя.

Что значит «слишком большой»?

Под общим размером репозитория подразумевается объем дискового пространства, используемого в каталоге .git.  Однако есть и другие факторы, которые могут сделать git-репозиторий громоздким и, следовательно, влиять на скорость работы с ним. Например, большое количество git-объектов, размер которых велик в несжатом формате. Также репозиторий может содержать множество ссылок (ветвей, тегов и т.д.), а также громоздких файлов и каталогов, которые много раз подвергались изменениям.

Определение размера репозитория

Для контроля описанных выше показателей предназначен git-sizer. Чтобы использовать этот инструмент, нужно иметь локальный клон репозитория и копию установленного клиента командной строки Git, находящуюся в PATH. Затем следует установить git-sizer и перед запуском выбрать каталог, в котором находится проект.

Инструмент собирает статистику обо всех ссылках и доступных git-репозиториях, а затем формирует отчет. Ниже представлен пример работы git-sizer:

$ git-sizer --verbose
Processing blobs: 1652370
Processing trees: 3396199
Processing commits: 722647
Matching commits to trees: 722647
Processing annotated tags: 534
Processing references: 539
| Name                         | Value     | Level of concern               |
| ---------------------------- | --------- | ------------------------------ |
| Overall repository size      |           |                                |
| * Commits                    |           |                                |
|   * Count                    |   723 k   | *                              |
|   * Total size               |   525 MiB | **                             |
| * Trees                      |           |                                |
|   * Count                    |  3.40 M   | **                             |
|   * Total size               |  9.00 GiB | ****                           |
|   * Total tree entries       |   264 M   | *****                          |
| * Blobs                      |           |                                |
|   * Count                    |  1.65 M   | *                              |
|   * Total size               |  55.8 GiB | *****                          |
| * Annotated tags             |           |                                |
|   * Count                    |   534     |                                |
| * References                 |           |                                |
|   * Count                    |   539     |                                |
|                              |           |                                |
| Biggest objects              |           |                                |
| * Commits                    |           |                                |
|   * Maximum size         [1] |  72.7 KiB | *                              |
|   * Maximum parents      [2] |    66     | ******                         |
| * Trees                      |           |                                |
|   * Maximum entries      [3] |  1.68 k   |                                |
| * Blobs                      |           |                                |
|   * Maximum size         [4] |  13.5 MiB | *                              |
|                              |           |                                |
| History structure            |           |                                |
| * Maximum history depth      |   136 k   |                                |
| * Maximum tag depth      [5] |     1     | *                              |
|                              |           |                                |
| Biggest checkouts            |           |                                |
| * Number of directories  [6] |  4.38 k   | **                             |
| * Maximum path depth     [7] |    14     | *                              |
| * Maximum path length    [8] |   134 B   | *                              |
| * Number of files        [9] |  62.3 k   | *                              |
| * Total size of files    [9] |   747 MiB |                                |
| * Number of symlinks    [10] |    40     |                                |
| * Number of submodules       |     0     |                                |

[1]  91cc53b0c78596a73fa708cceb7313e7168bb146
[2]  2cde51fbd0f310c8a2c5f977e665c0ac3945b46d
[3]  4f86eed5893207aca2c2da86b35b38f2e1ec1fc8 (refs/heads/master:arch/arm/boot/dts)
[4]  a02b6794337286bc12c907c33d5d75537c240bd0 (refs/heads/master:drivers/gpu/drm/amd/include/asic_reg/vega10/NBIO/nbio_6_1_sh_mask.h)
[5]  5dc01c595e6c6ec9ccda4f6f69c131c0dd945f8c (refs/tags/v2.6.11)
[6]  1459754b9d9acc2ffac8525bed6691e15913c6e2 (589b754df3f37ca0a1f96fccde7f91c59266f38a^{tree})
[7]  78a269635e76ed927e17d7883f2d90313570fdbc (dae09011115133666e47c35673c0564b0a702db7^{tree})
[8]  ce5f2e31d3bdc1186041fdfd27a5ac96e728f2c5 (refs/heads/master^{tree})
[9]  532bdadc08402b7a72a4b45a2e02e5c710b7d626 (e9ef1fe312b533592e39cddc1327463c30b0ed8d^{tree})
[10] f29a5ea76884ac37e1197bef1941f62fda3f7b99 (f5308d1b83eba20e69df5e0926ba7257c8dd9074^{tree})

Количество «звездочек» в столбце «Уровень беспокойства» (Level of concern) показывает, насколько показатели завышены по сравнению с аналогичными значениями git-репозитория обычного размера. Восклицательные знаки в данном столбце обращают внимание на серьезность проблемы и необходимость быстрого решения.

Подробное разъяснение всех пунктов можно найти в репозитории git-sizer. На этой же странице ведется работа по исправлению багов и доработке инструмента.

Источник: блог GitHub

Ещё интересное для вас:
Тест: что вы знаете о работе мозга?
Базовый чек-лист по SEO перед сдачей сайта заказчику
Что посмотреть и куда сходить разработчку — ближайшие события