ืžืขืจื›ืช ื‘ืงืจืช ืžืงื•ืจ Git 2.41 ื–ืžื™ื ื”

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

ื‘ื”ืฉื•ื•ืื” ืœืžื”ื“ื•ืจื” ื”ืงื•ื“ืžืช, ื”ืชืงื‘ืœื• ืœื’ืจืกื” ื”ื—ื“ืฉื” 542 ืฉื™ื ื•ื™ื™ื ืฉื”ื•ื›ื ื• ื‘ื”ืฉืชืชืคื•ืช 95 ืžืคืชื—ื™ื, ืžืชื•ื›ื 29 ืœืงื—ื• ื—ืœืง ื‘ืคื™ืชื•ื— ืœืจืืฉื•ื ื”. ื—ื™ื“ื•ืฉื™ื ืขื™ืงืจื™ื™ื:

  • ื˜ื™ืคื•ืœ ืžืฉื•ืคืจ ื‘ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ืœืชื™ ื ื™ืชื ื™ื ืœื”ืฉื’ื” ืฉืื™ื ื ืžื•ื–ื›ืจื™ื ื‘ืžืื’ืจ (ืื™ืŸ ื”ืคื ื™ื” ืœืขื ืคื™ื ืื• ืœืชื’ื™ื). ื—ืคืฆื™ื ืฉืœื ื ื™ืชืŸ ืœื”ื’ื™ืข ืืœื™ื”ื ืžื•ืกืจื™ื ืขืœ ื™ื“ื™ ืืกืคืŸ ื”ืืฉืคื”, ืืš ื ืฉืืจื™ื ื‘ืžืื’ืจ ืœืžืฉืš ื–ืžืŸ ืžืกื•ื™ื ืœืคื ื™ ื”ื”ืกืจื” ื›ื“ื™ ืœื”ื™ืžื ืข ืžืชื ืื™ ืžื™ืจื•ืฅ. ื›ื“ื™ ืœืขืงื•ื‘ ืื—ืจ ืชืงื•ืคืช ื”ืื•ื‘ื™ื™ืงื˜ื™ื ื”ื‘ืœืชื™ ื ื™ืชื ื™ื ืœื”ืฉื’ื”, ื™ืฉ ืฆื•ืจืš ืœืงืฉื•ืจ ืืœื™ื”ื ืชื•ื•ื™ื•ืช ืขื ื–ืžืŸ ื”ืฉื™ื ื•ื™ ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื ื“ื•ืžื™ื, ืžื” ืฉืœื ืžืืคืฉืจ ืœืื—ืกืŸ ืื•ืชื ื‘-pack-file ืื—ื“, ืฉื‘ื• ืœื›ืœ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ื™ืฉ ื–ืžืŸ ืฉื™ื ื•ื™ ืžืฉื•ืชืฃ. ื‘ืขื‘ืจ, ื›ืœ ืื•ื‘ื™ื™ืงื˜ ื‘ืœืชื™ ื ื™ืชืŸ ืœื”ืฉื’ื” ื ืฉืžืจ ื‘ืงื•ื‘ืฅ ื ืคืจื“, ืžื” ืฉื”ื•ื‘ื™ืœ ืœื‘ืขื™ื•ืช ืื ื”ื™ื• ืžืกืคืจ ืจื‘ ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื ื˜ืจื™ื™ื ื‘ืœืชื™ ื ื™ืชื ื™ื ืœื”ืฉื’ื” ืฉืขื“ื™ื™ืŸ ืœื ื”ื™ื• ื ืชื•ื ื™ื ืœืžื—ื™ืงื”. ื‘ืžื”ื“ื•ืจื” ื”ื—ื“ืฉื”, ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืžื ื’ื ื•ืŸ "ื—ื‘ื™ืœื•ืช cruft" ืžืฉืžืฉ ืœืืจื™ื–ืช ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ืœืชื™ ื ื™ืชื ื™ื ืœื”ืฉื’ื”, ืžื” ืฉืžืืคืฉืจ ืœืื—ืกืŸ ืืช ื›ืœ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ื”ื‘ืœืชื™ ื ื™ืชื ื™ื ืœื”ืฉื’ื” ื‘ืงื•ื‘ืฅ ื—ื‘ื™ืœื” ืื—ื“, ื•ืœืฉืงืฃ ืืช ื”ื ืชื•ื ื™ื ืขืœ ื–ืžืŸ ื”ืฉื™ื ื•ื™ ืฉืœ ื›ืœ ืื•ื‘ื™ื™ืงื˜ ื‘ื˜ื‘ืœื” ื ืคืจื“ืช ื”ืžืื•ื—ืกื ืช ื‘ืงื•ื‘ืฅ ืงื•ื‘ืฅ ืขื ืกื™ื•ืžืช ".mtimes" ื•ืžืงื•ืฉืจ ื‘ืืžืฆืขื•ืช ืงื•ื‘ืฅ ืื™ื ื“ืงืก ืขื ืกื™ื•ืžืช ".idx".
    ืžืขืจื›ืช ื‘ืงืจืช ืžืงื•ืจ Git 2.41 ื–ืžื™ื ื”
  • ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ืฉืžื™ืจื” ืขืœ ืื™ื ื“ืงืก ื”ืคื•ืš (revindex) ื‘ื“ื™ืกืง ืขื‘ื•ืจ ืงื•ื‘ืฆื™ ื—ื‘ื™ืœื” ืžื•ืคืขืœืช. ื›ืืฉืจ ื ื‘ื“ืง ืขืœ ืžืื’ืจื™ torvalds/linux, ื”ืฉื™ืžื•ืฉ ื‘ืื™ื ื“ืงืก ื”ืคื•ืš ืื™ืคืฉืจ ืœื ื• ืœื”ืื™ืฅ ืคืขื•ืœื•ืช "git push" ืขืชื™ืจื•ืช ืžืฉืื‘ื™ื ืคื™ 1.49, ื•ืคืขื•ืœื•ืช ืคืฉื•ื˜ื•ืช, ื›ืžื• ื—ื™ืฉื•ื‘ ื’ื•ื“ืœ ืฉืœ ืื•ื‘ื™ื™ืงื˜ ื‘ื•ื“ื“ ื‘ืืžืฆืขื•ืช "git cat- file --batch='%(objectsize:disk)' ยป 77 ืคืขืžื™ื. ืงื‘ืฆื™ื (".rev") ืขื ืื™ื ื“ืงืก ื”ืคื•ืš ื™ืื•ื—ืกื ื• ื‘ืชื•ืš ื”ืžืื’ืจ ื‘ืกืคืจื™ื™ืช ".git/objects/pack".

    ื ื–ื›ื™ืจ ืฉ-Git ืžืื—ืกืŸ ืืช ื›ืœ ื”ื ืชื•ื ื™ื ื‘ืฆื•ืจื” ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉืžืžื•ืงืžื™ื ื‘ืงื‘ืฆื™ื ื ืคืจื“ื™ื. ื›ื“ื™ ืœื”ื’ื‘ื™ืจ ืืช ื™ืขื™ืœื•ืช ื”ืขื‘ื•ื“ื” ืขื ื”ืžืื’ืจ, ืื•ื‘ื™ื™ืงื˜ื™ื ืžืžื•ืงืžื™ื ื‘ื ื•ืกืฃ ื‘ืงื‘ืฆื™ ื—ื‘ื™ืœื”, ืฉื‘ื”ื ื”ืžื™ื“ืข ืžื•ืฆื’ ื‘ืฆื•ืจื” ืฉืœ ื–ืจื ืื•ื‘ื™ื™ืงื˜ื™ื ื”ืขื•ืงื‘ื™ื ื‘ื–ื” ืื—ืจ ื–ื” (ื‘ืคื•ืจืžื˜ ื“ื•ืžื” ืžืฉืชืžืฉื™ื ื‘ื”ืขื‘ืจืช ืื•ื‘ื™ื™ืงื˜ื™ื ืขื ื”-git fetch ื•-git ืคืงื•ื“ื•ืช ื“ื—ื™ืคื”). ืœื›ืœ ืงื•ื‘ืฅ ื—ื‘ื™ืœื” ื ื•ืฆืจ ืงื•ื‘ืฅ ืื™ื ื“ืงืก (.idx), ื”ืžืืคืฉืจ ืœืงื‘ื•ืข ื‘ืžื”ื™ืจื•ืช ืจื‘ื” ืืช ื”ื”ื™ืกื˜ ื‘ืงื•ื‘ืฅ ื”-pack ืœืคื™ื• ื”ืื•ื‘ื™ื™ืงื˜ ื”ื ืชื•ืŸ ืžืื•ื—ืกืŸ ืขืœ ื™ื“ื™ ืžื–ื”ื” ื”ืื•ื‘ื™ื™ืงื˜.

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

    ืœื“ื•ื’ืžื”, ืคืขื•ืœืช ื”ืฆื’ืช ื”ืชื•ื›ืŸ ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื, ื”ืžืฉืชืžืฉืช ื‘ืื™ื ื“ืงืก ื™ืฉื™ืจ, ื”ื™ื™ืชื” ืžื”ื™ืจื” ืคื™ 62 ืžืคืขื•ืœืช ื”ืฆื’ืช ื”ื’ื•ื“ืœ ืฉืœ ืื•ื‘ื™ื™ืงื˜ื™ื, ืฉืขื‘ื•ืจื ืœื ื ื•ืกืคื• ืœืื™ื ื“ืงืก ื ืชื•ื ื™ ื”ืงืฉืจ ื‘ื™ืŸ ืžื™ืงื•ื ืœืื•ื‘ื™ื™ืงื˜. ืœืื—ืจ ื”ืฉื™ืžื•ืฉ ื‘ืžื“ื“ ื”ื”ืคื•ืš, ืคืขื•ืœื•ืช ืืœื• ื”ื—ืœื• ืœืงื—ืช ื‘ืขืจืš ื‘ืื•ืชื• ื–ืžืŸ. ืื™ื ื“ืงืกื™ื ื”ืคื•ื›ื™ื ื’ื ืžืืคืฉืจื™ื ืœืš ืœื”ืื™ืฅ ืืช ืคืขื•ืœืช ืฉืœื™ื—ืช ื”ืื•ื‘ื™ื™ืงื˜ื™ื ื‘ืขืช ื‘ื™ืฆื•ืข ืคืงื•ื“ื•ืช ืื—ื–ื•ืจ ื•ื“ื—ื™ืคื” ืขืœ ื™ื“ื™ ื”ืขื‘ืจื” ื™ืฉื™ืจื” ืฉืœ ื ืชื•ื ื™ื ืžื•ื›ื ื™ื ืžื”ื“ื™ืกืง.

    ืžืขืจื›ืช ื‘ืงืจืช ืžืงื•ืจ Git 2.41 ื–ืžื™ื ื”

  • ื ื•ืกืคื” ืชืžื™ื›ื” ื‘ื”ืขื‘ืจืช ื›ื•ืชืจื•ืช WWW-Authenticate ื‘ื™ืŸ ื”ืžื˜ืคืœ ื‘ืื™ืฉื•ืจื™ื ืœื‘ื™ืŸ ืฉื™ืจื•ืช ื”ืื™ืžื•ืช ืœืคืจื•ื˜ื•ืงื•ืœ "Credential Helper" ื”ืžืฉืžืฉ ืœื”ืขื‘ืจืช ืื™ืฉื•ืจื™ื ื‘ืขืช ื’ื™ืฉื” ืœืžืื’ืจื™ื ืžื•ื’ื‘ืœื™ื. ืชืžื™ื›ื” ื‘ื›ื•ืชืจืช WWW-Authenticate ืžืืคืฉืจืช ืœื”ืขื‘ื™ืจ ืคืจืžื˜ืจื™ื ืฉืœ ื”ื™ืงืฃ OAuth ืœื’ื™ืฉื” ื ืคืจื“ืช ื™ื•ืชืจ ืฉืœ ืžืฉืชืžืฉื™ื ืœืžืื’ืจื™ื ื•ืœืชื—ื•ื ืืช ื”ื”ื™ืงืฃ ื”ื–ืžื™ื ื™ื ืœื‘ืงืฉื•ืช.
  • ื ื•ืกืคื” ืืคืฉืจื•ืช ืคื•ืจืžื˜ "%(ahead-behind: )", ื”ืžืืคืฉืจ ืœืงื‘ืœ ืžื™ื“ ืžื™ื“ืข ืขืœ ืžืกืคืจ ื”ืžื—ื•ื™ื™ื‘ื™ื ื”ืงื™ื™ืžื™ื ืื• ื ืขื“ืจื™ื ื‘ืกื ื™ืฃ ืžืกื•ื™ื, ื‘ื™ื—ืก ืœืกื ื™ืฃ ืื—ืจ (ืขื“ ื›ืžื” ืกื ื™ืฃ ืื—ื“ ืžืคื’ืจ ืื• ืœืคื ื™ ืื—ืจ ื‘ืจืžืช ื”ื”ืชื—ื™ื™ื‘ื•ื™ื•ืช). ื‘ืขื‘ืจ, ืงื‘ืœืช ื”ืžื™ื“ืข ื”ื–ื” ื“ืจืฉื” ืฉืชื™ ืคืงื•ื“ื•ืช ื ืคืจื“ื•ืช: "git rev-list --count main..my-feature" ื›ื“ื™ ืœืงื‘ืœ ืืช ืžืกืคืจ ื”ื”ืชื—ื™ื™ื‘ื•ื™ื•ืช ื”ื™ื™ื—ื•ื“ื™ื•ืช ืœืกื ื™ืฃ, ื•-"git rev-list --count my-feature.. main" ื›ื“ื™ ืœืงื‘ืœ ืืช ื”ืžืกืคืจ ื”ื—ืกืจ commits. ื›ืขืช ื ื™ืชืŸ ืœืฆืžืฆื ื—ื™ืฉื•ื‘ื™ื ื›ืืœื” ืœื”ื•ืจืื” ืื—ืช, ืžื” ืฉืžืคืฉื˜ ืืช ืžื˜ืคืœื™ ื”ื›ืชื™ื‘ื” ื•ืžืฆืžืฆื ืืช ื–ืžืŸ ื”ื‘ื™ืฆื•ืข. ืœื“ื•ื’ืžื”, ื›ื“ื™ ืœื”ืฆื™ื’ ืกื ื™ืคื™ื ืฉืœื ืžืžื•ื–ื’ื™ื ื•ืœื”ืขืจื™ืš ืื ื”ื ื ืžืฆืื™ื ืžืื—ื•ืจื™ ืื• ืœืคื ื™ ื”ืกื ื™ืฃ ื”ืจืืฉื™ ืฉืœื”ื, ืืชื” ื™ื›ื•ืœ ืœื”ืฉืชืžืฉ ื‘-one liner: $ git for-each-ref --no-merged=origin/HEAD \ --format=' %(refname:short) %(ahead-behind :origin/HEAD)' \ refs/heads/tb/ | ืขืžื•ื“ื” -t tb/cruft-extra-tips 2 96 tb/for-each-refโ€”ืืœ ืชื›ืœื•ืœ 16 96 tb/roaring-bitmaps 47 3 ื‘ืžืงื•ื ื”ืกืงืจื™ืคื˜ ืฉื ืขืฉื” ื‘ื• ืฉื™ืžื•ืฉ ืงื•ื“ื, ืฉื”ื•ื ืื™ื˜ื™ ืคื™ 17: $ git for-each-ref - format='%(refname:short)' --no-merged=origin/HEAD \ refs/heads/tb | while read ref do ahead="$(git rev-list --count origin/HEAD..$ref)" behind="$(git rev-list --count $ref..origin/HEAD)" printf "%s %d %d\n" "$ref" "$ahead" "$behind" ื‘ื•ืฆืข | ืขืžื•ื“ื” -t tb/cruft-extra-tips 2 96 tb/for-each-refโ€”ืืœ ืชื›ืœื•ืœ 16 96 tb/roaring-bitmaps 47 3
  • ื ื•ืกืคื” ืืคืฉืจื•ืช "--porcelain" ืœืคืงื•ื“ืช "git fetch", ื”ืžื™ื™ืฆืจืช ืคืœื˜ ื‘ืคื•ืจืžื˜ " โ€, ืคื—ื•ืช ืงืจื™ื, ืื‘ืœ ื ื•ื— ื™ื•ืชืจ ืœื ื™ืชื•ื— ื‘ืกืงืจื™ืคื˜ื™ื.
  • ื ื•ืกืคื” ื”ื’ื“ืจืช "fetch.hideRefs" ืœื”ืืฆืช ืคืขื•ืœื•ืช "git fetch" ืขืœ ื™ื“ื™ ื”ืกืชืจืช ื—ืœืง ืžื”ืงื™ืฉื•ืจื™ื ื‘ืžืื’ืจ ื”ืžืงื•ืžื™ ื‘ืฉืœื‘ ื”ื‘ื“ื™ืงื” ื”ืื ื”ืฉืจืช ืฉืœื— ืืช ืกื˜ ื”ืื•ื‘ื™ื™ืงื˜ื™ื ื”ืžืœื, ืžื” ืฉื—ื•ืกืš ื–ืžืŸ ืขืœ ื™ื“ื™ ื”ื’ื‘ืœืช ื”ืกื™ืžื•ืŸ ืœืฉืจืชื™ื ื‘ืœื‘ื“ ืฉืžืžื ื• ื”ื ืชื•ื ื™ื ืžืื•ื—ื–ืจื™ื ื™ืฉื™ืจื•ืช. ืœื“ื•ื’ืžื”, ื‘ืขืช ื‘ื“ื™ืงื” ืขืœ ืžืขืจื›ืช ืขื ืžืื’ืจื™ื ื”ืžื›ื™ืœื™ื ืžืกืคืจ ืจื‘ ืฉืœ ืงื™ืฉื•ืจื™ื ื—ื™ืฆื•ื ื™ื™ื ื‘ืžืขืงื‘, ืœื ื›ื•ืœืœ ื›ืœ ื”ืงื™ืฉื•ืจื™ื ืคืจื˜ ืœืืœื” ื”ืžื•ืคื ื™ื ืœืฉืจืช ื”ื™ืขื“ ื”ืžืจื•ื—ืง $ื”ืคื—ื™ืช ืืช ืคืขื•ืœืช ื”-"git fetch" ืž-20 ื“ืงื•ืช ืœ-30 ืฉื ื™ื•ืช. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/remotes/$remote \ ืœื”ื‘ื™ื $remote
  • ื”ืคืงื•ื“ื” "git fsck" ืžื™ื™ืฉืžืช ืืช ื”ื™ื›ื•ืœืช ืœื‘ื“ื•ืง ืื ื™ืฉ ืฉื—ื™ืชื•ืช, ื”ืชืืžืช ืกื›ื•ื ื‘ื“ื™ืงื” ื•ื ื›ื•ื ื•ืช ืขืจื›ื™ื ื‘ืžืคื•ืช ืกื™ื‘ื™ื•ืช ืฉืœ ื ื’ื™ืฉื•ืช ื•ื‘ืื™ื ื“ืงืกื™ื ื”ืคื•ื›ื™ื.
  • ื”ืคืงื•ื“ื” "git clone --local" ืžืฆื™ื’ื” ื›ืขืช ืฉื’ื™ืื” ื‘ืขืช ื ื™ืกื™ื•ืŸ ืœื”ืขืชื™ืง ืžืžืื’ืจ ื”ืžื›ื™ืœ ืงื™ืฉื•ืจื™ื ืกืžืœื™ื™ื ื‘ืชื•ืš $GIT_DIR.

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

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