microsoft / git

A fork of Git containing Microsoft-specific patches.
http://git-scm.com/
Other
761 stars 92 forks source link

Rebase to Git for Windows v2.45.2 #654

Closed dscho closed 2 months ago

dscho commented 3 months ago
Range-diff relative to clean/vfs-2.45.1 * 1: 9d4453e8d6f (upstream: b6b9fafacb2) = 1: 9d4453e8d6f ci: drop mention of BREW_INSTALL_PACKAGES variable * 2: 11c7001e3d3 (upstream: 93ec0a7cbfc) < -: ----------- ci: avoid bare "gcc" for osx-gcc job * 3: 7df2405b38e (upstream: d17d18f85a2) < -: ----------- ci: stop installing "gcc-13" for osx-gcc * 4: 22c94686f60 = 2: c9f8124e714 for-each-repo: optionally keep going on an error * 5: 2e13c3782eb = 3: 363fcf8404e maintenance: running maintenance should not stop on errors * 6: 13fd78bc23c = 4: b1a4e293798 reset --stdin: trim carriage return from the paths * 7: 257787b33f0 ! 5: c3e4b17000e Identify microsoft/git via a distinct version suffix ``````diff @@ Commit message ## GIT-VERSION-GEN ## @@ GVF=GIT-VERSION-FILE - DEF_VER=v2.45.1 + DEF_VER=v2.45.2 +# Identify microsoft/git via a distinct version suffix +DEF_VER=$DEF_VER.vfs.0.0 `````` * 8: 6c6a882de86 = 6: 5f73c4bc9d1 gvfs: ensure that the version is based on a GVFS tag * 9: 86422410776 = 7: d100b3366f7 gvfs: add a GVFS-specific header file * 10: 4d672dfb63d = 8: 8545025cdfb gvfs: add the core.gvfs config setting * 11: a4b9a719412 = 9: df35325cf6a gvfs: add the feature to skip writing the index' SHA-1 * 12: b9f275b30cf = 10: 3ad4d9b2029 gvfs: add the feature that blobs may be missing * 13: c4f195bfddd = 11: 6f4087bbb8a gvfs: prevent files to be deleted outside the sparse checkout * 14: 526552c056a = 12: aa9410fede4 gvfs: optionally skip reachability checks/upload pack during fetch * 15: 1c196d7f489 = 13: aaed1c81aaa gvfs: ensure all filters and EOL conversions are blocked * 16: 22b726b71ec = 14: 6add08af45a gvfs: allow "virtualizing" objects * 24: 2e30eb6a968 = 15: 9938de94b51 Hydrate missing loose objects in check_and_freshen() * 25: 24bcae8eabb = 16: f5be3c35fd6 sha1_file: when writing objects, skip the read_object_hook * 26: 51870be45e3 ! 17: 3bc6f98adf6 gvfs: add global command pre and post hook procs ``````diff @@ hook.c #include "advice.h" #include "gettext.h" #include "hook.h" -@@ hook.c: static int identical_to_template_hook(const char *name, const char *path) - return ret; - } +@@ + #include "environment.h" + #include "setup.h" +static int early_hooks_path_config(const char *var, const char *value, + const struct config_context *ctx, void *cb) `````` * 27: e6ff17f0c22 = 18: 01df7d18c89 t0400: verify that the hook is called correctly from a subdirectory * 28: 42b51e25d70 = 19: c6b53f9d2ab Pass PID of git process to hooks. * 29: 31ed9bcbe68 = 20: 2927634e95f pre-command: always respect core.hooksPath * 30: 56a24e44981 = 21: 6d01e9ceec5 sparse-checkout: update files with a modify/delete conflict * 31: 019a683e470 = 22: 36bea5a9cc9 sparse-checkout: avoid writing entries with the skip-worktree bit * 32: 4f7cfe35e0d = 23: d0f43c504ec Do not remove files outside the sparse-checkout * 33: 6fc41139af2 = 24: 1d61d9e015a send-pack: do not check for sha1 file when GVFS_MISSING_OK set * 34: 118a5274c7e = 25: 5fa02b14020 cache-tree: remove use of strbuf_addf in update_one * 35: 1777a92e9bd = 26: 14634cbeb1c gvfs: block unsupported commands when running in a GVFS repo * 36: db31b455cff = 27: bf99c7d396b worktree: allow in Scalar repositories * 37: d38541df0a3 = 28: 70c71d58cca gvfs: allow overriding core.gvfs * 38: 180746b5ed9 = 29: 0cfb4edbdfa BRANCHES.md: Add explanation of branches and using forks * 39: d29907eb32f = 30: 5feb6637cff Add virtual file system settings and hook proc * 40: 06228cddadb = 31: a51fc4a3eed virtualfilesystem: don't run the virtual file system hook if the index has been redirected * 41: 3445aa0b6cc = 32: 23e03125728 virtualfilesystem: check if directory is included * 42: b56d9d4a415 = 33: 21546cca416 backwards-compatibility: support the post-indexchanged hook * 43: ec31fd550f0 = 34: da51b7fd034 gvfs: verify that the built-in FSMonitor is disabled * 44: 91546cb9b45 = 35: ee91f7bc9ee status: add status serialization mechanism * 45: 5883f07892d = 36: 7161326dc84 Teach ahead-behind and serialized status to play nicely together * 46: e6ee448d119 = 37: 46e4d2bde14 status: serialize to path * 47: 8ccf9fbadb0 = 38: 430f93116c9 status: reject deserialize in V2 and conflicts * 48: 82efde95a9c = 39: a25585a8884 serialize-status: serialize global and repo-local exclude file metadata * 49: 4830a2e10c5 = 40: 2f1678acb86 status: deserialization wait * 50: a9c962ca798 = 41: 4d2686efa88 merge-recursive: avoid confusing logic in was_dirty() * 51: 9802bfde74f = 42: acfa9ddb0d0 merge-recursive: add some defensive coding to was_dirty() * 52: 31f1d9c30eb = 43: f3539220eda merge-recursive: teach was_dirty() about the virtualfilesystem * 53: 705e175dc52 = 44: 5b2983dd414 status: deserialize with -uno does not print correct hint * 54: 45e4ed89a8a = 45: 0a3cb9be667 fsmonitor: check CE_FSMONITOR_VALID in ce_uptodate * 55: daed3eecf71 = 46: 39fc367b5fc fsmonitor: add script for debugging and update script for tests * 56: be8e145afe0 = 47: 6aa8a77c8d6 status: disable deserialize when verbose output requested. * 57: 16993e822d9 = 48: 062196e9ab6 t7524: add test for verbose status deserialzation * 58: 297161e9ae3 = 49: 54b0899ad71 deserialize-status: silently fallback if we cannot read cache file * 59: af290cd6a46 = 50: 35d034ded60 gvfs:trace2:data: add trace2 tracing around read_object_process * 60: a64d037a8e2 = 51: e096a307dd3 gvfs:trace2:data: status deserialization information * 61: d9948c9b962 = 52: 6b6c6fe12e3 gvfs:trace2:data: status serialization * 62: 3d9f4cd2bc5 = 53: 0bb194da36d gvfs:trace2:data: add vfs stats * 63: 5fefbad7152 = 54: ffa48df07fa trace2: refactor setting process starting time * 64: 207a15ee520 = 55: 5bd219f916d trace2:gvfs:experiment: clear_ce_flags_1 * 65: 83055a8826e = 56: bfb46cb39b8 trace2:gvfs:experiment: report_tracking * 66: f42f31e1d76 = 57: 8d041c00f3b trace2:gvfs:experiment: read_cache: annotate thread usage in read-cache * 67: fe738aaab7b = 58: e3fba71a3d0 trace2:gvfs:experiment: read-cache: time read/write of cache-tree extension * 68: 3a8eaf03baa = 59: 73970d7067c trace2:gvfs:experiment: add region to apply_virtualfilesystem() * 69: 960cd8aa89a = 60: 54d6dbb7e3a trace2:gvfs:experiment: add region around unpack_trees() * 70: 5b2520ffb4f = 61: 7d85f72e310 trace2:gvfs:experiment: add region to cache_tree_fully_valid() * 71: 23f9c10edd0 = 62: a0fa905f99d trace2:gvfs:experiment: add unpack_entry() counter to unpack_trees() and report_tracking() * 72: 3a70cd1e3e1 = 63: aba04978490 trace2:gvfs:experiment: increase default event depth for unpack-tree data * 73: 27a974bc3a8 = 64: ad9f6fb277f trace2:gvfs:experiment: add data for check_updates() in unpack_trees() * 74: c494bdacc65 = 65: a81af9d6194 Trace2:gvfs:experiment: capture more 'tracking' details * 75: 2924e383ed7 = 66: eb6901f93e2 credential: set trace2_child_class for credential manager children * 76: bbff5ff3fa7 = 67: b6e14a4fdb2 sub-process: do not borrow cmd pointer from caller * 77: 344654ceba5 = 68: 4ee6a3ca3f1 sub-process: add subprocess_start_argv() * 78: 216562b5e38 = 69: dd0ba0493a2 sha1-file: add function to update existing loose object cache * 79: c0bdffcd695 = 70: f5e04fb1d0d packfile: add install_packed_git_and_mru() * 80: f7068d0d6b4 = 71: 58ccf77f8e9 index-pack: avoid immediate object fetch while parsing packfile * 81: e6f64556f43 = 72: 1b2ae4ea003 gvfs-helper: create tool to fetch objects using the GVFS Protocol * 82: 336904a2dd1 = 73: b69789381e6 sha1-file: create shared-cache directory if it doesn't exist * 83: ff9c896d0f8 = 74: 35bdb6508e7 gvfs-helper: better handling of network errors * 84: 799562ea6ca = 75: aa9823b51ec gvfs-helper-client: properly update loose cache with fetched OID * 85: b53a3119694 = 76: db5d65a11b8 gvfs-helper: V2 robust retry and throttling * 86: da851414d7c = 77: fc7e510e162 gvfs-helper: expose gvfs/objects GET and POST semantics * 87: 0b64a682ea2 = 78: 5cf2d8bbeeb gvfs-helper: dramatically reduce progress noise * 88: 57dea35398a = 79: 7e4b11f6914 gvfs-helper-client.h: define struct object_id * 89: ea955310290 = 80: b9f27b6763e gvfs-helper: handle pack-file after single POST request * 90: b3ec48029d0 = 81: 876f1a78449 test-gvfs-prococol, t5799: tests for gvfs-helper * 91: 7c82e541499 = 82: d6313df2ffc gvfs-helper: move result-list construction into install functions * 92: ad217d47ef1 = 83: cd1958bcb94 t5799: add support for POST to return either a loose object or packfile * 93: e4cba83983c = 84: 60577c58017 t5799: cleanup wc-l and grep-c lines * 94: 1ce899da107 = 85: aff1ce5ae72 gvfs-helper: verify loose objects after write * 95: 41ad1041661 = 86: 88ae6890e18 t7599: create corrupt blob test * 96: 62436474bf7 = 87: b2be88ccafa gvfs-helper: add prefetch support * 97: 651d8cb8884 = 88: 67bd02bdfe7 gvfs-helper: add prefetch .keep file for last packfile * 98: ff6c545e5b4 = 89: f1ec908c454 gvfs-helper: do one read in my_copy_fd_len_tail() * 99: c6515af04c8 = 90: 2e9328b6467 gvfs-helper: move content-type warning for prefetch packs * 100: 5305659b222 = 91: bb2d109cd1e fetch: use gvfs-helper prefetch under config * 101: 3a933f4a859 = 92: 49b99dd81d3 gvfs-helper: better support for concurrent packfile fetches * 102: 968175d0b46 = 93: 99690f0808d remote-curl: do not call fetch-pack when using gvfs-helper * 103: d314f2da801 = 94: 352087516f6 fetch: reprepare packs before checking connectivity * 104: 545e939450d = 95: 5a57919970c gvfs-helper: retry when creating temp files * 105: ee2b8b4a17a = 96: b6b8bf20509 sparse: avoid warnings about known cURL issues in gvfs-helper.c * 108: bf9234b5559 = 97: ac88d2cc29f maintenance: care about gvfs.sharedCache config * 109: 820079f4618 = 98: 3b34d780ddf unpack-trees:virtualfilesystem: Improve efficiency of clear_ce_flags * 106: 5e1af6c8660 = 99: 2c252729147 gvfs-helper: add --max-retries to prefetch verb * 110: 3492d822ef8 = 100: 564cbd7a4a4 homebrew: add GitHub workflow to release Cask * 107: d6d818bcd63 = 101: c7644ead81e t5799: add tests to detect corrupt pack/idx files in prefetch * 111: 3dfe79acf5c = 102: 18773d674d5 Adding winget workflows * 117: 5a08847d3ef = 103: 2043a784dc0 gvfs-helper: ignore .idx files in prefetch multi-part responses * 112: f3fecaa5c39 ! 104: af923306a48 Disable the `monitor-components` workflow in msft-git ``````diff @@ .github/workflows/monitor-components.yml (deleted) - title-pattern: ^(?!.*(5\.[0-9]+[13579]|RC)) - - label: pcre2 - feed: https://github.com/PCRE2Project/pcre2/tags.atom -- - label: mingw-w64-clang -- feed: https://github.com/msys2/MINGW-packages/commits/master/mingw-w64-clang.atom +- - label: mingw-w64-llvm +- feed: https://github.com/msys2/MINGW-packages/commits/master/mingw-w64-llvm.atom - fail-fast: false - steps: - - uses: git-for-windows/rss-to-issues@v0 `````` * 113: e0bd85c9273 = 105: cbacdfca984 .github: enable windows builds on microsoft fork * 114: 25f21e31f71 = 106: 9fe4f1d151b release: create initial Windows installer build workflow * 115: 48dc640af6e = 107: 46aae3313d3 help: special-case HOST_CPU `universal` * 116: af15e3b300b = 108: 98467b0ea6d release: add Mac OSX installer build * 118: f2a141dd303 = 109: a646aa19ea3 release: build unsigned Ubuntu .deb package * 119: cb824c48862 = 110: 9a94045d519 release: add signing step for .deb package * 120: 4cab8219004 = 111: d0d8eeb48a8 release: create draft GitHub release with packages & installers * 121: 91c915924bc = 112: 32294789019 build-git-installers: publish gpg public key * 122: 9c5d54a6d54 = 113: c3bf3de51a6 release: continue pestering until user upgrades * 123: b347098c2ea = 114: 621fd8518dc update-microsoft-git: create barebones builtin * 124: f8b462cebc0 = 115: 46fce0cf684 Makefile: allow specifying GIT_BUILT_FROM_COMMIT * 125: f3ef0b86ffe = 116: 636b6ea6f68 update-microsoft-git: Windows implementation * 126: 8bfcd80bccb = 117: efaad38c175 dist: archive HEAD instead of HEAD^{tree} * 127: 810b7d9c742 = 118: 62e0e1c03c1 update-microsoft-git: use brew on macOS * 128: 368e4c1d168 = 119: 09214e5b4f2 release: include GIT_BUILT_FROM_COMMIT in MacOS build * 129: a05be3e478a = 120: f9654fa31c2 .github: update ISSUE_TEMPLATE.md for microsoft/git * 130: 3e282e7105f = 121: cbe40360293 release: add installer validation * 131: a7cbc7cfe98 = 122: 97308f026b5 .github: update PULL_REQUEST_TEMPLATE.md * 17: af7f27f9286 = 123: b232088cfa4 git_config_set_multivar_in_file_gently(): add a lock timeout * 18: 9bfd2ed046d = 124: 9532286755f scalar: set the config write-lock timeout to 150ms * 19: de1765e8a6a = 125: 7e2e07e9d46 scalar: add docs from microsoft/scalar * 20: e64cc9c1ea6 = 126: 39bc9f41969 scalar (Windows): use forward slashes as directory separators * 21: ad5658fffbd = 127: 16310d37d8f scalar: add retry logic to run_git() * 22: 9fdf70d661d = 128: 4d1c5005ac2 scalar: support the `config` command for backwards compatibility * 23: b944f0a3be1 = 129: 9cf52898ac7 sequencer: avoid progress when stderr is redirected * 132: 0ab58319a88 ! 130: 91323a2f4e1 Adjust README.md for microsoft/git ``````diff @@ README.md -Git for Windows -=============== - +-[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.1-4baaaa.svg)](CODE_OF_CONDUCT.md) -[![Open in Visual Studio Code](https://img.shields.io/static/v1?logo=visualstudiocode&label=&message=Open%20in%20Visual%20Studio%20Code&labelColor=2c2c32&color=007acc&logoColor=007acc)](https://open.vscode.dev/git-for-windows/git) -[![Build status](https://github.com/git-for-windows/git/workflows/CI/badge.svg)](https://github.com/git-for-windows/git/actions?query=branch%3Amain+event%3Apush) -[![Join the chat at https://gitter.im/git-for-windows/git](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/git-for-windows/git?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) `````` * 133: fb70d6b0514 = 131: 72cb2639f7b scalar: implement a minimal JSON parser * 134: a2b0d56115c = 132: 094d84ed91e scalar clone: support GVFS-enabled remote repositories * 135: ce509f679ab = 133: 680bf81cf64 test-gvfs-protocol: also serve smart protocol * 136: 2d3cff3b9a1 = 134: 351dfd5211b gvfs-helper: add the `endpoint` command * 137: 0be0f3f4e16 = 135: 20f9f2c3b89 dir_inside_of(): handle directory separators correctly * 138: 4543f546ba9 = 136: ceeb92bf896 scalar: disable authentication in unattended mode * 139: bb54b06d531 = 137: a36d18ea145 scalar: do initialize `gvfs.sharedCache` * 140: af5bbd9d9a0 = 138: c79e191c0b2 scalar diagnose: include shared cache info * 141: 67ed3686f20 = 139: 5a516d063c1 scalar: only try GVFS protocol on https:// URLs * 142: 5192e70348b = 140: 99850476213 scalar: verify that we can use a GVFS-enabled repository * 151: 9de21e86688 = 141: 1e6434e4425 scalar: add the `cache-server` command * 152: 6f81798700a = 142: 02cfd7bf3a8 scalar: add a test toggle to skip accessing the vsts/info endpoint * 153: c0b0b70f1a5 = 143: cfbc0d81bfe scalar: adjust documentation to the microsoft/git fork * 154: a4a5c1a380b = 144: 97cec471755 scalar: enable untracked cache unconditionally * 155: 0d142253694 = 145: 14eb55fd057 scalar: parse `clone --no-fetch-commits-and-trees` for backwards compatibility * 156: 3133ca84530 = 146: b582621450e scalar diagnose: accommodate Scalar's Functional Tests * 157: 3dc508a7eb7 = 147: a5913c315b3 ci: run Scalar's Functional Tests * 158: 1b2488665df = 148: dcd18d5d0b6 scalar: upgrade to newest FSMonitor config setting * 159: c30dbba85d5 = 149: ff81430993f abspath: make strip_last_path_component() global * 160: 5dd0b9e0909 = 150: e01e132e864 scalar: .scalarCache should live above enlistment * 143: 42149f3c048 = 151: d7b5f7557c3 add/rm: allow adding sparse entries when virtual * 144: 837faa674d9 = 152: 1719a1b5d43 sparse-checkout: add config to disable deleting dirs * 145: fc4ffa91a4c = 153: af4111bcf44 diff: ignore sparse paths in diffstat * 146: fdc1eaacbf4 = 154: 6eacaeeb9dc repo-settings: enable sparse index by default * 147: b20e2759a95 = 155: dc289a5272b diff(sparse-index): verify with partially-sparse * 148: efb2ce14959 = 156: 1efaae32fc7 stash: expand testing for `git stash -u` * 149: 3a70279ab6b = 157: 1d56c43e387 sparse: add vfs-specific precautions * 150: 7e0d519ede1 ! 158: d01f4980d78 reset: fix mixed reset when using virtual filesystem ``````diff @@ builtin/reset.c: static void update_index_from_diff(struct diff_queue_struct *q, + */ + if (core_virtualfilesystem && !file_exists(two->path)) + { ++ respect_skip_worktree = 0; + pos = index_name_pos(&the_index, two->path, strlen(two->path)); ++ + if ((pos >= 0 && ce_skip_worktree(the_index.cache[pos])) && + (is_missing || !was_missing)) + { @@ builtin/reset.c: static void update_index_from_diff(struct diff_queue_struct *q, + two->path); + + checkout_entry(ceBefore, &state, NULL, NULL); -+ respect_skip_worktree = 0; + } + } `````` * 161: c138a91d5e4 = 159: 258d3259c49 credential: add new interactive config option * 162: fdba9399c52 = 160: 0689571a728 maintenance: add custom config to background jobs * 163: f8edebbcd01 = 161: 89fd5b8ad5b scalar: configure maintenance during 'reconfigure' * 164: cbc232e9266 = 162: 700c97c7510 scalar: avoid segfault in reconfigure --all * 165: 0cbacc19e7c = 163: 9c910a11b11 scalar: make GVFS Protocol a forced choice * 166: 3a27091a1bd = 164: 023c72e7d86 t5300: confirm failure of git index-pack when non-idx suffix requested * 167: 0e1a1e3aea4 = 165: 3f3b1cf8dc5 index-pack: disable rev-index if index file has non .idx suffix * 168: 6662919988b = 166: 62d6bf61a3d sparse-index.c: fix use of index hashes in expand_index * 169: b7b93e56a7d = 167: 012b7e7814b t1092: add test for untracked files and directories * 170: d1840ac520c < -: ----------- fixup! reset: fix mixed reset when using virtual filesystem