microsoft / git

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

Rebase to v2.45.1 #652

Closed dscho closed 3 months ago

dscho commented 4 months ago
Range-diff relative to clean/vfs-2.45.0 * 146: 9d4453e8d6f = 1: 9d4453e8d6f ci: drop mention of BREW_INSTALL_PACKAGES variable * 147: 11c7001e3d3 = 2: 11c7001e3d3 ci: avoid bare "gcc" for osx-gcc job * 148: 7df2405b38e = 3: 7df2405b38e ci: stop installing "gcc-13" for osx-gcc * 1: c5eb22f61df = 4: 22c94686f60 for-each-repo: optionally keep going on an error * 2: 39cf3727939 = 5: 2e13c3782eb maintenance: running maintenance should not stop on errors * 3: 8fc81fb1750 = 6: 13fd78bc23c reset --stdin: trim carriage return from the paths * 4: 11a339e0e54 ! 7: 257787b33f0 Identify microsoft/git via a distinct version suffix ``````diff @@ Commit message ## GIT-VERSION-GEN ## @@ GVF=GIT-VERSION-FILE - DEF_VER=v2.45.0 + DEF_VER=v2.45.1 +# Identify microsoft/git via a distinct version suffix +DEF_VER=$DEF_VER.vfs.0.0 `````` * 5: 2d5d9187aed = 8: 6c6a882de86 gvfs: ensure that the version is based on a GVFS tag * 6: 00d0db0090b = 9: 86422410776 gvfs: add a GVFS-specific header file * 7: 1630ca473b9 = 10: 4d672dfb63d gvfs: add the core.gvfs config setting * 8: add4a590c68 = 11: a4b9a719412 gvfs: add the feature to skip writing the index' SHA-1 * 9: 912f10429e2 = 12: b9f275b30cf gvfs: add the feature that blobs may be missing * 10: cc76156c795 = 13: c4f195bfddd gvfs: prevent files to be deleted outside the sparse checkout * 11: 0b42dcd6107 = 14: 526552c056a gvfs: optionally skip reachability checks/upload pack during fetch * 12: 05f8c126e5c = 15: 1c196d7f489 gvfs: ensure all filters and EOL conversions are blocked * 13: fa0e1594785 = 16: 22b726b71ec gvfs: allow "virtualizing" objects * 109: bad0bc35471 = 17: af7f27f9286 git_config_set_multivar_in_file_gently(): add a lock timeout * 111: 4b9cb8ab336 = 18: 9bfd2ed046d scalar: set the config write-lock timeout to 150ms * 113: dfd18770005 = 19: de1765e8a6a scalar: add docs from microsoft/scalar * 114: e4139c56cba = 20: e64cc9c1ea6 scalar (Windows): use forward slashes as directory separators * 115: 32eb9254f6e = 21: ad5658fffbd scalar: add retry logic to run_git() * 116: c65f8784bf1 = 22: 9fdf70d661d scalar: support the `config` command for backwards compatibility * 143: 1b65e5fbb6b = 23: b944f0a3be1 sequencer: avoid progress when stderr is redirected * 14: d6ee3364c93 ! 24: 2e30eb6a968 Hydrate missing loose objects in check_and_freshen() ``````diff @@ t/t0410/read-object (new) + } +} - ## t/t0411-read-object.sh (new) ## + ## t/t0499-read-object.sh (new) ## @@ +#!/bin/sh + `````` * 15: 156a40feb08 ! 25: 24bcae8eabb sha1_file: when writing objects, skip the read_object_hook ``````diff @@ t/t0410/read-object: while (1) { die "bad command '$command'"; } - ## t/t0411-read-object.sh ## -@@ t/t0411-read-object.sh: test_expect_success 'invalid blobs generate errors' ' + ## t/t0499-read-object.sh ## +@@ t/t0499-read-object.sh: test_expect_success 'invalid blobs generate errors' ' test_must_fail git cat-file blob "invalid") ' `````` * 16: 7402811eddf ! 26: 51870be45e3 gvfs: add global command pre and post hook procs ``````diff @@ hook.c #include "advice.h" #include "gettext.h" #include "hook.h" -@@ - #include "run-command.h" - #include "config.h" - #include "strbuf.h" -+#include "setup.h" -+ +@@ hook.c: static int identical_to_template_hook(const char *name, const char *path) + return ret; + } + +static int early_hooks_path_config(const char *var, const char *value, + const struct config_context *ctx, void *cb) +{ @@ hook.c + strbuf_addf(result, "%s%s", hooks_dir.buf, name); + return result->buf; +} - ++ const char *find_hook(const char *name) { static struct strbuf path = STRBUF_INIT; +@@ hook.c: const char *find_hook(const char *name) + int found_hook; strbuf_reset(&path); - strbuf_git_path(&path, "hooks/%s", name); @@ hook.c + else if (!hook_path_early(name, &path)) + return NULL; + - if (access(path.buf, X_OK) < 0) { - int err = errno; - + found_hook = access(path.buf, X_OK) >= 0; + #ifdef STRIP_EXTENSION + if (!found_hook) { ## t/t0400-pre-command-hook.sh (new) ## @@ `````` * 17: e7bf03fe5e8 = 27: e6ff17f0c22 t0400: verify that the hook is called correctly from a subdirectory * 18: 7f7b1ae6de6 = 28: 42b51e25d70 Pass PID of git process to hooks. * 19: daba6653a08 ! 29: 31ed9bcbe68 pre-command: always respect core.hooksPath ``````diff @@ Commit message ## hook.c ## @@ hook.c: const char *find_hook(const char *name) - static struct strbuf path = STRBUF_INIT; + int found_hook; strbuf_reset(&path); - if (have_git_dir()) @@ hook.c: const char *find_hook(const char *name) + } else if (!hook_path_early(name, &path)) return NULL; - if (access(path.buf, X_OK) < 0) { + found_hook = access(path.buf, X_OK) >= 0; ## t/t0400-pre-command-hook.sh ## @@ t/t0400-pre-command-hook.sh: test_expect_success 'in a subdirectory, using an alias' ' `````` * 20: ea46c9ba2ac = 30: 56a24e44981 sparse-checkout: update files with a modify/delete conflict * 21: 9bb3d306d57 = 31: 019a683e470 sparse-checkout: avoid writing entries with the skip-worktree bit * 22: 64b8e559fe5 = 32: 4f7cfe35e0d Do not remove files outside the sparse-checkout * 23: df0ee3ad80d = 33: 6fc41139af2 send-pack: do not check for sha1 file when GVFS_MISSING_OK set * 24: a2aad6e44a0 = 34: 118a5274c7e cache-tree: remove use of strbuf_addf in update_one * 25: 379037de992 = 35: 1777a92e9bd gvfs: block unsupported commands when running in a GVFS repo * 26: f5f866783c9 = 36: db31b455cff worktree: allow in Scalar repositories * 27: 559d22d27c6 = 37: d38541df0a3 gvfs: allow overriding core.gvfs * 28: 915dd0e07bb = 38: 180746b5ed9 BRANCHES.md: Add explanation of branches and using forks * 29: fb3896b4235 = 39: d29907eb32f Add virtual file system settings and hook proc * 30: 3a23415867a = 40: 06228cddadb virtualfilesystem: don't run the virtual file system hook if the index has been redirected * 31: fd88f1d29ce = 41: 3445aa0b6cc virtualfilesystem: check if directory is included * 32: a235f3e9f69 = 42: b56d9d4a415 backwards-compatibility: support the post-indexchanged hook * 33: 2d546459857 = 43: ec31fd550f0 gvfs: verify that the built-in FSMonitor is disabled * 34: 463c44a9bc8 = 44: 91546cb9b45 status: add status serialization mechanism * 35: 053e352b533 = 45: 5883f07892d Teach ahead-behind and serialized status to play nicely together * 36: 4b646b42bab = 46: e6ee448d119 status: serialize to path * 37: 58c9b0b494e = 47: 8ccf9fbadb0 status: reject deserialize in V2 and conflicts * 38: b46bedb4e1e = 48: 82efde95a9c serialize-status: serialize global and repo-local exclude file metadata * 39: d917783d263 = 49: 4830a2e10c5 status: deserialization wait * 40: 801300d10bc = 50: a9c962ca798 merge-recursive: avoid confusing logic in was_dirty() * 41: 5a58776d1ec = 51: 9802bfde74f merge-recursive: add some defensive coding to was_dirty() * 42: 7a43c9a7fef = 52: 31f1d9c30eb merge-recursive: teach was_dirty() about the virtualfilesystem * 43: 006fb3931cd = 53: 705e175dc52 status: deserialize with -uno does not print correct hint * 44: e383198a433 = 54: 45e4ed89a8a fsmonitor: check CE_FSMONITOR_VALID in ce_uptodate * 45: 7002ec2d16f = 55: daed3eecf71 fsmonitor: add script for debugging and update script for tests * 46: ab232b3924e = 56: be8e145afe0 status: disable deserialize when verbose output requested. * 47: dd16e4fe3e0 = 57: 16993e822d9 t7524: add test for verbose status deserialzation * 48: c51d6101774 = 58: 297161e9ae3 deserialize-status: silently fallback if we cannot read cache file * 49: d1b84be14d2 = 59: af290cd6a46 gvfs:trace2:data: add trace2 tracing around read_object_process * 50: 323ae62840c = 60: a64d037a8e2 gvfs:trace2:data: status deserialization information * 51: 09833257b35 = 61: d9948c9b962 gvfs:trace2:data: status serialization * 52: 8ff9081b8a0 = 62: 3d9f4cd2bc5 gvfs:trace2:data: add vfs stats * 53: 316985cbc0b = 63: 5fefbad7152 trace2: refactor setting process starting time * 54: ffa6a7a1e95 = 64: 207a15ee520 trace2:gvfs:experiment: clear_ce_flags_1 * 55: 6ed0189f297 = 65: 83055a8826e trace2:gvfs:experiment: report_tracking * 56: 61f377718a8 = 66: f42f31e1d76 trace2:gvfs:experiment: read_cache: annotate thread usage in read-cache * 57: 7e259e1938a = 67: fe738aaab7b trace2:gvfs:experiment: read-cache: time read/write of cache-tree extension * 58: 485d47e2e77 = 68: 3a8eaf03baa trace2:gvfs:experiment: add region to apply_virtualfilesystem() * 59: 63eadcfba1a = 69: 960cd8aa89a trace2:gvfs:experiment: add region around unpack_trees() * 60: 3f6652a9161 = 70: 5b2520ffb4f trace2:gvfs:experiment: add region to cache_tree_fully_valid() * 61: cb0d9f6953e = 71: 23f9c10edd0 trace2:gvfs:experiment: add unpack_entry() counter to unpack_trees() and report_tracking() * 62: 343171161cf = 72: 3a70cd1e3e1 trace2:gvfs:experiment: increase default event depth for unpack-tree data * 63: 62d510e790a = 73: 27a974bc3a8 trace2:gvfs:experiment: add data for check_updates() in unpack_trees() * 64: 244c418be6d = 74: c494bdacc65 Trace2:gvfs:experiment: capture more 'tracking' details * 65: 5223a1fcd4c = 75: 2924e383ed7 credential: set trace2_child_class for credential manager children * 66: fe1cf670875 = 76: bbff5ff3fa7 sub-process: do not borrow cmd pointer from caller * 67: f277df43641 = 77: 344654ceba5 sub-process: add subprocess_start_argv() * 68: db65d92686e = 78: 216562b5e38 sha1-file: add function to update existing loose object cache * 69: 2e22b519dc8 = 79: c0bdffcd695 packfile: add install_packed_git_and_mru() * 70: 582dec7b466 = 80: f7068d0d6b4 index-pack: avoid immediate object fetch while parsing packfile * 71: 9f20de307c4 = 81: e6f64556f43 gvfs-helper: create tool to fetch objects using the GVFS Protocol * 72: 229b5be90b6 = 82: 336904a2dd1 sha1-file: create shared-cache directory if it doesn't exist * 73: 7b059dfa307 = 83: ff9c896d0f8 gvfs-helper: better handling of network errors * 74: 091bf6849e7 = 84: 799562ea6ca gvfs-helper-client: properly update loose cache with fetched OID * 75: aaa2c89509d = 85: b53a3119694 gvfs-helper: V2 robust retry and throttling * 76: c869fa7f916 = 86: da851414d7c gvfs-helper: expose gvfs/objects GET and POST semantics * 77: 2da2d65b8b7 = 87: 0b64a682ea2 gvfs-helper: dramatically reduce progress noise * 78: d83f7570700 = 88: 57dea35398a gvfs-helper-client.h: define struct object_id * 79: e49eee58458 = 89: ea955310290 gvfs-helper: handle pack-file after single POST request * 80: c128fc04584 = 90: b3ec48029d0 test-gvfs-prococol, t5799: tests for gvfs-helper * 81: 9a9fe2bbd5f = 91: 7c82e541499 gvfs-helper: move result-list construction into install functions * 82: a5ce642d9e3 = 92: ad217d47ef1 t5799: add support for POST to return either a loose object or packfile * 83: 51d29209fcd = 93: e4cba83983c t5799: cleanup wc-l and grep-c lines * 84: f11ed18e133 = 94: 1ce899da107 gvfs-helper: verify loose objects after write * 85: c4842292be5 = 95: 41ad1041661 t7599: create corrupt blob test * 86: f5af304240a = 96: 62436474bf7 gvfs-helper: add prefetch support * 87: af3935a7e47 = 97: 651d8cb8884 gvfs-helper: add prefetch .keep file for last packfile * 88: 45c66345cad = 98: ff6c545e5b4 gvfs-helper: do one read in my_copy_fd_len_tail() * 89: a3ee0455f06 = 99: c6515af04c8 gvfs-helper: move content-type warning for prefetch packs * 90: 00d4feb65a1 = 100: 5305659b222 fetch: use gvfs-helper prefetch under config * 91: 04ee5a13634 = 101: 3a933f4a859 gvfs-helper: better support for concurrent packfile fetches * 92: 733f9ad7220 = 102: 968175d0b46 remote-curl: do not call fetch-pack when using gvfs-helper * 93: f980c673dc3 = 103: d314f2da801 fetch: reprepare packs before checking connectivity * 94: dbc55cc3599 = 104: 545e939450d gvfs-helper: retry when creating temp files * 95: a7889510b62 = 105: ee2b8b4a17a sparse: avoid warnings about known cURL issues in gvfs-helper.c * 97: 87e7e61a941 = 106: 5e1af6c8660 gvfs-helper: add --max-retries to prefetch verb * 99: 77475d4644c = 107: d6d818bcd63 t5799: add tests to detect corrupt pack/idx files in prefetch * 96: 4cb8f09ba2a = 108: bf9234b5559 maintenance: care about gvfs.sharedCache config * 98: eac30a5a843 = 109: 820079f4618 unpack-trees:virtualfilesystem: Improve efficiency of clear_ce_flags * 100: 528a8b1bc07 = 110: 3492d822ef8 homebrew: add GitHub workflow to release Cask * 102: c620a9f856a = 111: 3dfe79acf5c Adding winget workflows * 103: ba54b361678 = 112: f3fecaa5c39 Disable the `monitor-components` workflow in msft-git * 104: e59be1f1461 = 113: e0bd85c9273 .github: enable windows builds on microsoft fork * 149: e18dc8bdb27 = 114: 25f21e31f71 release: create initial Windows installer build workflow * 150: 60c99e93a28 = 115: 48dc640af6e help: special-case HOST_CPU `universal` * 151: 91fe926b781 = 116: af15e3b300b release: add Mac OSX installer build * 101: d4804777406 = 117: 5a08847d3ef gvfs-helper: ignore .idx files in prefetch multi-part responses * 152: 22da5f2c28c = 118: f2a141dd303 release: build unsigned Ubuntu .deb package * 153: 728f371b0ee = 119: cb824c48862 release: add signing step for .deb package * 154: 22d0532957d = 120: 4cab8219004 release: create draft GitHub release with packages & installers * 155: 88e71859f10 = 121: 91c915924bc build-git-installers: publish gpg public key * 156: a2ee54ef76d = 122: 9c5d54a6d54 release: continue pestering until user upgrades * 105: 586cda0ec85 = 123: b347098c2ea update-microsoft-git: create barebones builtin * 157: 20d7ab4ad51 = 124: f8b462cebc0 Makefile: allow specifying GIT_BUILT_FROM_COMMIT * 106: 3a3c47b0b06 = 125: f3ef0b86ffe update-microsoft-git: Windows implementation * 158: 31aef20f825 = 126: 8bfcd80bccb dist: archive HEAD instead of HEAD^{tree} * 107: 08d7d2fb299 = 127: 810b7d9c742 update-microsoft-git: use brew on macOS * 159: 210db51c2c9 = 128: 368e4c1d168 release: include GIT_BUILT_FROM_COMMIT in MacOS build * 108: 12ac17ab36d = 129: a05be3e478a .github: update ISSUE_TEMPLATE.md for microsoft/git * 160: afcc1edd61b = 130: 3e282e7105f release: add installer validation * 110: 3b43886a9a2 = 131: a7cbc7cfe98 .github: update PULL_REQUEST_TEMPLATE.md * 112: a5b0281fb6e = 132: 0ab58319a88 Adjust README.md for microsoft/git * 117: 306a13a39fb = 133: fb70d6b0514 scalar: implement a minimal JSON parser * 118: 321a4a5e6be = 134: a2b0d56115c scalar clone: support GVFS-enabled remote repositories * 119: 11c91905f3a = 135: ce509f679ab test-gvfs-protocol: also serve smart protocol * 120: 8538f2c13ff = 136: 2d3cff3b9a1 gvfs-helper: add the `endpoint` command * 121: 8f7412bad85 = 137: 0be0f3f4e16 dir_inside_of(): handle directory separators correctly * 122: 418b97ade78 = 138: 4543f546ba9 scalar: disable authentication in unattended mode * 123: bdb620d9c5d = 139: bb54b06d531 scalar: do initialize `gvfs.sharedCache` * 124: 7685c296683 = 140: af5bbd9d9a0 scalar diagnose: include shared cache info * 125: a4fc1df623f = 141: 67ed3686f20 scalar: only try GVFS protocol on https:// URLs * 126: fd51fa533ce = 142: 5192e70348b scalar: verify that we can use a GVFS-enabled repository * 127: 9f18d972e7f = 143: af7bf17334a scalar: add the `cache-server` command * 128: f6efa1c8cb2 = 144: 081e43f9f65 scalar: add a test toggle to skip accessing the vsts/info endpoint * 129: 1df44f624db = 145: e3cafb9fabd scalar: adjust documentation to the microsoft/git fork * 130: ce372e8c0ea = 146: a40a2b65a6e scalar: enable untracked cache unconditionally * 131: e8374f913cc = 147: a4725c251b3 scalar: parse `clone --no-fetch-commits-and-trees` for backwards compatibility * 132: 267f68c22ac = 148: 55efd42b7f1 scalar diagnose: accommodate Scalar's Functional Tests * 133: 9eb2a07b268 = 149: 7baf5a43c4f ci: run Scalar's Functional Tests * 134: 5854c301ace = 150: 015e51f2e26 scalar: upgrade to newest FSMonitor config setting * 135: 3940c78db58 = 151: 5bf7774f4d8 abspath: make strip_last_path_component() global * 136: f505c40acd6 = 152: d2fb8ac8acf scalar: .scalarCache should live above enlistment * 137: 052c63ebed8 = 153: 42149f3c048 add/rm: allow adding sparse entries when virtual * 138: 518476a28b2 = 154: 837faa674d9 sparse-checkout: add config to disable deleting dirs * 139: c168c258d55 = 155: fc4ffa91a4c diff: ignore sparse paths in diffstat * 140: c2ba7729ad9 = 156: fdc1eaacbf4 repo-settings: enable sparse index by default * 141: c33429b40d9 = 157: b20e2759a95 diff(sparse-index): verify with partially-sparse * 142: 8a7808ac4c9 = 158: efb2ce14959 stash: expand testing for `git stash -u` * 144: 49adf4440e6 = 159: 3a70279ab6b sparse: add vfs-specific precautions * 145: 72afab77f75 = 160: 7e0d519ede1 reset: fix mixed reset when using virtual filesystem * 161: a4c57c1de6d = 161: f8f589a86c3 credential: add new interactive config option * 162: 691377e33d4 = 162: 237dbe79da5 maintenance: add custom config to background jobs * 163: 6e22ced3c96 = 163: 6f73d250a69 scalar: configure maintenance during 'reconfigure' * 164: c784114709f = 164: 674791e49b7 scalar: avoid segfault in reconfigure --all * 165: 6d6715574ee = 165: 122960d3d73 scalar: make GVFS Protocol a forced choice * 166: 4a13a743063 = 166: cef42216d3f t5300: confirm failure of git index-pack when non-idx suffix requested * 167: af3dcf29f72 = 167: 4fc49d381c8 index-pack: disable rev-index if index file has non .idx suffix * 168: 50a96c9cdef = 168: 7851229937a sparse-index.c: fix use of index hashes in expand_index * 169: 324e77b9e6b = 169: f1a48228127 t1092: add test for untracked files and directories