-
Notifications
You must be signed in to change notification settings - Fork 101
Rebase to v2.46.0 #679
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.46.0 #679
Conversation
c7b4931
to
1a4ad41
Compare
I finished fixing those new CI failures. Essentially, the leak checks are now much more stringent and pointed out many an issue in the After that, I also used the fine opportunity to reorder a couple of commits to tell a cleaner story (and hopefully make upstreaming a couple of the patches easier). I also squashed a couple of patches that were basically fixups, most notably in the GitHub workflows (such as updating the Range-diff relative to first-iteration
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Approving the latest update. Thanks for the detailed range-diff between versions, @dscho!
1a4ad41
to
4d79f9c
Compare
Range diff relative to rc0
Already upstream.
These
Here are the
|
4d79f9c
to
24d11a5
Compare
Range-diff relative to v2.46.0-rc1
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks! (I'm also very happy with the 15-minute functional test runs ;) )
These seem to be custom tests to microsoft/git as they break without these changes, but these changes are not needed upstream. Signed-off-by: Derrick Stolee <stolee@gmail.com>
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 <vdye@github.com>
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 <vdye@github.com>
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 <jeffhostetler@github.com>
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 <jeffhostetler@github.com>
Prefetch the value of GIT_TRACE2_DST_DEBUG during startup and before we try to open any Trace2 destination pathnames. Normally, Trace2 always silently fails if a destination target cannot be opened so that it doesn't affect the execution of a Git command. The command should run normally, but just not generate any trace data. This can make it difficult to debug a telemetry setup, since the user doesn't know why telemetry isn't being generated. If the environment variable GIT_TRACE2_DST_DEBUG is true, the Trace2 startup will print a warning message with the `errno` to make debugging easier. However, on Windows, looking up the env variable resets `errno` so the warning message always ends with `...tracing: No error` which is not very helpful. Prefetch the env variable at startup. This avoids the need to update each call-site to capture `errno` in the usual `saved-errno` variable. Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
Start work on a new `git survey` command to scan the repository for monorepo performance and scaling problems. The goal is to measure the various known "dimensions of scale" and serve as a foundation for adding additional measurements as we learn more about Git monorepo scaling problems. Results will be logged to the console and to Trace2. The initial goal is to complement the scanning and analysis performed by the GO-based `git-sizer` (https://github.com/github/git-sizer) tool. It is hoped that by creating a builtin command, we may be able to take advantage of internal Git data structures and code that is not accessible from GO to gain further insight into potential scaling problems. Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
By default we will scan all references in "refs/heads/", "refs/tags/" and "refs/remotes/". Add command line opts let the use ask for all refs or a subset of them and to include a detached HEAD. Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
Collect the set of requested branches, tags, and etc into a ref_array and collect the set of requested patterns into a strvec. Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
Calculate stats on the set of refs. This includes the number of branches, plain and annotated tags, remotes, and etc. Calculate the number of packed vs loose refs. Calculate the size of the set of refnames. Print results on the console in JSON format. Add Trace2 logging of the results as a data_json event. Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
Add treewalk on the commits and objects reachable from the set of refs. This commit sets up the treewalk, but only stubs in the traverse callbacks. We'll actually look at the commit and object data in the next commit. Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
Add callback to handle commit objects during the treewalk. Count the number of commits and group them by the number of parents. Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
Create `struct large_item` and `struct large_item_vec` to capture the n largest commits, trees, and blobs under various scaling dimensions, such as size in bytes, number of commit parents, or number of entries in a tree. Each of these have a command line option to set them independently. Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
Include the pathname of each blob or tree in the large_item_vec to help identify the file or directory associated with the OID and size information. This pathname is computed during the treewalk, so it reflects the first observed pathname seen for that OID during the traversal over all of the refs. Since the file or directory could have moved (without being modified), there may be multiple "correct" pathnames for a particular OID. Since we do not control the ref traversal order, we should consider it to be a "suggested pathname" for the OID. Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
Computing `git name-rev` on each commit, tree, and blob in each of the various large_item_vec can be very expensive if there are too many refs, especially if the user doesn't need the result. Lets make it optional. The `--no-name-rev` option can save 50 calls to `git name-rev` since we have 5 large_item_vec's and each defaults to 10 items. Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
…response (#571) Teach `gvfs-helper` to ignore the optional `.idx` files that may be included in a `prefetch` response and always use `git index-pack` to create them from the `.pack` files received in the data stream. This is a little wasteful in terms of client-side compute and of the network bandwidth, but allows us to use the full packfile verification code contained within `git index-pack` to ensure that the received packfiles are valid.
By default, GVFS Protocol-enabled Scalar clones will fall back to the origin server if there is a network issue with the cache servers. However (and especially for the prefetch endpoint) this may be a very expensive operation for the origin server, leading to the user being throttled. This shows up later in cases such as 'git push' or other web operations. To avoid this, create a new config option, 'gvfs.fallback', which defaults to true. When set to 'false', pass '--no-fallback' from the gvfs-helper client to the child gvfs-helper server process. This will allow users who have hit this problem to avoid it in the future. In case this becomes a more widespread problem, engineering systems can enable the config option more broadly. Enabling the config will of course lead to immediate failures for users, but at least that will help diagnose the problem when it occurs instead of later when the throttling shows up and the server load has already passed, damage done. This change only applies to interactions with Azure DevOps and the GVFS Protocol. --- * [x] This change only applies to interactions with Azure DevOps and the GVFS Protocol.
This PR updates our `vfs-2.29.0` branch's version of `git maintenance` to match the latest in upstream. Unfortunately, not all of these commits made it to the `2.30` release candidate, but there are more commits from the series making it in. They will cause a conflict in the `vfs-2.30.0` rebase, so merge them in here. This also includes the `fixup!` reverts of the earlier versions. Finally, I also noticed that we started depending on `git maintenance start` in Scalar for macOS, but we never checked that this worked with the shared object cache. It doesn't! 😨 The very tip commit of this PR includes logic to make `git maintenance run` care about `gvfs.sharedCache`. Functional test updates in Scalar will follow.
…ciency of clear_ce_flags When the virtualfilesystem is enabled the previous implementation of clear_ce_flags would iterate all of the cache entries and query whether each one is in the virtual filesystem to determine whether to clear one of the SKIP_WORKTREE bits. For each cache entry, we would do a hash lookup for each parent directory in the is_included_in_virtualfilesystem function. The former approach is slow for a typical Windows OS enlistment with 3 million files where only a small percentage is in the virtual filesystem. The cost is O(n_index_entries * n_chars_per_path * n_parent_directories_per_path). In this change, we use the same approach as apply_virtualfilesystem, which iterates the set of entries in the virtualfilesystem and searches in the cache for the corresponding entries in order to clear their flags. This approach has a cost of O(n_virtual_filesystem_entries * n_chars_per_path * log(n_index_entries)). The apply_virtualfilesystem code was refactored a bit and modified to clear flags for all names that 'alias' a given virtual filesystem name when ignore_case is set. n_virtual_filesystem_entries is typically much less than n_index_entries, in which case the new approach is much faster. We wind up building the name hash for the index, but this occurs quickly thanks to the multi-threading.
Adding a few workflows to publish releases! 🥳
This disables the `monitor-components` workflow in msft-git, and re-enables the `win+VS` tests in this repository, too.
Implement workflow to create GitHub release with attached `git` installers
Fixes for MacOS release build & build options
This adds a new builtin, `git update-microsoft-git`, that executes the platform-specific upgrade steps to get the latest version of `microsoft-git`. On Windows, this means running `git update-git-for-windows` which was updated to use the `microsoft/git` releases page, when appropriate. See #321 for details. On macOS, this means running a sequence of `brew` commands. These are adapted from the `UpgradeVerb` in `microsoft/scalar`, with an important simplification: we don't need to differentiate between the `scalar` and `scalar-azrepos` cask.
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
…x-built-in-fsmonitor Fix the built-in FSMonitor, and run Scalar's Functional Tests as part of the automated builds
This is random stuff that probably all got upstream in the meantime.
24d11a5
to
081a80e
Compare
Range-diff relative to v2.46.0-rc2
|
Range-diff relative to clean/vfs-2.45.2
1: 9d4453e (upstream: 9d4453e) < -: ------------ ci: drop mention of BREW_INSTALL_PACKAGES variable
2: 3c295c8 (upstream: 3c295c8) < -: ------------ mingw: drop bogus (and unneeded) declaration of
_pgmptr
3: 9256695 = 1: 9256695 advice: warn when sparse index expands
4: fa9d858 = 2: fa9d858 Revert "midx-write.c: use
--stdin-packs
when repacking"5: 43daded = 3: 43daded t: remove advice from some tests
6: 9fa03ce = 4: d493e7b survey: stub in new experimental
git-survey
command7: 19db94a = 5: 891929e survey: add command line opts to select references
8: a49a5cd ! 6: 0e33f37 survey: collect the set of requested refs
9: 937d231 ! 7: 02c2b1e survey: calculate stats on refs and print results
10: 90588ad ! 8: 46d0691 survey: stub in treewalk of reachable commits and objects
11: 9897239 = 9: 44a41d0 survey: add traverse callback for commits
12: d90ba6a ! 10: 38f5aec survey: add vector of largest objects for various scaling dimensions
13: 617deae = 11: acf22c6 survey: add pathname of blob or tree to large_item_vec
14: 1de055f = 12: 09c93cc survey: add commit-oid to large_item detail
15: 2bc37ef ! 13: 9d24f68 survey: add commit name-rev lookup to each large_item
16: 3713eae ! 14: f4a94db survey: add --json option and setup for pretty output
17: de268cd ! 15: ecef306 survey: add pretty printing of stats
18: c7ab70c = 16: 67a115d t8100: create test for git-survey
19: d06b3ff ! 17: e210d30 survey: add --no-name-rev option
20: ec39557 = 18: 95f6cde survey: started TODO list at bottom of source file
21: 28549b1 = 19: aecf6ec survey: expanded TODO list at the bottom of the source file
22: 3d885d0 = 20: 79f3731 survey: expanded TODO with more notes
23: d81c8ad (upstream: 12c2ee5) < -: ------------ for-each-repo: optionally keep going on an error
24: 2ef315a (upstream: c75662b) < -: ------------ maintenance: running maintenance should not stop on errors
198: 3be470a = 21: d0ae24c survey: clearly note the experimental nature in the output
25: 8b5ff37 = 22: 5f1879c reset --stdin: trim carriage return from the paths
26: de0e08c ! 23: bb17814 Identify microsoft/git via a distinct version suffix
27: 44873f8 = 24: 462b375 gvfs: ensure that the version is based on a GVFS tag
28: 29d46d7 = 25: 13619bc gvfs: add a GVFS-specific header file
29: d4c7891 ! 26: 6c9e6d9 gvfs: add the core.gvfs config setting
@@ environment.h: int get_shared_repository(void); ## gvfs.c (new) ## @@ ++#define USE_THE_REPOSITORY_VARIABLE +#include "git-compat-util.h" +#include "environment.h" +#include "gvfs.h"
30: e2fcd93 = 27: 663af32 gvfs: add the feature to skip writing the index' SHA-1
31: f74478b ! 28: 0de65b9 gvfs: add the feature that blobs may be missing
32: 2750fd4 ! 29: d3efbf0 gvfs: prevent files to be deleted outside the sparse checkout
@@ t/t1090-sparse-checkout-scope.sh: test_expect_success 'in partial clone, sparse ## unpack-trees.c ## @@ + #include "git-compat-util.h" #include "advice.h" +#include "gvfs.h"
33: 56146c3 = 30: b182882 gvfs: optionally skip reachability checks/upload pack during fetch
34: 298844d ! 31: fdf68f8 gvfs: ensure all filters and EOL conversions are blocked
@@ Documentation/config/core.txt: core.gvfs:: ## convert.c ## @@ + #include "git-compat-util.h" #include "advice.h" +#include "gvfs.h"
35: 9290d8c ! 32: 1673b6c gvfs: allow "virtualizing" objects
36: b1d92ce = 33: 818d82e Hydrate missing loose objects in check_and_freshen()
37: 091dc10 = 34: 2d7a9dc sha1_file: when writing objects, skip the read_object_hook
38: 90f1631 ! 35: 4bee1df gvfs: add global command pre and post hook procs
39: 81a39e7 = 36: 585cc63 t0400: verify that the hook is called correctly from a subdirectory
40: 69c187b = 37: 04b3614 Pass PID of git process to hooks.
41: f224aa5 = 38: 6dc796c pre-command: always respect core.hooksPath
42: 899ad7e = 39: 1beb06a sparse-checkout: update files with a modify/delete conflict
43: c32183f = 40: 2e74640 sparse-checkout: avoid writing entries with the skip-worktree bit
44: 326aa6c = 41: 47b22d8 Do not remove files outside the sparse-checkout
45: 54634b1 = 42: 1b457f9 send-pack: do not check for sha1 file when GVFS_MISSING_OK set
46: 0ed17f0 = 43: 7969d78 cache-tree: remove use of strbuf_addf in update_one
47: 116dbce ! 44: f2eae33 gvfs: block unsupported commands when running in a GVFS repo
48: deeb420 = 45: a08a89d worktree: allow in Scalar repositories
49: 7fc02f9 = 46: 7227b52 gvfs: allow overriding core.gvfs
50: 1fb74c0 = 47: 5733f8e BRANCHES.md: Add explanation of branches and using forks
145: 0cb2146 = 48: 84d0024 git_config_set_multivar_in_file_gently(): add a lock timeout
146: 3d94588 = 49: 5ebaf3f scalar: set the config write-lock timeout to 150ms
147: 225409d = 50: 2521c6e scalar: add docs from microsoft/scalar
148: 6391ce0 = 51: 8474a8c scalar (Windows): use forward slashes as directory separators
149: 4dbcf6f ! 52: fced4b6 scalar: add retry logic to run_git()
@@ scalar.c: static void setup_enlistment_directory(int argc, const char **argv, +static int git_retries = 3; + + LAST_ARG_MUST_BE_NULL static int run_git(const char *arg, ...) { - struct child_process cmd = CHILD_PROCESS_INIT;
150: 7903a9a = 53: 98e3445 scalar: support the
config
command for backwards compatibility177: f21079b = 54: 45d1ce3 sequencer: avoid progress when stderr is redirected
51: 8e5b270 ! 55: f51ea9b Add virtual file system settings and hook proc
52: 47fb1b2 = 56: 8e22f06 virtualfilesystem: don't run the virtual file system hook if the index has been redirected
53: f998e1d = 57: bd9e9d9 virtualfilesystem: check if directory is included
54: 95436e4 = 58: 214b081 backwards-compatibility: support the post-indexchanged hook
55: 91e8518 = 59: 858040a gvfs: verify that the built-in FSMonitor is disabled
56: e9609a8 ! 60: b9c892c status: add status serialization mechanism
57: b3e7505 = 61: 7405e5e Teach ahead-behind and serialized status to play nicely together
58: 8407c36 = 62: 44d03e8 status: serialize to path
59: 28d3839 = 63: ce47f12 status: reject deserialize in V2 and conflicts
60: 1d82aa2 ! 64: fe42bdd serialize-status: serialize global and repo-local exclude file metadata
61: 3ff191a = 65: c1d5d31 status: deserialization wait
62: c5e4ee0 = 66: 11d838d merge-recursive: avoid confusing logic in was_dirty()
63: 47d58ff = 67: 1bc8f66 merge-recursive: add some defensive coding to was_dirty()
64: cc07a28 ! 68: dad640b merge-recursive: teach was_dirty() about the virtualfilesystem
65: 72ea807 = 69: 3026a1e status: deserialize with -uno does not print correct hint
66: abb2796 = 70: f974331 fsmonitor: check CE_FSMONITOR_VALID in ce_uptodate
67: aaab24e = 71: 0ad0d0f fsmonitor: add script for debugging and update script for tests
68: c156980 ! 72: 907a53a status: disable deserialize when verbose output requested.
69: 81f271c = 73: ba4aaf9 t7524: add test for verbose status deserialzation
70: 4262315 = 74: a4bbd5d deserialize-status: silently fallback if we cannot read cache file
71: 9d211c4 = 75: c8c93ae gvfs:trace2:data: add trace2 tracing around read_object_process
72: a41a3ca ! 76: cded777 gvfs:trace2:data: status deserialization information
73: aa452a0 ! 77: 03952fa gvfs:trace2:data: status serialization
74: cc0a9c5 ! 78: 31fcdac gvfs:trace2:data: add vfs stats
@@ Commit message ## virtualfilesystem.c ## @@ ++#define USE_THE_REPOSITORY_VARIABLE #include "git-compat-util.h" #include "environment.h" #include "gettext.h"
75: dea7ca4 = 79: abbea49 trace2: refactor setting process starting time
76: b276ce0 = 80: afc4a0a trace2:gvfs:experiment: clear_ce_flags_1
77: f002535 = 81: 5ce6558 trace2:gvfs:experiment: report_tracking
78: a3b1d7e = 82: 4ec2e67 trace2:gvfs:experiment: read_cache: annotate thread usage in read-cache
79: 3449130 = 83: c1c64db trace2:gvfs:experiment: read-cache: time read/write of cache-tree extension
80: 6eb56cb = 84: ffcbc28 trace2:gvfs:experiment: add region to apply_virtualfilesystem()
81: 7bdb055 = 85: 4957e88 trace2:gvfs:experiment: add region around unpack_trees()
82: 90a8fbc = 86: 6366b0e trace2:gvfs:experiment: add region to cache_tree_fully_valid()
83: 79acfe9 = 87: 9212637 trace2:gvfs:experiment: add unpack_entry() counter to unpack_trees() and report_tracking()
84: f7c6c30 = 88: 801e01f trace2:gvfs:experiment: increase default event depth for unpack-tree data
85: 5d4fb1a = 89: bf54c3f trace2:gvfs:experiment: add data for check_updates() in unpack_trees()
86: bcaa51d = 90: 4148a39 Trace2:gvfs:experiment: capture more 'tracking' details
87: 8d15da7 = 91: 2f076d1 credential: set trace2_child_class for credential manager children
88: 42702c9 = 92: 1ecd577 sub-process: do not borrow cmd pointer from caller
89: 82c64b8 = 93: 678c1e1 sub-process: add subprocess_start_argv()
90: b5111c7 = 94: ad46269 sha1-file: add function to update existing loose object cache
91: 826c0d6 = 95: 4c7f6da packfile: add install_packed_git_and_mru()
92: 638ebe9 = 96: 80e302e index-pack: avoid immediate object fetch while parsing packfile
93: d8a6be6 ! 97: fd83445 gvfs-helper: create tool to fetch objects using the GVFS Protocol
94: cdd7cfe ! 98: b574c17 sha1-file: create shared-cache directory if it doesn't exist
@@ environment.h: extern int protect_hfs; ## gvfs-helper-client.c ## @@ + #define USE_THE_REPOSITORY_VARIABLE #include "git-compat-util.h" +#include "environment.h" #include "hex.h"
95: a038c3c = 99: 4d22d1b gvfs-helper: better handling of network errors
96: 2910aff ! 100: b569887 gvfs-helper-client: properly update loose cache with fetched OID
97: b97808a = 101: be0e9bb gvfs-helper: V2 robust retry and throttling
98: 2106050 ! 102: cbcc517 gvfs-helper: expose gvfs/objects GET and POST semantics
99: 22f0423 = 103: 6db4130 gvfs-helper: dramatically reduce progress noise
100: 501670e = 104: 06ba59c gvfs-helper-client.h: define struct object_id
101: faff4f0 = 105: f50d849 gvfs-helper: handle pack-file after single POST request
102: 078ef69 ! 106: a089606 test-gvfs-prococol, t5799: tests for gvfs-helper
103: 4f6ba78 = 107: e1f2825 gvfs-helper: move result-list construction into install functions
104: a413cb5 = 108: 0465ea0 t5799: add support for POST to return either a loose object or packfile
105: 5b79aa8 = 109: e4df844 t5799: cleanup wc-l and grep-c lines
106: 669ad33 = 110: f0cfe9c gvfs-helper: verify loose objects after write
107: be74d21 = 111: 2491b1e t7599: create corrupt blob test
108: 96f1bca ! 112: e6cc930 gvfs-helper: add prefetch support
109: 3d89f61 = 113: b93feac gvfs-helper: add prefetch .keep file for last packfile
110: 814f0c2 = 114: 4cf4fc7 gvfs-helper: do one read in my_copy_fd_len_tail()
111: 5b292e5 = 115: dc478bf gvfs-helper: move content-type warning for prefetch packs
112: b9530af = 116: 9a86242 fetch: use gvfs-helper prefetch under config
113: 26017bd = 117: 88744c5 gvfs-helper: better support for concurrent packfile fetches
114: 2d6625d = 118: 2e12c33 remote-curl: do not call fetch-pack when using gvfs-helper
115: c4b3dc4 = 119: 1ab9c63 fetch: reprepare packs before checking connectivity
116: bf38a3a = 120: 8fee068 gvfs-helper: retry when creating temp files
117: de22e15 = 121: 407fb5c sparse: avoid warnings about known cURL issues in gvfs-helper.c
118: ed719c0 = 122: 5f1daad gvfs-helper: add --max-retries to prefetch verb
122: 5118ec2 = 123: 8bee033 t5799: add tests to detect corrupt pack/idx files in prefetch
124: 88e914c = 124: c519fa5 gvfs-helper: ignore .idx files in prefetch multi-part responses
119: a3a331f = 125: 79d4ae3 maintenance: care about gvfs.sharedCache config
120: c356384 = 126: 31932ba unpack-trees:virtualfilesystem: Improve efficiency of clear_ce_flags
121: fa34db9 = 127: 38f795c homebrew: add GitHub workflow to release Cask
123: 75e7179 = 128: d4466b1 Adding winget workflows
125: 359e3ea ! 129: c1819bc Disable the
monitor-components
workflow in msft-git126: 8112927 = 130: 33b280c .github: enable windows builds on microsoft fork
127: 0a1b186 = 131: ee013f9 release: create initial Windows installer build workflow
128: d3284e4 = 132: 84dc668 help: special-case HOST_CPU
universal
129: adc0dc6 = 133: 5aa01da release: add Mac OSX installer build
130: 20b196b = 134: 4898f63 release: build unsigned Ubuntu .deb package
131: ce98293 = 135: 336ac3f release: add signing step for .deb package
132: 2168e21 = 136: 88fc5e0 release: create draft GitHub release with packages & installers
133: 61cbd89 = 137: a070a17 build-git-installers: publish gpg public key
134: b748af6 = 138: 280848e release: continue pestering until user upgrades
135: 4c2a29f = 139: c29db06 Makefile: allow specifying GIT_BUILT_FROM_COMMIT
139: 81a3a97 = 140: 60880fa update-microsoft-git: create barebones builtin
136: 697df23 = 141: adca1a5 dist: archive HEAD instead of HEAD^{tree}
140: 34d9e20 = 142: 6b8190b update-microsoft-git: Windows implementation
137: 6487ff0 = 143: 20f8694 release: include GIT_BUILT_FROM_COMMIT in MacOS build
141: 24bfc6f = 144: 571ebb6 update-microsoft-git: use brew on macOS
138: 7f25f3c = 145: 70b2c7c release: add installer validation
142: bab57f6 = 146: ef8aba1 .github: update ISSUE_TEMPLATE.md for microsoft/git
143: 533f117 = 147: de761fe .github: update PULL_REQUEST_TEMPLATE.md
144: bee22b6 = 148: e202255 Adjust README.md for microsoft/git
151: 16260a6 = 149: 855f8ec scalar: implement a minimal JSON parser
152: 68145ff = 150: 6365f7c scalar clone: support GVFS-enabled remote repositories
153: f34bc0a ! 151: 92057b3 test-gvfs-protocol: also serve smart protocol
@@ Commit message ## t/helper/test-gvfs-protocol.c ## @@ + #define USE_THE_REPOSITORY_VARIABLE #include "git-compat-util.h" #include "environment.h" +#include "gettext.h"
154: 156e684 ! 152: 8411cdc gvfs-helper: add the
endpoint
command155: f0c7192 = 153: cf20ad0 dir_inside_of(): handle directory separators correctly
156: 37a1679 = 154: 1ccd926 scalar: disable authentication in unattended mode
157: e4c9fb2 = 155: 3a523b3 scalar: do initialize
gvfs.sharedCache
158: fdfccaa = 156: a9a22f3 scalar diagnose: include shared cache info
159: 1fcf783 = 157: bc76060 scalar: only try GVFS protocol on https:// URLs
160: 13db4b2 = 158: e455e68 scalar: verify that we can use a GVFS-enabled repository
161: de44bdb ! 159: b8db558 scalar: add the
cache-server
command162: bc1f931 = 160: da1d056 scalar: add a test toggle to skip accessing the vsts/info endpoint
163: 82a620f = 161: eac9d48 scalar: adjust documentation to the microsoft/git fork
164: 8c62847 = 162: e1ca251 scalar: enable untracked cache unconditionally
165: dc53c3d = 163: a2e90b7 scalar: parse
clone --no-fetch-commits-and-trees
for backwards compatibility166: fd4a81f = 164: c5d70c0 scalar diagnose: accommodate Scalar's Functional Tests
167: 48961e3 = 165: 2f5f734 ci: run Scalar's Functional Tests
168: 39ceaeb = 166: e814dff scalar: upgrade to newest FSMonitor config setting
169: 6a72129 = 167: d9c8469 abspath: make strip_last_path_component() global
170: 265c748 = 168: 108fc64 scalar: .scalarCache should live above enlistment
171: 10dd178 ! 169: 10049eb add/rm: allow adding sparse entries when virtual
172: e00dddb = 170: 911894d sparse-checkout: add config to disable deleting dirs
173: e082cb8 = 171: de33ebe diff: ignore sparse paths in diffstat
174: df6a787 = 172: d3d3691 repo-settings: enable sparse index by default
175: 26babbf = 173: 3b11321 diff(sparse-index): verify with partially-sparse
176: 40ea561 = 174: 2719642 stash: expand testing for
git stash -u
178: 9008be1 = 175: 6859862 sparse: add vfs-specific precautions
179: 994a008 ! 176: 0f906d1 reset: fix mixed reset when using virtual filesystem
180: faab0ce ! 177: a79fae6 credential: add new interactive config option
181: 238ecde = 178: 75a97b3 maintenance: add custom config to background jobs
182: 9b6f619 ! 179: 5ca9725 scalar: configure maintenance during 'reconfigure'
183: f9506f8 (upstream: b64b0df) < -: ------------ scalar: avoid segfault in reconfigure --all
184: 918d0a0 = 180: 7bbade9 scalar: make GVFS Protocol a forced choice
185: 1304aa1 = 181: 4dfc839 t5300: confirm failure of git index-pack when non-idx suffix requested
186: ef4f090 = 182: 8088fcd index-pack: disable rev-index if index file has non .idx suffix
187: 84ee4f9 = 183: 714b6a5 sparse-index.c: fix use of index hashes in expand_index
188: aad6134 = 184: 5a97876 t1092: add test for untracked files and directories
189: fd33009 = 185: 90ce5dc wt-status: add trace2 data for sparse-checkout percentage
190: 4ff4abe = 186: 5bfd759 wt-status: add VFS hydration percentage to normal
git status
output191: 12b09dd = 187: dc9a3b5 scalar-functional-tests.yml: update macos-11 to macos-13
192: 8a7f3f4 = 188: 2e9909b github: use federated auth for Azure login
193: 080a634 = 189: 0d6d04b trace2: prefetch value of GIT_TRACE2_DST_DEBUG at startup
194: 7fdf949 = 190: e717a31 t5799: explicitly test gvfs-helper --fallback and --no-fallback
195: 0b0286c ! 191: c2df878 gvfs-helper: don't fallback with new config
196: 138a74b = 192: 151da77 test-gvfs-protocol: add cache_http_503 to mayhem
197: 3f0abb7 = 193: c457a81 t5799: add unit tests for new
gvfs.fallback
config settingThe differences pointed out by the range-diff are explained thusly:
microsoft/git
fork.peel_iterated_oid()
) now require astruct repository *
parameter, which in some cases has to be passed down from their callers by adding the same new parameter to the function signatures.the_repository
(even implicitly, e.g. throughthe_hash_algo
) need to#define USE_THE_REPOSITORY_VARIABLE
before the#include
s.git_config_pathname()
(and ofgit_config_string()
, too) has changed fromconst char **
tochar **
, to reflect that the caller now owns that memory and needs to take care of releasing it.the_index
is no more. It must be written asthe_repository->index
now.get_oid_hex()
is now declared inhex.h
, which needs to be#include
d explicitly.oidclr()
now takes the hash algorithm explicitly as a second parameter.credential_fill()
function now expects a second parameter to indicate whether the caller can deal with the new credential capabilities feature or not (whichgvfs-helper
can not).url
attribute ofstruct remote
has changed from achar **
to astruct strvec
, hence the URLs have to be accessed slightly differently.monitor-components
workflow was modified; We still want to delete it in themicrosoft/git
fork to disable it.