ืฉื—ืจื•ืจ ื‘ืงืจืช ืžืงื•ืจ ืฉืœ Git 2.39

ืœืื—ืจ ื—ื•ื“ืฉื™ื™ื ืฉืœ ืคื™ืชื•ื—, ืžืขืจื›ืช ื‘ืงืจืช ื”ืžืงื•ืจ ื”ืžื‘ื•ื–ืจืช Git 2.39 ืฉื•ื—ืจืจื”. Git ื”ื™ื ืื—ืช ืžืžืขืจื›ื•ืช ื‘ืงืจืช ื”ื’ืจืกืื•ืช ื”ืคื•ืคื•ืœืจื™ื•ืช, ื”ืืžื™ื ื•ืช ื•ื‘ืขืœื™ ื”ื‘ื™ืฆื•ืขื™ื ื”ื’ื‘ื•ื”ื™ื ื‘ื™ื•ืชืจ, ื”ืžืกืคืงืช ื›ืœื™ ืคื™ืชื•ื— ื’ืžื™ืฉื™ื ืœื ืœื™ื ืืจื™ื™ื ื”ืžื‘ื•ืกืกื™ื ืขืœ ื”ืกืชืขืคื•ืช ื•ืžื™ื–ื•ื’. ื›ื“ื™ ืœื”ื‘ื˜ื™ื— ืืช ืฉืœืžื•ืช ื”ื”ื™ืกื˜ื•ืจื™ื” ื•ื”ืชื ื’ื“ื•ืช ืœืฉื™ื ื•ื™ื™ื ืจื˜ืจื•ืืงื˜ื™ื‘ื™ื™ื, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘-hashing ืžืจื•ืžื– ืฉืœ ื›ืœ ื”ื”ื™ืกื˜ื•ืจื™ื” ื”ืงื•ื“ืžืช ื‘ื›ืœ commit; ืืคืฉืจ ื’ื ืœืืฉืจ ืชื’ื™ื ื‘ื•ื“ื“ื™ื ื•ื”ืชื—ื™ื™ื‘ื•ื™ื•ืช ืขื ื—ืชื™ืžื•ืช ื“ื™ื’ื™ื˜ืœื™ื•ืช ืฉืœ ื”ืžืคืชื—ื™ื.

ื‘ื”ืฉื•ื•ืื” ืœืžื”ื“ื•ืจื” ื”ืงื•ื“ืžืช, ื”ื’ืจืกื” ื”ื—ื“ืฉื” ื›ืœืœื” 483 ืฉื™ื ื•ื™ื™ื, ืฉื”ื•ื›ื ื• ื‘ื”ืฉืชืชืคื•ืช 86 ืžืคืชื—ื™ื, ืžืชื•ื›ื 31 ืœืงื—ื• ื—ืœืง ื‘ืคื™ืชื•ื— ืœืจืืฉื•ื ื”. ื—ื™ื“ื•ืฉื™ื ืขื™ืงืจื™ื™ื:

  • ื”ืคืงื•ื“ื” "git shortlog", ืฉื ื•ืขื“ื” ืœื”ืฆื™ื’ ืกื™ื›ื•ืžื™ื ืขื ื ืชื•ื ื™ื ืกื˜ื˜ื™ืกื˜ื™ื™ื ืžื”ื™ืกื˜ื•ืจื™ื™ืช ื”ืฉื™ื ื•ื™ื™ื, ื”ื•ืกื™ืคื” ืืคืฉืจื•ืช "-group" ืœืงื™ื‘ื•ืฅ ืฉืจื™ืจื•ืชื™ ืฉืœ commits ืœืคื™ ืฉื“ื•ืช ืฉืื™ื ื ืžื•ื’ื‘ืœื™ื ืœืžื—ื‘ืจ ืื• committer. ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœื”ืฆื™ื’ ืจืฉื™ืžื” ืฉืœ ืžืคืชื—ื™ื ืขื ืžื™ื“ืข ืขืœ ืžืกืคืจ ื”ืฉื™ื ื•ื™ื™ื, ืชื•ืš ื”ืชื—ืฉื‘ื•ืช ื‘ืขื•ื–ืจื™ื ื”ืžื•ื–ื›ืจื™ื ื‘ืฉื“ื” "Co-authored-by", ืชื•ื›ืœ ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื”: git shortlog -ns --group=author - -group=trailer:co-authored-by

    ื ื™ืชืŸ ืœืฆื‘ื•ืจ ืคืœื˜ ืฉืœ Shortlog ื‘ืืžืฆืขื•ืช ืžืคืจื˜ื™ ืขื™ืฆื•ื‘, ื•ื”ืืคืฉืจื•ืช "--group" ื™ื›ื•ืœื” ืœืคืฉื˜ ืžืฉืžืขื•ืชื™ืช ืืช ื”ื™ืฆื™ืจื” ืฉืœ ื“ื•ื—ื•ืช ืžื•ืจื›ื‘ื™ื ื•ืœื‘ื˜ืœ ืืช ื”ืฆื•ืจืš ื‘ืคืงื•ื“ื•ืช ืžื™ื•ืŸ ื ื•ืกืคื•ืช. ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœื™ืฆื•ืจ ื“ื•ื— ืขื ืžื™ื“ืข ืขืœ ื›ืžื” ื”ืชื—ื™ื™ื‘ื•ื™ื•ืช ืœื’ืจืกื” ื ืชื•ื ื” ื”ืชืงื‘ืœื• ื‘ื›ืœ ื—ื•ื“ืฉ, ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ: git shortlog v2.38.0.. โ€”date='format:%Y-%m' โ€”group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 ื‘ืขื‘ืจ, ื›ื“ื™ ืœื‘ืฆืข ืคืขื•ืœื” ื“ื•ืžื” ื”ื™ื” ืฆื•ืจืš ืœื”ืฉืชืžืฉ ื‘ื›ืœื™ ื”ืฉื™ืจื•ืช ื”ืžื™ื•ืŸ ื•ื”ื™ื—ื™ื“ื™ื: git log v2.38.0. .. โ€”date='format:%Y -%m' โ€”format='%cd' | ืžื™ื•ืŸ | uniq -c

  • ื”ื•ืจื—ื‘ื• ื”ื™ื›ื•ืœื•ืช ืฉืœ ืžื ื’ื ื•ืŸ "ื—ื‘ื™ืœื•ืช cruft", ื”ืžื™ื•ืขื“ ืœืืจื™ื–ืช ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ืœืชื™ ื ื™ืชื ื™ื ืœื”ืฉื’ื” ืฉืื™ื ื ืžื•ื–ื›ืจื™ื ื‘ืžืื’ืจ (ืฉืื™ื ื ืžื•ื–ื›ืจื™ื ืขืœ ื™ื“ื™ ืขื ืคื™ื ืื• ืชื’ื™ื•ืช). ืื•ื‘ื™ื™ืงื˜ื™ื ืฉืœื ื ื™ืชืŸ ืœื”ื’ื™ืข ืืœื™ื”ื ื ืžื—ืงื™ื ืขืœ ื™ื“ื™ ืืกืคืŸ ื”ืืฉืคื”, ืืš ื ืฉืืจื™ื ื‘ืžืื’ืจ ืœื–ืžืŸ ืžืกื•ื™ื ืœืคื ื™ ืฉื”ื ื ืžื—ืงื™ื ื›ื“ื™ ืœื”ื™ืžื ืข ืžืชื ืื™ ืžื™ืจื•ืฅ. ืžื ื’ื ื•ืŸ ื”-"cruft packs" ืžืืคืฉืจ ืœืš ืœืื—ืกืŸ ืืช ื›ืœ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ืฉืื™ื ื ื ื™ืชื ื™ื ืœื”ืฉื’ื” ื‘ืงื•ื‘ืฅ ื—ื‘ื™ืœื” ืื—ื“, ื•ืœื”ืฆื™ื’ ื ืชื•ื ื™ื ืขืœ ื–ืžืŸ ื”ืฉื™ื ื•ื™ ืฉืœ ื›ืœ ืื•ื‘ื™ื™ืงื˜ ื‘ื˜ื‘ืœื” ื ืคืจื“ืช, ื”ืžืื•ื—ืกื ืช ื‘ืงื•ื‘ืฅ ื ืคืจื“ ืขื ืกื™ื•ืžืช ".mtimes", ื›ืš ืฉื”ื ื™ืขืฉื• ื–ืืช. ืœื ื—ื•ืคืคื™ื ืœื–ืžืŸ ื”ืฉื™ื ื•ื™ ื”ื›ื•ืœืœ.

    ืžืฉืš ื”ื–ืžืŸ ืฉื‘ื• ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ืœืชื™ ื ื™ืชื ื™ื ืœื”ืฉื’ื” ื ืฉืืจื™ื ื‘ืžืื’ืจ ืœืคื ื™ ืฉื”ื ื ืžื—ืงื™ื ื‘ืคื•ืขืœ ื ืงื‘ืข ืขืœ ื™ื“ื™ ื”ืืคืฉืจื•ืช "โ€”prune=" " ืขื ื–ืืช, ื‘ืขื•ื“ ืฉื”ืฉื”ื™ื™ื” ืœืคื ื™ ื”ืžื—ื™ืงื” ื”ื™ื ื“ืจืš ื™ืขื™ืœื” ื•ืคืจืงื˜ื™ืช ืœืžื“ื™ ืœืžื ื•ืข ืฉื—ื™ืชื•ืช ื‘ืžืื’ืจ ืขืงื‘ ืชื ืื™ ื’ื–ืข, ื”ื™ื ืœื ืืžื™ื ื” ื‘-100%. ื›ื“ื™ ืœื”ืงืœ ืขืœ ืฉื—ื–ื•ืจ ืžืื’ืจ ืคื’ื•ื, ื”ืžื”ื“ื•ืจื” ื”ื—ื“ืฉื” ืžืกืคืงืช ืืช ื”ื™ื›ื•ืœืช ืœืฉืžื•ืจ ืื•ื‘ื™ื™ืงื˜ื™ื ื—ืกืจื™ื ืขืœ ื™ื“ื™ ื”ื•ืกืคืช ื”ืืคืฉืจื•ืช "--expire-to" ืœืคืงื•ื“ื” "git repack", ื”ืžืืคืฉืจืช ืœืš ืœืฆื™ื™ืŸ ืงื•ื‘ืฅ ืœื™ืฆื™ืจืช ืงื•ื‘ืฅ ื—ื™ืฆื•ื ื™ ืขื•ืชืง ืฉืœ ื›ืœ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ืฉื ืžื—ืงื•. ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœืฉืžื•ืจ ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ืœืชื™ ื ื™ืชื ื™ื ืœื”ืฉื’ื” ืฉืœื ื”ืฉืชื ื• ื‘-5 ื”ื“ืงื•ืช ื”ืื—ืจื•ื ื•ืช ื‘ืงื•ื‘ืฅ backup.git, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘ืคืงื•ื“ื”: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • ื”ื’ื“ื™ืœื” ืžืฉืžืขื•ืชื™ืช (ืขื“ 70%) ืืช ืžื”ื™ืจื•ืช ืคืขื•ืœืช "git grep -cached" ื‘ืขืช ื—ื™ืคื•ืฉ ื‘ืื–ื•ืจื™ื ื”ืžืฉืชืžืฉื™ื ื‘ืฉื™ื‘ื•ื˜ ื—ืœืงื™ (sparse-checkout) ื•ืฉื™ืฉ ืขื‘ื•ืจื ืื™ื ื“ืงืกื™ื ื—ืœืงื™ื™ื (sparse index). ื‘ืขื‘ืจ, ื›ืืฉืจ ืฆื™ื™ื ื• ืืช ื”ืืคืฉืจื•ืช "-cached", ื”ื—ื™ืคื•ืฉ ื‘ื•ืฆืข ืชื—ื™ืœื” ื‘ืื™ื ื“ืงืก ื”ืจื’ื™ืœ ื•ืœืื—ืจ ืžื›ืŸ ื‘ื—ืœืงื™ื, ืžื” ืฉื”ื•ื‘ื™ืœ ืœืขื™ื›ื•ื‘ื™ื ื ื™ื›ืจื™ื ื‘ื—ื™ืคื•ืฉ ื‘ืžืื’ืจื™ื ื’ื“ื•ืœื™ื.
  • ื”ืื™ืžื•ืช ืฉืœ ื”ืฉืจืช ืœื’ื‘ื™ ื”ืงื•ื”ืจื ื˜ื™ื•ืช ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื ื—ื“ืฉื™ื ืœืคื ื™ ืฉื”ื ืžืžื•ืงืžื™ื ื‘ืžืื’ืจ ื‘ืžื”ืœืš ืคืขื•ืœืช ื”-"git push" ื”ื•ืืฅ. ืขืœ ื™ื“ื™ ืžืขื‘ืจ ืœื”ืชื—ืฉื‘ื ื•ืช ื‘ืงื™ืฉื•ืจื™ื ืžื•ืฆื”ืจื™ื ื‘ืœื‘ื“ ื‘ืขืช ื”ื‘ื“ื™ืงื”, ื‘ืžืื’ืจ ื‘ื“ื™ืงื” ืขื 7 ืžื™ืœื™ื•ืŸ ืงื™ืฉื•ืจื™ื, ืžืชื•ื›ื ืจืง 3% ืžื›ื•ืกื™ื ื‘ืคืขื•ืœืช ื”ื“ื—ื™ืคื”, ื”ืื•ืคื˜ื™ืžื™ื–ืฆื™ื•ืช ืฉื ืขืฉื• ืืคืฉืจื• ืœื”ืคื—ื™ืช ืืช ื–ืžืŸ ื”ื‘ื“ื™ืงื” ืคื™ 4.5.
  • ื›ื“ื™ ืœื”ื’ืŸ ืžืคื ื™ ื”ืฆืคืช ืžืกืคืจื™ื ืฉืœืžื™ื ืคื•ื˜ื ืฆื™ืืœื™ื™ื ื‘ืงื•ื“, ื”ืคืงื•ื“ื” "git application" ืžื’ื‘ื™ืœื” ืืช ื”ื’ื•ื“ืœ ื”ืžืจื‘ื™ ืฉืœ ืชื™ืงื•ื ื™ื ืฉื ื™ืชืŸ ืœืขื‘ื“. ืื ื’ื•ื“ืœ ื”ืชื™ืงื•ืŸ ืขื•ืœื” ืขืœ 1 GB, ื›ืขืช ืชื•ืฆื’ ืฉื’ื™ืื”.
  • ื›ื“ื™ ืœื”ื’ืŸ ืžืคื ื™ ืคื’ื™ืขื•ื™ื•ืช ืคื•ื˜ื ืฆื™ืืœื™ื•ืช, ื‘ื•ืฆืขื• ืฉื™ื ื•ื™ื™ื ื›ื“ื™ ืœื ืงื•ืช ืžื™ื“ืข ืžื™ื•ืชืจ ืžื”ื›ื•ืชืจื•ืช ื”ืžื•ื’ื“ืจื•ืช ื‘ืขืช ืฉื™ืžื•ืฉ ื‘ืžื•ื“ื•ืœ h2h3 ืขื ืืคืฉืจื•ืช GIT_TRACE_CURL=1 ืื• GIT_CURL_VERBOSE=1 ื™ื—ื“ ืขื HTTP/2.
  • ื‘ืขืช ื‘ื™ืฆื•ืข ืฆ'ืง ืืื•ื˜ ื‘ืขื ืฃ ื”ืžื”ื•ื•ื” ืงื™ืฉื•ืจ ืกืžืœื™ ืœืกื ื™ืฃ ืื—ืจ, ื”ืคืงื•ื“ื” "git symbolic-ref HEAD" ืžืฆื™ื’ื” ื›ืขืช ืืช ืฉื ืขื ืฃ ื”ื™ืขื“ ื•ืœื ืืช ืฉื ื”ืกืžืœ.
  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ืืจื’ื•ืžื ื˜ @{-1} ืœืืคืฉืจื•ืช "--edit-description" ("git branch โ€”edit-description @{-1}") ืœืขืจื™ื›ืช ื”ืชื™ืื•ืจ ืฉืœ ืขื ืฃ ืงื•ื“ื.
  • ื ื•ืกืคื” ืคืงื•ื“ืช "git merge-tree --stdin" ื›ื“ื™ ืœื”ืขื‘ื™ืจ ืจืฉื™ืžื” ืฉืœ ืืคืฉืจื•ื™ื•ืช ื‘ืืžืฆืขื•ืช ืงืœื˜ ืจื’ื™ืœ.
  • ื‘ืžืขืจื›ื•ืช ืงื‘ืฆื™ื ื‘ืจืฉืช, ื”ืžื˜ืคืœ fsmonitor, ื”ืžื ื˜ืจ ืฉื™ื ื•ื™ื™ื ื‘ืžืขืจื›ืช ื”ืงื‘ืฆื™ื, ืžื•ืฉื‘ืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ.

ืžืงื•ืจ: OpenNet.ru

ื”ื•ืกืคืช ืชื’ื•ื‘ื”