-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rebase to v2.43.0 #615
Rebase to v2.43.0 #615
Conversation
sigh |
I added c15ee9f to fix the |
f9bcc32
to
3f0dcb0
Compare
3f0dcb0
to
c6b1e8b
Compare
Range-diff relative to -rc0 + universal binary PR + Trace2 redacting PR:
Summary: lotsa |
c6b1e8b
to
b958717
Compare
Range-diff relative to -rc1
tl;dr uneventful! |
While using the reset --stdin feature on windows path added may have a \r at the end of the path that wasn't getting removed so didn't match the path in the index and wasn't reset. Signed-off-by: Kevin Willford <[email protected]>
Signed-off-by: Saeed Noursalehi <[email protected]>
Since we really want to be based on a `.vfs.*` tag, let's make sure that there was a new-enough one, i.e. one that agrees with the first three version numbers of the recorded default version. This prevents e.g. v2.22.0.vfs.0.<some-huge-number>.<commit> from being used when the current release train was not yet tagged. It is important to get the first three numbers of the version right because e.g. Scalar makes decisions depending on those (such as assuming that the `git maintenance` built-in is not available, even though it actually _is_ available). Signed-off-by: Johannes Schindelin <[email protected]>
This header file will accumulate GVFS-specific definitions. Signed-off-by: Kevin Willford <[email protected]>
This does not do anything yet. The next patches will add various values for that config setting that correspond to the various features offered/required by GVFS. Signed-off-by: Kevin Willford <[email protected]> gvfs: refactor loading the core.gvfs config value This code change makes sure that the config value for core_gvfs is always loaded before checking it. Signed-off-by: Kevin Willford <[email protected]>
This takes a substantial amount of time, and if the user is reasonably sure that the files' integrity is not compromised, that time can be saved. Git no longer verifies the SHA-1 by default, anyway. Signed-off-by: Kevin Willford <[email protected]> Update for 2023-02-27: This feature was upstreamed as the index.skipHash config option. This resulted in some changes to the struct and some of the setup code. In particular, the config reading was moved to prepare_repo_settings(), so the core.gvfs bit check was moved there, too. Signed-off-by: Derrick Stolee <[email protected]>
Signed-off-by: Kevin Willford <[email protected]>
Prevent the sparse checkout to delete files that were marked with skip-worktree bit and are not in the sparse-checkout file. This is because everything with the skip-worktree bit turned on is being virtualized and will be removed with the change of HEAD. There was only one failing test when running with these changes that was checking to make sure the worktree narrows on checkout which was expected since we would no longer be narrowing the worktree. Update 2022-04-05: temporarily set 'sparse.expectfilesoutsideofpatterns' in test (until we start disabling the "remove present-despite-SKIP_WORKTREE" behavior with 'core.virtualfilesystem' in a later commit). Signed-off-by: Kevin Willford <[email protected]>
While performing a fetch with a virtual file system we know that there will be missing objects and we don't want to download them just because of the reachability of the commits. We also don't want to download a pack file with commits, trees, and blobs since these will be downloaded on demand. This flag will skip the first connectivity check and by returning zero will skip the upload pack. It will also skip the second connectivity check but continue to update the branches to the latest commit ids. Signed-off-by: Kevin Willford <[email protected]>
Ensure all filters and EOL conversions are blocked when running under GVFS so that our projected file sizes will match the actual file size when it is hydrated on the local machine. Signed-off-by: Ben Peart <[email protected]>
The idea is to allow blob objects to be missing from the local repository, and to load them lazily on demand. After discussing this idea on the mailing list, we will rename the feature to "lazy clone" and work more on this. Signed-off-by: Ben Peart <[email protected]>
Hydrate missing loose objects in check_and_freshen() when running virtualized. Add test cases to verify read-object hook works when running virtualized. This hook is called in check_and_freshen() rather than check_and_freshen_local() to make the hook work also with alternates. Helped-by: Kevin Willford <[email protected]> Signed-off-by: Ben Peart <[email protected]>
This is random stuff that probably all got upstream in the meantime.
When scripts or background maintenance wish to perform HTTP(S) requests, there is a risk that our stored credentials might be invalid. At the moment, this causes the credential helper to ping the user and block the process. Even if the credential helper does not ping the user, Git falls back to the 'askpass' method, which includes a direct ping to the user via the terminal. Even setting the 'core.askPass' config as something like 'echo' will causes Git to fallback to a terminal prompt. It uses git_terminal_prompt(), which finds the terminal from the environment and ignores whether stdin has been redirected. This can also block the process awaiting input. Create a new config option to prevent user interaction, favoring a failure to a blocked process. The chosen name, 'credential.interactive', is taken from the config option used by Git Credential Manager to already avoid user interactivity, so there is already one credential helper that integrates with this option. However, older versions of Git Credential Manager also accepted other string values, including 'auto', 'never', and 'always'. The modern use is to use a boolean value, but we should still be careful that some users could have these non-booleans. Further, we should respect 'never' the same as 'false'. This is respected by the implementation and test, but not mentioned in the documentation. The implementation for the Git interactions takes place within credential_getpass(). The method prototype is modified to return an 'int' instead of 'void'. This allows us to detect that no attempt was made to fill the given credential, changing the single caller slightly. Also, a new trace2 region is added around the interactive portion of the credential request. This provides a way to measure the amount of time spent in that region for commands that _are_ interactive. It also makes a conventient way to test that the config option works with 'test_region'. Signed-off-by: Derrick Stolee <[email protected]>
Add test case to demonstrate that `git index-pack -o <idx-path> pack-path` fails if <idx-path> does not end in ".idx" when `--rev-index` is enabled. In e37d0b8 (builtin/index-pack.c: write reverse indexes, 2021-01-25) we learned to create `.rev` reverse indexes in addition to `.idx` index files. The `.rev` file pathname is constructed by replacing the suffix on the `.idx` file. The code assumes a hard-coded "idx" suffix. In a8dd7e0 (config: enable `pack.writeReverseIndex` by default, 2023-04-12) reverse indexes were enabled by default. If the `-o <idx-path>` argument is used, the index file may have a different suffix. This causes an error when it tries to create the reverse index pathname. The test here demonstrates the failure. (The test forces `--rev-index` to avoid interaction with `GIT_TEST_NO_WRITE_REV_INDEX` during CI runs.) Signed-off-by: Jeff Hostetler <[email protected]>
At the moment, some background jobs are getting blocked on credentials during the 'prefetch' task. This leads to other tasks, such as incremental repacks, getting blocked. Further, if a user manages to fix their credentials, then they still need to cancel the background process before their background maintenance can continue working. Update the background schedules for our four scheduler integrations to include these config options via '-c' options: * 'credential.interactive=false' will stop Git and some credential helpers from prompting in the UI (assuming the '-c' parameters are carried through and respected by GCM). * 'core.askPass=true' will replace the text fallback for a username and password into the 'true' command, which will return a success in its exit code, but Git will treat the empty string returned as an invalid password and move on. We can do some testing that the credentials are passed, at least in the systemd case due to writing the service files. Signed-off-by: Derrick Stolee <[email protected]>
Teach index-pack to silently omit the reverse index if the index file does not have the standard ".idx" suffix. In e37d0b8 (builtin/index-pack.c: write reverse indexes, 2021-01-25) we learned to create `.rev` reverse indexes in addition to `.idx` index files. The `.rev` file pathname is constructed by replacing the suffix on the `.idx` file. The code assumes a hard-coded "idx" suffix. In a8dd7e0 (config: enable `pack.writeReverseIndex` by default, 2023-04-12) reverse indexes were enabled by default. If the `-o <idx-path>` argument is used, the index file may have a different suffix. This causes an error when it tries to create the reverse index pathname. Since we do not know why the user requested a non-standard suffix for the index, we cannot guess what the proper corresponding suffix should be for the reverse index. So we disable it. The t5300 test has been updated to verify that we no longer error out and that the .rev file is not created. TODO We could warn the user that we skipped it (perhaps only if they TODO explicitly requested `--rev-index` on the command line). TODO TODO Ideally, we should add an `--rev-index-path=<path>` argument TODO or change `--rev-index` to take a pathname. TODO TODO I'll leave these questions for a future series. Signed-off-by: Jeff Hostetler <[email protected]>
The 'scalar reconfigure' command is intended to update registered repos with the latest settings available. However, up to now we were not reregistering the repos with background maintenance. In particular, this meant that the background maintenance schedule would not be updated if there are improvements between versions. Be sure to register repos for maintenance during the reconfigure step. Signed-off-by: Derrick Stolee <[email protected]>
It is an unsafe practice to call something like git clone https://user:[email protected]/ This not only risks leaking the password "over the shoulder" or into the readline history of the current Unix shell, it also gets logged via Trace2 if enabled. Let's at least avoid logging such secrets via Trace2, much like we avoid logging secrets in `http.c`. Much like the code in `http.c` is guarded via `GIT_TRACE_REDACT` (defaulting to `true`), we guard the new code via `GIT_TRACE2_REDACT` (also defaulting to `true`). Signed-off-by: Johannes Schindelin <[email protected]>
Signed-off-by: Jeff Hostetler <[email protected]>
Add `struct key_value_info` argument to `trace2_def_param()`. In dc90208 (trace2: plumb config kvi, 2023-06-28) a `kvi` argument was added to `trace2_def_param_fl()` but the macro was not up updated. Let's fix that. Signed-off-by: Jeff Hostetler <[email protected]>
In ac8acb4 (sparse-index: complete partial expansion, 2022-05-23), 'expand_index()' was updated to expand the index to a given pathspec. However, the 'path_matches_pattern_list()' method used to facilitate this has the side effect of initializing or updating the index hash variables ('name_hash', 'dir_hash', and 'name_hash_initialized'). This operation is performed on 'istate', though, not 'full'; as a result, the initialized hashes are later overwritten when copied from 'full'. To ensure the correct hashes are in 'istate' after the index expansion, change the arg used in 'path_matches_pattern_list()' from 'istate' to 'full'. Note that this does not fully solve the problem. If 'istate' does not have an initialized 'name_hash' when its contents are copied to 'full', initialized hashes will be copied back into 'istate' but 'name_hash_initialized' will be 0. Therefore, we also need to copy 'full->name_hash_initialized' back to 'istate' after the index expansion is complete. Signed-off-by: Victoria Dye <[email protected]>
Signed-off-by: Jeff Hostetler <[email protected]>
Add a test verifying that sparse-checkout (with and without sparse index enabled) treat untracked files & directories correctly when changing sparse patterns. Specifically, it ensures that 'git sparse-checkout set' * deletes empty directories outside the sparse cone * does _not_ delete untracked files outside the sparse cone Signed-off-by: Victoria Dye <[email protected]>
Cherry-pick rev-index fixes from v2.41.0.vfs.0.5 into v2.42.0.*
Turn off TEST_PASSES_SANITIZE_LEAK in t0210 and t0211 tests. The tests added in a previous commit to confirm that we redact URLs in the Trace2 output uncovered leaks in `builtin/clone.c` and `remote.c`. We observed that (1) `the_repository->remote_status` is not released properly. And (2) that we are using `url...insteadOf` and that runs into a code path where an allocated URL is replaced with another URL. And (3) `remote_states` contains plenty of `struct remote`s whose refspecs seem to be usually allocated by never released. More investigation is needed here to identify the exact cause and proper fixes these leaks / bugs. Signed-off-by: Jeff Hostetler <[email protected]> Signed-off-by: Johannes Schindelin <[email protected]>
The Trace2 output can contain secrets when a user issues a Git command with sensitive information in the command-line. A typical (if highly discouraged) example is: `git clone https://user:[email protected]/`. With this PR, the Trace2 output redacts passwords in such URLs by default. This series also includes a commit to temporarily disable leak checking on t0210,t0211 because the tests uncover other unrelated bugs in Git.
b958717
to
b7a6ed7
Compare
Range-diff relative to -rc2
tl;dr looking great! |
b7a6ed7
Range-diff relative to [`clean/vfs-2.42.0`](https://github.com/microsoft/git/tree/clean/vfs-2.42.0), a polished branch that is tree-same to `vfs-2.42.0`:
1: a7e5b1d = 1: 99e79b8 reset --stdin: trim carriage return from the paths
2: 94ddb09 ! 2: ed0a8b4 gvfs: start by adding the -gvfs suffix to the version
3: 6b8e323 = 3: 8be0426 gvfs: ensure that the version is based on a GVFS tag
4: 1de013e = 4: 37d2c9d gvfs: add a GVFS-specific header file
14: b0244e0 ! 5: 8668bb7 gvfs: add the core.gvfs config setting
15: cac6a52 = 6: d99b255 gvfs: add the feature to skip writing the index' SHA-1
16: 14ac639 = 7: fc7e063 gvfs: add the feature that blobs may be missing
17: 3e9eb08 ! 8: a3b2d03 gvfs: prevent files to be deleted outside the sparse checkout
18: 47f5fcd = 9: e4f7323 gvfs: optionally skip reachability checks/upload pack during fetch
19: 7900ca0 = 10: a70b1dc gvfs: ensure all filters and EOL conversions are blocked
20: bd5bf4e ! 11: 87d9f02 gvfs: allow "virtualizing" objects
21: 0c974c4 = 12: 051bcdd Hydrate missing loose objects in check_and_freshen()
22: 0781663 = 13: 29cbb5a sha1_file: when writing objects, skip the read_object_hook
23: fe4dd86 = 14: 2352f0c gvfs: add global command pre and post hook procs
24: 2ea5844 = 15: 2ccfb83 t0400: verify that the hook is called correctly from a subdirectory
25: 6af8ada = 16: 58b17ee Pass PID of git process to hooks.
26: 0f85e25 = 17: 394d502 pre-command: always respect core.hooksPath
27: 66e7acc = 18: 96c562c sparse-checkout: update files with a modify/delete conflict
28: 61b87d6 = 19: a7d1603 sparse-checkout: avoid writing entries with the skip-worktree bit
29: 7f0842e = 20: 897869c Do not remove files outside the sparse-checkout
30: 380591f = 21: f8965fa send-pack: do not check for sha1 file when GVFS_MISSING_OK set
31: c516f1b = 22: 8b20949 cache-tree: remove use of strbuf_addf in update_one
32: 147dce8 ! 23: 9e50d7a gvfs: block unsupported commands when running in a GVFS repo
33: 7ce1ecb = 24: 0a25d9a worktree: allow in Scalar repositories
34: fb38ce0 = 25: 7215080 gvfs: allow overriding core.gvfs
35: f4a79b1 = 26: 929fc3c BRANCHES.md: Add explanation of branches and using forks
36: 91eaf0c ! 27: ec0c3b3 Add virtual file system settings and hook proc
37: 01471a5 = 28: 8fc7a7d virtualfilesystem: don't run the virtual file system hook if the index has been redirected
38: 4c39d30 = 29: e0935bf virtualfilesystem: check if directory is included
39: 29c4b0b = 30: 5440331 backwards-compatibility: support the post-indexchanged hook
40: f7da610 = 31: 2a8e325 gvfs: verify that the built-in FSMonitor is disabled
41: 5954b82 ! 32: c6e71ee status: add status serialization mechanism
42: 9e641fa = 33: df1bec0 Teach ahead-behind and serialized status to play nicely together
43: 9dc4a10 = 34: 46a6fc1 status: serialize to path
44: 9a154a3 = 35: 09ecd11 status: reject deserialize in V2 and conflicts
45: 5783dde = 36: d9e7946 serialize-status: serialize global and repo-local exclude file metadata
46: 7a103c4 = 37: 2b44917 status: deserialization wait
47: 90f9fa6 = 38: 3b28525 merge-recursive: avoid confusing logic in was_dirty()
48: e516748 = 39: 2fbea31 merge-recursive: add some defensive coding to was_dirty()
49: b820852 = 40: a9987a8 merge-recursive: teach was_dirty() about the virtualfilesystem
50: 1d7d59c = 41: bcae658 status: deserialize with -uno does not print correct hint
51: d4729ac = 42: 72daa6e fsmonitor: check CE_FSMONITOR_VALID in ce_uptodate
52: 0c13c0e = 43: b148e10 fsmonitor: add script for debugging and update script for tests
53: 5bf4b42 = 44: 1eeb23f status: disable deserialize when verbose output requested.
54: 54cbb52 = 45: e13c216 t7524: add test for verbose status deserialzation
55: 4933dea = 46: da6ba9e deserialize-status: silently fallback if we cannot read cache file
56: 61d41e7 = 47: 935075a gvfs:trace2:data: add trace2 tracing around read_object_process
57: 883044b = 48: a3a21ee gvfs:trace2:data: status deserialization information
58: a9d7fe4 = 49: 2e91a37 gvfs:trace2:data: status serialization
59: 3bba8d5 = 50: 5bbf109 gvfs:trace2:data: add vfs stats
60: cf4d959 = 51: 510763f trace2: refactor setting process starting time
61: 7d0682f = 52: 58348c1 trace2:gvfs:experiment: clear_ce_flags_1
62: 64894b1 = 53: 31064cf trace2:gvfs:experiment: report_tracking
63: 79b4633 = 54: 2d20516 trace2:gvfs:experiment: read_cache: annotate thread usage in read-cache
64: c540ad7 = 55: 17a8386 trace2:gvfs:experiment: read-cache: time read/write of cache-tree extension
65: a91e25e = 56: 6f0f0ad trace2:gvfs:experiment: add region to apply_virtualfilesystem()
66: dad97fb = 57: 94b9e74 trace2:gvfs:experiment: add region around unpack_trees()
67: c3bcd57 = 58: d08d303 trace2:gvfs:experiment: add region to cache_tree_fully_valid()
68: 7957794 = 59: f2fa7a6 trace2:gvfs:experiment: add unpack_entry() counter to unpack_trees() and report_tracking()
69: 0363a3e = 60: cfee221 trace2:gvfs:experiment: increase default event depth for unpack-tree data
70: f937f1a = 61: 9cb8e6e trace2:gvfs:experiment: add data for check_updates() in unpack_trees()
71: 374c9d5 = 62: 28e92d6 Trace2:gvfs:experiment: capture more 'tracking' details
72: 7842f1a = 63: cf37c8b credential: set trace2_child_class for credential manager children
73: 054d2f4 = 64: 60c1a19 sub-process: do not borrow cmd pointer from caller
74: b6b63ea = 65: 4f22dd7 sub-process: add subprocess_start_argv()
75: 2e2da6b = 66: 0f90579 sha1-file: add function to update existing loose object cache
76: 45fca00 = 67: d01ff0d packfile: add install_packed_git_and_mru()
77: 1af89f9 = 68: b1a0157 index-pack: avoid immediate object fetch while parsing packfile
78: fc9c328 ! 69: ab7c36a gvfs-helper: create tool to fetch objects using the GVFS Protocol
79: 38d9949 = 70: 0a666e8 sha1-file: create shared-cache directory if it doesn't exist
80: 822bcb7 = 71: a438315 gvfs-helper: better handling of network errors
81: eab6e76 = 72: 7a5798b gvfs-helper-client: properly update loose cache with fetched OID
82: 44c8f24 = 73: d4c6772 gvfs-helper: V2 robust retry and throttling
83: 01af012 = 74: c5ad677 gvfs-helper: expose gvfs/objects GET and POST semantics
84: fb895ea = 75: 0daa2eb gvfs-helper: dramatically reduce progress noise
85: 7f74442 = 76: 4e59bb1 gvfs-helper-client.h: define struct object_id
86: afc6f6e = 77: 3958c1b gvfs-helper: handle pack-file after single POST request
87: 4016c6a = 78: 2be9271 test-gvfs-prococol, t5799: tests for gvfs-helper
88: d6b97a8 = 79: be495f4 gvfs-helper: move result-list construction into install functions
89: 11998df = 80: a249936 t5799: add support for POST to return either a loose object or packfile
90: 08fc8b4 = 81: ed7aabd t5799: cleanup wc-l and grep-c lines
91: d1457ac = 82: db90e61 gvfs-helper: verify loose objects after write
92: c95016c = 83: 57a7a1d t7599: create corrupt blob test
93: 9f4db10 = 84: 22b31ad gvfs-helper: add prefetch support
94: 8f7d6a7 = 85: 60043d3 gvfs-helper: add prefetch .keep file for last packfile
95: 5fd483e = 86: 04429ca gvfs-helper: do one read in my_copy_fd_len_tail()
96: d9a7454 = 87: f4734f4 gvfs-helper: move content-type warning for prefetch packs
97: 55fc385 = 88: 68bdb0d fetch: use gvfs-helper prefetch under config
98: 759d9bf = 89: 971e509 gvfs-helper: better support for concurrent packfile fetches
99: 2df27f9 = 90: 04627ca remote-curl: do not call fetch-pack when using gvfs-helper
100: fa77c9b = 91: b862eb7 fetch: reprepare packs before checking connectivity
101: ce77e42 = 92: 749a3e8 gvfs-helper: retry when creating temp files
102: 2541f26 = 93: ff277e3 sparse: avoid warnings about known cURL issues in gvfs-helper.c
103: 88cac01 = 94: 9acbbda gvfs-helper: add --max-retries to prefetch verb
104: 3cc7187 = 95: 5b24b58 t5799: add tests to detect corrupt pack/idx files in prefetch
105: 6c43862 = 96: 4fb9e00 gvfs-helper: ignore .idx files in prefetch multi-part responses
107: 94f26af = 97: b94f532 maintenance: care about gvfs.sharedCache config
108: dec4e0d = 98: 536df78 unpack-trees:virtualfilesystem: Improve efficiency of clear_ce_flags
109: 8c5d441 = 99: 7202cb1 homebrew: add GitHub workflow to release Cask
110: c19b64a = 100: a1cf699 Adding winget workflows
111: a412449 ! 101: 63db775 Disable the
monitor-components
workflow in msft-git112: 6f35b9e = 102: 103c0a1 .github: enable windows builds on microsoft fork
113: a1119ec = 103: add30d6 release: create initial Windows installer build workflow
114: 9aa76e5 = 104: 13380f4 release: add Mac OSX installer build
115: af877b2 = 105: 0c8a060 release: build unsigned Ubuntu .deb package
116: d2b4a00 = 106: ff6a052 release: add signing step for .deb package
117: ba6a38c = 107: 7e07030 release: create draft GitHub release with packages & installers
118: 53a572a = 108: d4f6b5f build-git-installers: publish gpg public key
124: ed8477a = 109: 09ecfbc update-microsoft-git: create barebones builtin
119: f9ec16d = 110: ca91fc0 release: continue pestering until user upgrades
125: 5caf428 = 111: 2847978 update-microsoft-git: Windows implementation
120: fd54745 = 112: 8fadbda Makefile: allow specifying GIT_BUILT_FROM_COMMIT
126: 9006465 = 113: 45a19d9 update-microsoft-git: use brew on macOS
121: 4d1f5dc = 114: 8bcee12 dist: archive HEAD instead of HEAD^{tree}
127: 55b2499 = 115: 9b32706 .github: update ISSUE_TEMPLATE.md for microsoft/git
122: b87156a = 116: 0633331 release: include GIT_BUILT_FROM_COMMIT in MacOS build
128: 01a76c5 = 117: c5c9099 .github: update PULL_REQUEST_TEMPLATE.md
123: 60c5c43 = 118: da79fcd release: add installer validation
5: fa30ea2 = 119: 087188f git_config_set_multivar_in_file_gently(): add a lock timeout
6: af504d4 = 120: 3a5b7ac scalar: set the config write-lock timeout to 150ms
7: 737d24f = 121: 4035f8b scalar: add docs from microsoft/scalar
129: 1a380b4 = 122: 7fbee27 Adjust README.md for microsoft/git
8: 240fc0a = 123: 5ad79f8 scalar (Windows): use forward slashes as directory separators
9: 632fe4c = 124: c4d0313 scalar: add retry logic to run_git()
10: 44c9785 = 125: 5854da7 scalar: support the
config
command for backwards compatibility130: b50649a = 126: 1695713 scalar: implement a minimal JSON parser
131: bb87de6 ! 127: 317c6b9 scalar clone: support GVFS-enabled remote repositories
132: 8ff5fad = 128: cd787a3 test-gvfs-protocol: also serve smart protocol
133: 06f1e8b = 129: b5c45c8 gvfs-helper: add the
endpoint
command134: 7d1e234 = 130: 82e0e12 dir_inside_of(): handle directory separators correctly
135: 725a49d = 131: 884983b scalar: disable authentication in unattended mode
136: a3c53e9 ! 132: c852bb2 scalar: do initialize
gvfs.sharedCache
137: b2a647f ! 133: 1c0a915 scalar diagnose: include shared cache info
138: 95289d5 = 134: 98dedc4 scalar: only try GVFS protocol on https:// URLs
139: a8cf1d0 = 135: fc6b6cf scalar: verify that we can use a GVFS-enabled repository
140: e544a5f = 136: 6fcf4ec scalar: add the
cache-server
command141: 61912a1 = 137: 272a530 scalar: add a test toggle to skip accessing the vsts/info endpoint
142: 2193254 = 138: 9d7dd3b scalar: adjust documentation to the microsoft/git fork
143: 09ed4d0 = 139: fc6a7c2 scalar: enable untracked cache unconditionally
144: a21b5cd ! 140: 043f91a scalar: parse
clone --no-fetch-commits-and-trees
for backwards compatibility145: a8f1390 = 141: 58e350f scalar diagnose: accommodate Scalar's Functional Tests
146: cbc3c20 = 142: 38e9365 ci: run Scalar's Functional Tests
147: 05625a7 = 143: 0543ac6 scalar: upgrade to newest FSMonitor config setting
150: 63c88de = 144: dcf7b41 abspath: make strip_last_path_component() global
151: 5e7f804 = 145: 8640024 scalar: .scalarCache should live above enlistment
153: d897b76 = 146: 50380be add/rm: allow adding sparse entries when virtual
154: fa06ea5 = 147: f7a7d9b sparse-checkout: add config to disable deleting dirs
155: bd5438a = 148: f42153b diff: ignore sparse paths in diffstat
156: 0ed0028 = 149: f3c3b66 repo-settings: enable sparse index by default
157: 232c329 = 150: 42d52fa diff(sparse-index): verify with partially-sparse
158: fb9a1bc = 151: de1ceb3 stash: expand testing for
git stash -u
11: a53814c = 152: ddc99c5 sequencer: avoid progress when stderr is redirected
12: 0695639 (backport of 39fa527)< -: ------------ http: factor out matching of curl http/2 trace lines
13: 67441f9 (backport of 0763c3a) < -: ------------ http: update curl http/2 info matching for curl 8.3.0
106: ea4eecd (upstreamed as 7ba7c52) < -: ------------ upload-pack: fix race condition in error messages
148: 281487b (upstreamed as 26ae8da) < -: ------------ setup: add discover_git_directory_reason()
149: a687d1c (upstreamed as f9a547d) < -: ------------ scalar reconfigure: help users remove buggy repos
152: 6da3cd6 (upstreamed as 4527db8, with substantial changes) < -: ------------ scalar: add --no-src option
159: 1d4087c = 153: fbd62f1 sparse: add vfs-specific precautions
160: e51917a = 154: 5695874 reset: fix mixed reset when using virtual filesystem
161: 50ce154 (upstreamed as 89024a0) < -: ------------ maintenance: add get_random_minute()
162: be0e67f (upstreamed as ec5d9d6)< -: ------------ maintenance: use random minute in launchctl scheduler
163: 668b245 (upstreamed as 62a2399) < -: ------------ maintenance: use random minute in Windows scheduler
164: a134ca8 (upstreamed as 9b43399) < -: ------------ maintenance: use random minute in cron scheduler
165: 8dcf21f (upstreamed as f44d7d0) < -: ------------ maintenance: swap method locations
166: a1e4e71 (upstreamed as daa7870) < -: ------------ maintenance: use random minute in systemd scheduler
167: 6a44ca3 (upstreamed as c97ec03) < -: ------------ maintenance: fix systemd schedule overlaps
168: c3b60b3 (upstreamed as 69ecfca) < -: ------------ maintenance: update schedule before config
169: 411ec5f = 155: ab34496 credential: add new interactive config option
170: 119fa9b = 156: cdf3ce6 maintenance: add custom config to background jobs
171: 6a895e9 ! 157: c0a3cb5 scalar: configure maintenance during 'reconfigure'
172: a6f4c68 = 158: 36ac15c t5300: confirm failure of git index-pack when non-idx suffix requested
173: bfa06c4 = 159: c001575 index-pack: disable rev-index if index file has non .idx suffix
174: 899346f = 160: 5a3760f sparse-index.c: fix use of index hashes in expand_index
175: 1a36eb0 = 161: 7c24d14 t1092: add test for untracked files and directories
176: 9736923 (backport of 5e8515e) < -: ------------ maintenance(systemd): support the Windows Subsystem for Linux