Windows10 GitBash зависает примерно на пять минут при фиксации: это нормально?

Моя версия GitBash — 2.36.1
Моя версия Mintty — 3.6.1 (x86_64-pc-msys) [Windows 19044]

Мой терминал GitBash Mintty зависал примерно на пять минут при фиксации после запуска следующего:

<user> <path> (master)
$ git add .

<user> <path> (master)
$ git commit -m "..."
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
Enumerating objects: 384, done.
Counting objects: 100% (17/17), done.
Delta compression using up to 4 threads
Compressing objects: 100% (16/16), done.
Writing objects: 100% (17/17), done.
Total 17 (delta 4), reused 0 (delta 0), pack-reused 0
Removing duplicate objects: 100% (256/256), done.

Здесь он завис минут на пять.
Раньше такого не было.
Это нормально возможно или я наверное что-то делаю не так (и если да, то что и как исправить)?

Обновлено: Хуки папки .git:

РЕДАКТИРОВАТЬ 3: удален РЕДАКТИРОВАТЬ 2, который показывал журналы трассировки 2 по команде «git status», в РЕДАКТИРОВАТЬ 3 я публикую журналы трассировки 2 после моей последней «фиксации git»:

commit -m <my message>
d0 | main                     | data_json    | r0  |  0.036147 |  0.036147 | process      | windows/ancestry:["bash.exe","bash.exe"]
d0 | main                     | def_repo     | r1  |           |           |              | worktree:'<my path>'
d0 | main                     | cmd_name     |     |           |           |              | commit (commit)
d0 | main                     | region_enter | r1  |  0.112412 |           | index        | label:do_read_index .git/index
d0 | main                     | region_enter | r1  |  0.114001 |           | cache_tree   | ..label:read
d0 | main                     | region_leave | r1  |  0.114116 |  0.000115 | cache_tree   | ..label:read
d0 | main                     | data         | r1  |  0.114183 |  0.001771 | index        | ..read/version:2
d0 | main                     | data         | r1  |  0.114214 |  0.001802 | index        | ..read/cache_nr:401
d0 | main                     | region_leave | r1  |  0.114240 |  0.001828 | index        | label:do_read_index .git/index
d0 | main                     | region_enter |     |  0.115291 |           | index        | label:refresh
d0 | main                     | data         |     |  0.118960 |  0.003669 | index        | ..refresh/sum_lstat:401
d0 | main                     | data         |     |  0.119016 |  0.003725 | index        | ..refresh/sum_scan:0
d0 | main                     | region_leave |     |  0.119039 |  0.003748 | index        | label:refresh
d0 | main                     | region_enter | r1  |  0.226613 |           | unpack_trees | label:unpack_trees
d0 | main                     | region_enter | r1  |  0.227008 |           | unpack_trees | ..label:traverse_trees
d0 | main                     | region_leave | r1  |  0.227473 |  0.000465 | unpack_trees | ..label:traverse_trees
d0 | main                     | region_leave | r1  |  0.228410 |  0.001797 | unpack_trees | label:unpack_trees
d0 | main                     | region_enter | r1  |  0.228996 |           | diff         | label:setup
d0 | main                     | region_leave | r1  |  0.229037 |  0.000041 | diff         | label:setup
d0 | main                     | region_enter | r1  |  0.229053 |           | diff         | label:write back to queue
d0 | main                     | region_leave | r1  |  0.229067 |  0.000014 | diff         | label:write back to queue
d0 | main                     | region_enter | r1  |  0.254939 |           | status       | label:worktrees
d0 | main                     | region_enter | r1  |  0.255650 |           | diff         | ..label:setup
d0 | main                     | region_leave | r1  |  0.255705 |  0.000055 | diff         | ..label:setup
d0 | main                     | region_enter | r1  |  0.255731 |           | diff         | ..label:write back to queue
d0 | main                     | region_leave | r1  |  0.255752 |  0.000021 | diff         | ..label:write back to queue
d0 | main                     | region_leave | r1  |  0.255774 |  0.000835 | status       | label:worktrees
d0 | main                     | region_enter | r1  |  0.255795 |           | status       | label:index
d0 | main                     | region_enter | r1  |  0.256585 |           | unpack_trees | ..label:unpack_trees
d0 | main                     | region_enter | r1  |  0.256929 |           | unpack_trees | ....label:traverse_trees
d0 | main                     | region_leave | r1  |  0.256993 |  0.000064 | unpack_trees | ....label:traverse_trees
d0 | main                     | region_leave | r1  |  0.257023 |  0.000438 | unpack_trees | ..label:unpack_trees
d0 | main                     | region_enter | r1  |  0.257040 |           | diff         | ..label:setup
d0 | main                     | region_leave | r1  |  0.257053 |  0.000013 | diff         | ..label:setup
d0 | main                     | region_enter | r1  |  0.257066 |           | diff         | ..label:write back to queue
d0 | main                     | region_leave | r1  |  0.257079 |  0.000013 | diff         | ..label:write back to queue
d0 | main                     | region_leave | r1  |  0.257093 |  0.001298 | status       | label:index
d0 | main                     | region_enter | r1  |  0.257114 |           | status       | label:untracked
d0 | main                     | region_enter | r1  |  0.257441 |           | dir          | ..label:read_directory
d0 | main                     | region_enter | r1  |  0.257591 |           | index        | ....label:name-hash-init
d0 | main                     | region_leave | r1  |  0.257678 |  0.000087 | index        | ....label:name-hash-init
d0 | main                     | data         | r1  |  0.259703 |  0.002262 | read_directo | ....path:
d0 | main                     | data         | r1  |  0.259737 |  0.002296 | read_directo | ....directories-visited:29
d0 | main                     | data         | r1  |  0.259753 |  0.002312 | read_directo | ....paths-visited:454
d0 | main                     | region_leave | r1  |  0.259766 |  0.002325 | dir          | ..label:read_directory
d0 | main                     | region_leave | r1  |  0.259782 |  0.002668 | status       | label:untracked
d0 | main                     | data         | r1  |  0.260047 |  0.260047 | status       | count/changed:0
d0 | main                     | data         | r1  |  0.260069 |  0.260069 | status       | count/untracked:0
d0 | main                     | data         | r1  |  0.260083 |  0.260083 | status       | count/ignored:0
d0 | main                     | region_enter | r1  |  0.260096 |           | status       | label:print
d0 | main                     | region_leave | r1  |  0.262113 |  0.002017 | status       | label:print
d0 | main                     | data         | r1  |  0.262167 |  0.262167 | fsync        | fsync/writeout-only:0
d0 | main                     | data         | r1  |  0.262183 |  0.262183 | fsync        | fsync/hardware-flush:0
d0 | main                     | data_json    | r1  |  0.262521 |  0.262521 | process      | windows/memory:{"PageFaultCount":5233,"PeakWorkingSetSize":9674752,"PeakPagefileUsage":7364608}
d0 | main                     | exit         |     |  0.262553 |           |              | code:1
d0 | main                     | data_json    | r1  |  0.262570 |  0.262570 | traverse_tre | statistics:{"traverse_trees_count":2,"traverse_trees_max_depth":1}
d0 | main                     | atexit       |     |  0.262588 |           |              | code:1
d0 | main                     | version      |     |           |           |              | 2.36.1.windows.1
d0 | main                     | start        |     |  0.012317 |           |              | 'C:\Program Files\Git\mingw64\bin\git.exe' rev-parse --git-dir --is-inside-git-dir --is-bare-repository --is-inside-work-tree --short HEAD
d0 | main                     | data_json    | r0  |  0.052169 |  0.052169 | process      | windows/ancestry:["bash.exe","bash.exe","bash.exe","bash.exe"]
d0 | main                     | cmd_name     |     |           |           |              | rev-parse (rev-parse)
d0 | main                     | def_repo     | r1  |           |           |              | worktree:'<my path>'
d0 | main                     | data         | r1  |  0.065587 |  0.065587 | fsync        | fsync/writeout-only:0
d0 | main                     | data         | r1  |  0.065763 |  0.065763 | fsync        | fsync/hardware-flush:0
d0 | main                     | data_json    | r1  |  0.066035 |  0.066035 | process      | windows/memory:{"PageFaultCount":5960,"PeakWorkingSetSize":7704576,"PeakPagefileUsage":5218304}
d0 | main                     | exit         |     |  0.066077 |           |              | code:0
d0 | main                     | atexit       |     |  0.066102 |           |              | code:0
d0 | main                     | version      |     |           |           |              | 2.36.1.windows.1
d0 | main                     | start        |     |  0.011809 |           |              | 'C:\Program Files\Git\mingw64\bin\git.exe' config --bool core.sparseCheckout
d0 | main                     | data_json    | r0  |  0.053999 |  0.053999 | process      | windows/ancestry:["bash.exe","bash.exe","bash.exe","bash.exe"]
d0 | main                     | def_repo     | r1  |           |           |              | worktree:'<my path>'
d0 | main                     | cmd_name     |     |           |           |              | config (config)
d0 | main                     | data         | r1  |  0.058257 |  0.058257 | fsync        | fsync/writeout-only:0
d0 | main                     | data         | r1  |  0.058297 |  0.058297 | fsync        | fsync/hardware-flush:0
d0 | main                     | data_json    | r1  |  0.058552 |  0.058552 | process      | windows/memory:{"PageFaultCount":5874,"PeakWorkingSetSize":7675904,"PeakPagefileUsage":3547136}
d0 | main                     | exit         |     |  0.058593 |           |              | code:1
d0 | main                     | atexit       |     |  0.058619 |           |              | code:1
d0 | main                     | version      |     |           |           |              | 2.36.1.windows.1
d0 | main                     | start        |     |  0.012306 |           |              | 'C:\Program Files\Git\mingw64\bin\git.exe'

Нет ли здесь чего-то ненормального? Спасибо!

Вы можете сделать следующее: 1) клонировать репозиторий в другой и попробовать использовать тот же Git в новом репо 2) проверить существующий репо (и исправить возможные проблемы) 3. Профиль выполнение при фиксации с помощью Trace2

Lazy Badger 17.11.2022 19:34

Не связано: чтобы добавить все изменения, используйте git add -A, это безопаснее в отношении игнорируемых файлов.

Torge Rosendahl 21.11.2022 21:36

Используемые команды в порядке. У вас есть какие-нибудь хуки, которые запускаются при коммите?

Torge Rosendahl 21.11.2022 21:37

Проверьте журналы событий Windows на наличие сообщений о диске/вводе-выводе — это может произойти, если ваш SSD/HDD умирает и переназначает сектора — но пять минут кажутся чрезмерными.

Dai 21.11.2022 21:40

@Dai ничего странного в логах, все проверки успешны.

Stefano 24.11.2022 16:04

@Lazy Badger Вывод проверки целостности git: $ git fsck --full Проверка каталогов объектов: 100% (256/256), выполнено. Проверка объектов: 100% (778/778), выполнено. Проверка коммитов в графе коммитов: 100% (31/31), выполнено.

Stefano 24.11.2022 16:05

@Torge Rosendahl Я добавил хуки в РЕДАКТИРОВАТЬ

Stefano 24.11.2022 16:28

@Stefano, если у вас есть хуки, возможно ли, что время выполнения этих крючков является причиной того, что ваш коммит отстает?

Torge Rosendahl 25.11.2022 00:31

@TorgeRosendahl Я так не думаю, Торге, потому что поведение непостоянно; это случается только спорадически, тогда как хуки есть всегда.

Stefano 25.11.2022 08:15

Может ли что-то удерживать файл в папке .git? Я проверял это с помощью функции MS PowerToys под названием File Locksmith Learn.Microsoft.com/en-us/windows/powertoys/file-locksmith

Mike Kim 13.12.2022 09:56

@MikeKim Возможно, но эта проблема случалась со мной только примерно в 2% раз. Поэтому очень трудно проследить его причину. Я думаю, что это может быть проблема с памятью с ОС. Если будет чаще, приму во внимание ваше предложение по поводу сторонних инструментов. Спасибо

Stefano 13.12.2022 14:52
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
11
82
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это может быть совершенно нормально. Подсказка находится в этой строке (и что следует за ней):

Auto packing the repository in background for optimum performance.

Как очень хорошо сказано в этом ответе, некоторые команды Git (включая git commit начиная с Git 2.17 ) вызывают git gc --auto. Когда свободных объектов достаточно (со временем это накапливается, когда вы используете git), эта команда начнет упаковывать эти свободные объекты. Это делается для того, чтобы время от времени иметь небольшую сборку мусора (см. также git-scm docs).

Количество времени, которое это займет, зависит от того, какие операции вы недавно выполняли и какие типы объектов находятся внутри вашего репозитория git.

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

Надеюсь это поможет!

Приятно осознавать, что это нормальное поведение! Спасибо за объяснение, все понятно!

Stefano 15.12.2022 13:01

Другие вопросы по теме