Closed dscho closed 1 month ago
I finished fixing those new CI failures. Essentially, the leak checks are now much more stringent and pointed out many an issue in the gvfs-helper
-related code. Also, the lint-docs
Makefile target was really unhappy that neither gvfs-helper
nor update-microsoft-git
are documented, and since I disagree, I told it to accept that as-is.
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 macos
pool or using federated authentication).
cc @derrickstolee @dscho
Range-diff relative to clean/vfs-2.45.2
* 1: 9d4453e8d6f3 (upstream: 9d4453e8d6f3) < -: ------------ ci: drop mention of BREW_INSTALL_PACKAGES variable * 2: 3c295c87c250 (upstream: 3c295c87c250) < -: ------------ mingw: drop bogus (and unneeded) declaration of `_pgmptr` * 3: 92566955cec9 = 1: 92566955cec9 advice: warn when sparse index expands * 4: fa9d858ce999 = 2: fa9d858ce999 Revert "midx-write.c: use `--stdin-packs` when repacking" * 5: 43daded4fad2 = 3: 43daded4fad2 t: remove advice from some tests * 6: 9fa03ce7f40c = 4: d493e7b971ef survey: stub in new experimental `git-survey` command * 7: 19db94a327e4 = 5: 891929e0cb2f survey: add command line opts to select references * 8: a49a5cdca3c8 ! 6: 0e33f37886bb survey: collect the set of requested refs ``````diff @@ builtin/survey.c: static void survey_load_config(void) + * Theoretically, this data is independent of the on-disk representation + * (e.g. independent of packing concerns). + */ -+static void survey_phase_refs(void) ++static void survey_phase_refs(struct repository *r) +{ + struct ref_array ref_array = { 0 }; + @@ builtin/survey.c: int cmd_survey(int argc, const char **argv, const char *prefix survey_opts.show_progress = isatty(2); fixup_refs_wanted(); -+ survey_phase_refs(); ++ survey_phase_refs(the_repository); + + strvec_clear(&survey_vec_refs_wanted); + `````` * 9: 937d231772dd ! 7: 02c2b1eef417 survey: calculate stats on refs and print results ``````diff @@ builtin/survey.c: static void do_load_refs(struct ref_array *ref_array) +/* + * If we want this type of ref, increment counters and return 1. + */ -+static int maybe_count_ref(struct ref_array_item *p) ++static int maybe_count_ref(struct repository *r, struct ref_array_item *p) +{ + struct survey_refs_wanted *rw = &survey_opts.refs; + struct survey_stats_refs *prs = &survey_stats.refs; @@ builtin/survey.c: static void do_load_refs(struct ref_array *ref_array) + */ + strintmap_incr(&prs->refsmap, "refs/tags/", 1); + -+ if (!peel_iterated_oid(&p->objectname, &peeled)) ++ if (!peel_iterated_oid(r, &p->objectname, &peeled)) + prs->cnt_annotated_tags++; + else + prs->cnt_lightweight_tags++; @@ builtin/survey.c: static void do_load_refs(struct ref_array *ref_array) +/* + * Calculate stats on the set of refs that we found. + */ -+static void do_calc_stats_refs(struct ref_array *ref_array) ++static void do_calc_stats_refs(struct repository *r, struct ref_array *ref_array) +{ + struct survey_stats_refs *prs = &survey_stats.refs; + int k; @@ builtin/survey.c: static void do_load_refs(struct ref_array *ref_array) + struct ref_array_item *p = ref_array->items[k]; + size_t len; + -+ if (!maybe_count_ref(p)) ++ if (!maybe_count_ref(r, p)) + continue; + + prs->cnt_total++; @@ builtin/survey.c: static void do_load_refs(struct ref_array *ref_array) /* * The REFS phase: * -@@ builtin/survey.c: static void survey_phase_refs(void) +@@ builtin/survey.c: static void survey_phase_refs(struct repository *r) do_load_refs(&ref_array); trace2_region_leave("survey", "phase/refs", the_repository); + trace2_region_enter("survey", "phase/calcstats", the_repository); -+ do_calc_stats_refs(&ref_array); ++ do_calc_stats_refs(r, &ref_array); + trace2_region_leave("survey", "phase/calcstats", the_repository); + ref_array_clear(&ref_array); @@ builtin/survey.c: static void survey_phase_refs(void) survey_load_config(); @@ builtin/survey.c: int cmd_survey(int argc, const char **argv, const char *prefix) - survey_phase_refs(); + survey_phase_refs(the_repository); + survey_emit_trace2(); + survey_print_json(); `````` * 10: 90588ad4b1c7 ! 8: 46d069164fb8 survey: stub in treewalk of reachable commits and objects ``````diff @@ builtin/survey.c: static void do_load_refs(struct ref_array *ref_array) + + switch (p->kind) { + case FILTER_REFS_TAGS: -+ if (!peel_iterated_oid(&p->objectname, &peeled)) ++ if (!peel_iterated_oid(rev_info->repo, &p->objectname, &peeled)) + add_pending_oid(rev_info, NULL, &peeled, add_flags); + else + add_pending_oid(rev_info, NULL, &p->objectname, add_flags); @@ builtin/survey.c: static void do_load_refs(struct ref_array *ref_array) /* * If we want this type of ref, increment counters and return 1. */ -@@ builtin/survey.c: static void survey_phase_refs(void) +@@ builtin/survey.c: static void survey_phase_refs(struct repository *r) do_load_refs(&ref_array); trace2_region_leave("survey", "phase/refs", the_repository); @@ builtin/survey.c: static void survey_phase_refs(void) + trace2_region_leave("survey", "phase/treewalk", the_repository); + trace2_region_enter("survey", "phase/calcstats", the_repository); - do_calc_stats_refs(&ref_array); + do_calc_stats_refs(r, &ref_array); trace2_region_leave("survey", "phase/calcstats", the_repository); `````` * 11: 98972399403d = 9: 44a41d0027b6 survey: add traverse callback for commits * 12: d90ba6a9da03 ! 10: 38f5aecd6c3f survey: add vector of largest objects for various scaling dimensions ``````diff @@ builtin/survey.c: int cmd_survey(int argc, const char **argv, const char *prefix + "size", + survey_opts.show_largest_blobs_by_size_bytes); + - survey_phase_refs(); + survey_phase_refs(the_repository); survey_emit_trace2(); survey_print_json(); `````` * 13: 617deae6ac03 = 11: acf22c612e95 survey: add pathname of blob or tree to large_item_vec * 14: 1de055fb7b25 = 12: 09c93cc0d1e6 survey: add commit-oid to large_item detail * 15: 2bc37eff69cd ! 13: 9d24f68692bb survey: add commit name-rev lookup to each large_item ``````diff @@ builtin/survey.c: static void maybe_insert_large_item(struct large_item_vec *vec /* * Common fields for any type of object. */ -@@ builtin/survey.c: static void do_calc_stats_refs(struct ref_array *ref_array) +@@ builtin/survey.c: static void do_calc_stats_refs(struct repository *r, struct ref_array *ref_array } } @@ builtin/survey.c: static void do_calc_stats_refs(struct ref_array *ref_array) /* * The REFS phase: * -@@ builtin/survey.c: static void survey_phase_refs(void) - do_calc_stats_refs(&ref_array); +@@ builtin/survey.c: static void survey_phase_refs(struct repository *r) + do_calc_stats_refs(r, &ref_array); trace2_region_leave("survey", "phase/calcstats", the_repository); + trace2_region_enter("survey", "phase/namerev", the_repository); `````` * 16: 3713eae683d7 ! 14: f4a94db23d1c survey: add --json option and setup for pretty output ``````diff @@ builtin/survey.c: static void survey_emit_trace2(void) { survey_load_config(); @@ builtin/survey.c: int cmd_survey(int argc, const char **argv, const char *prefix) - survey_phase_refs(); + survey_phase_refs(the_repository); survey_emit_trace2(); - survey_print_json(); `````` * 17: de268cde6f28 ! 15: ecef306aae63 survey: add pretty printing of stats ``````diff @@ builtin/survey.c: int cmd_survey(int argc, const char **argv, const char *prefix + alloc_tree_by_size(); + alloc_blob_by_size(); - survey_phase_refs(); + survey_phase_refs(the_repository); `````` * 18: c7ab70ce5b54 = 16: 67a115d6eb93 t8100: create test for git-survey * 19: d06b3ff65ad8 ! 17: e210d30ed3bd survey: add --no-name-rev option ``````diff @@ builtin/survey.c: static int survey_load_config_cb(const char *var, const char * if (!strcmp(var, "survey.showcommitparents")) { survey_opts.show_largest_commits_by_nr_parents = git_config_ulong(var, value, ctx->kvi); -@@ builtin/survey.c: static void do_calc_stats_refs(struct ref_array *ref_array) +@@ builtin/survey.c: static void do_calc_stats_refs(struct repository *r, struct ref_array *ref_array static void do_lookup_name_rev(void) { @@ builtin/survey.c: static void do_calc_stats_refs(struct ref_array *ref_array) if (survey_opts.show_progress) { survey_progress_total = 0; survey_progress = start_progress(_("Resolving name-revs..."), 0); -@@ builtin/survey.c: static void survey_phase_refs(void) - do_calc_stats_refs(&ref_array); +@@ builtin/survey.c: static void survey_phase_refs(struct repository *r) + do_calc_stats_refs(r, &ref_array); trace2_region_leave("survey", "phase/calcstats", the_repository); - trace2_region_enter("survey", "phase/namerev", the_repository); `````` * 20: ec39557264af = 18: 95f6cde2f8f7 survey: started TODO list at bottom of source file * 21: 28549b1815d8 = 19: aecf6ec64d7d survey: expanded TODO list at the bottom of the source file * 22: 3d885d0c5e44 = 20: 79f3731e02d9 survey: expanded TODO with more notes * 23: d81c8ad95842 (upstream: 12c2ee5fbd1a) < -: ------------ for-each-repo: optionally keep going on an error * 24: 2ef315a28b5f (upstream: c75662bfc963) < -: ------------ maintenance: running maintenance should not stop on errors * 198: 3be470ab8f51 = 21: d0ae24c9d298 survey: clearly note the experimental nature in the output * 25: 8b5ff3765708 = 22: 5f1879ca2275 reset --stdin: trim carriage return from the paths * 26: de0e08cef6dc ! 23: bb17814236d4 Identify microsoft/git via a distinct version suffix ``````diff @@ Commit message ## GIT-VERSION-GEN ## @@ GVF=GIT-VERSION-FILE - DEF_VER=v2.45.2 + DEF_VER=v2.46.0-rc0 +# Identify microsoft/git via a distinct version suffix +DEF_VER=$DEF_VER.vfs.0.0 `````` * 27: 44873f8e40fb = 24: 462b3754796c gvfs: ensure that the version is based on a GVFS tag * 28: 29d46d7b8f01 = 25: 13619bcf7d0e gvfs: add a GVFS-specific header file * 29: d4c7891efc37 ! 26: 6c9e6d9cee5d gvfs: add the core.gvfs config setting ``````diff @@ 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: e2fcd935b1dd = 27: 663af32b43af gvfs: add the feature to skip writing the index' SHA-1 * 31: f74478b6bc9d ! 28: 0de65b93b51c gvfs: add the feature that blobs may be missing ``````diff @@ cache-tree.c: static int update_one(struct cache_tree *it, ## commit.c ## @@ + #define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" +#include "gvfs.h" #include "tag.h" `````` * 32: 2750fd4d0cb6 ! 29: d3efbf008c97 gvfs: prevent files to be deleted outside the sparse checkout ``````diff @@ 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: 56146c36a48e = 30: b182882d697c gvfs: optionally skip reachability checks/upload pack during fetch * 34: 298844d02597 ! 31: fdf68f857a83 gvfs: ensure all filters and EOL conversions are blocked ``````diff @@ Documentation/config/core.txt: core.gvfs:: ## convert.c ## @@ + #include "git-compat-util.h" #include "advice.h" +#include "gvfs.h" `````` * 35: 9290d8c599db ! 32: 1673b6c003b5 gvfs: allow "virtualizing" objects ``````diff @@ config.c: int git_default_core_config(const char *var, const char *value, ## connected.c ## @@ + #define USE_THE_REPOSITORY_VARIABLE + #include "git-compat-util.h" +#include "environment.h" #include "gettext.h" `````` * 36: b1d92ce0cde7 = 33: 818d82e8345c Hydrate missing loose objects in check_and_freshen() * 37: 091dc10b1d6e = 34: 2d7a9dceec4e sha1_file: when writing objects, skip the read_object_hook * 38: 90f1631b5c33 ! 35: 4bee1dfe9b5f gvfs: add global command pre and post hook procs ``````diff @@ hook.c + const struct config_context *ctx, void *cb) +{ + if (!strcmp(var, "core.hookspath")) -+ return git_config_pathname((const char **)cb, var, value); ++ return git_config_pathname((char **)cb, var, value); + + return 0; +} @@ hook.c + + if (!initialized) { + struct strbuf gitdir = STRBUF_INIT, commondir = STRBUF_INIT; -+ const char *early_hooks_dir = NULL; ++ char *early_hooks_dir = NULL; + + if (discover_git_directory(&commondir, &gitdir) < 0) { + strbuf_release(&gitdir); @@ hook.c + strbuf_addf(&hooks_dir, "%s/hooks/", commondir.buf); + else { + strbuf_add_absolute_path(&hooks_dir, early_hooks_dir); -+ free((void *)early_hooks_dir); ++ free(early_hooks_dir); + strbuf_addch(&hooks_dir, '/'); + } + `````` * 39: 81a39e769590 = 36: 585cc63cd81c t0400: verify that the hook is called correctly from a subdirectory * 40: 69c187bbd053 = 37: 04b361425283 Pass PID of git process to hooks. * 41: f224aa513f05 = 38: 6dc796cb3d43 pre-command: always respect core.hooksPath * 42: 899ad7e32e45 = 39: 1beb06a0f1b3 sparse-checkout: update files with a modify/delete conflict * 43: c32183f9cb00 = 40: 2e7464043490 sparse-checkout: avoid writing entries with the skip-worktree bit * 44: 326aa6cc2f3f = 41: 47b22d8df73b Do not remove files outside the sparse-checkout * 45: 54634b1157cc = 42: 1b457f9e4354 send-pack: do not check for sha1 file when GVFS_MISSING_OK set * 46: 0ed17f07983c = 43: 7969d782fbc1 cache-tree: remove use of strbuf_addf in update_one * 47: 116dbce18283 ! 44: f2eae33203b1 gvfs: block unsupported commands when running in a GVFS repo ``````diff @@ builtin/gc.c: int cmd_gc(int argc, const char **argv, const char *prefix) ## builtin/update-index.c ## @@ */ - #define USE_THE_INDEX_VARIABLE + #include "builtin.h" +#include "gvfs.h" #include "bulk-checkin.h" @@ builtin/update-index.c: int cmd_update_index(int argc, const char **argv, const + die(_("changing the index version is not supported on a GVFS repo")); + if (preferred_index_format < 0) { - printf(_("%d\n"), the_index.version); + printf(_("%d\n"), the_repository->index->version); } else if (preferred_index_format < INDEX_FORMAT_LB || @@ builtin/update-index.c: int cmd_update_index(int argc, const char **argv, const char *prefix) end_odb_transaction(); @@ builtin/update-index.c: int cmd_update_index(int argc, const char **argv, const ## git.c ## @@ + #define USE_THE_REPOSITORY_VARIABLE + #include "builtin.h" +#include "gvfs.h" #include "config.h" `````` * 48: deeb420bf234 = 45: a08a89d854d1 worktree: allow in Scalar repositories * 49: 7fc02f9706c6 = 46: 7227b52f5625 gvfs: allow overriding core.gvfs * 50: 1fb74c0caa23 = 47: 5733f8e0d6e3 BRANCHES.md: Add explanation of branches and using forks * 145: 0cb2146b5023 = 48: 84d002422b26 git_config_set_multivar_in_file_gently(): add a lock timeout * 146: 3d94588c9ad7 = 49: 5ebaf3f62941 scalar: set the config write-lock timeout to 150ms * 147: 225409d5b644 = 50: 2521c6e8b3ea scalar: add docs from microsoft/scalar * 148: 6391ce063357 = 51: 8474a8c79916 scalar (Windows): use forward slashes as directory separators * 149: 4dbcf6f48db4 ! 52: fced4b62821c scalar: add retry logic to run_git() ``````diff @@ 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: 7903a9ab9f54 = 53: 98e34458bbce scalar: support the `config` command for backwards compatibility * 177: f21079b0c3d3 = 54: 45d1ce3a892d sequencer: avoid progress when stderr is redirected * 51: 8e5b27063a7d ! 55: f51ea9b32ea9 Add virtual file system settings and hook proc ``````diff @@ config.c: int git_config_get_max_percent_split_change(void) int is_bool, val; ## config.h ## -@@ config.h: int git_config_get_pathname(const char *key, const char **dest); +@@ config.h: int git_config_get_pathname(const char *key, char **dest); int git_config_get_index_threads(int *dest); int git_config_get_split_index(void); int git_config_get_max_percent_split_change(void); @@ config.h: int git_config_get_pathname(const char *key, const char **dest); ## dir.c ## @@ - */ + #include "git-compat-util.h" #include "abspath.h" +#include "virtualfilesystem.h" @@ environment.c: int core_apply_sparse_checkout; int core_sparse_checkout_cone; int sparse_expect_files_outside_of_patterns; int core_gvfs; -+const char *core_virtualfilesystem; ++char *core_virtualfilesystem; int merge_log_config = -1; int precomposed_unicode = -1; /* see probe_utf8_pathname_composition() */ unsigned long pack_size_limit_cfg; @@ environment.h: int get_shared_repository(void); void reset_shared_repository(void); extern int core_preload_index; -+extern const char *core_virtualfilesystem; ++extern char *core_virtualfilesystem; extern int core_gvfs; extern int precomposed_unicode; extern int protect_hfs; ## read-cache.c ## @@ - */ + #include "git-compat-util.h" #include "bulk-checkin.h" +#include "virtualfilesystem.h" @@ sparse-index.c: void expand_index(struct index_state *istate, struct pattern_lis if (!S_ISSPARSEDIR(ce->ce_mode)) { set_index_entry(full, full->cache_nr++, ce); -@@ sparse-index.c: void clear_skip_worktree_from_present_files(struct index_state *istate) - int restarted = 0; - +@@ sparse-index.c: static void clear_skip_worktree_from_present_files_full(struct index_state *ista + void clear_skip_worktree_from_present_files(struct index_state *istate) + { if (!core_apply_sparse_checkout || + core_virtualfilesystem || sparse_expect_files_outside_of_patterns) `````` * 52: 47fb1b229a3f = 56: 8e22f0673d1d virtualfilesystem: don't run the virtual file system hook if the index has been redirected * 53: f998e1da0a9f = 57: bd9e9d991ecd virtualfilesystem: check if directory is included * 54: 95436e484368 = 58: 214b081718a1 backwards-compatibility: support the post-indexchanged hook * 55: 91e8518dd6ba = 59: 858040ab9cb8 gvfs: verify that the built-in FSMonitor is disabled * 56: e9609a8f9773 ! 60: b9c892cb7e26 status: add status serialization mechanism ``````diff @@ builtin/commit.c: int cmd_status(int argc, const char **argv, const char *prefix + /* deserialize failed, so force the initialization we skipped above. */ + enable_fscache(1); + repo_read_index_preload(the_repository, &s.pathspec, 0); -+ refresh_index(&the_index, REFRESH_QUIET|REFRESH_UNMERGED, &s.pathspec, NULL, NULL); ++ refresh_index(the_repository->index, REFRESH_QUIET|REFRESH_UNMERGED, &s.pathspec, NULL, NULL); + + if (use_optional_locks()) + fd = repo_hold_locked_index(the_repository, &index_lock, 0); @@ t/t7523-status-complete-untracked.sh (new) ## wt-status-deserialize.c (new) ## @@ ++#define USE_THE_REPOSITORY_VARIABLE +#include "git-compat-util.h" +#include "environment.h" +#include "hex.h" @@ wt-status-deserialize.c (new) +#include "pkt-line.h" +#include "trace.h" +#include "statinfo.h" ++#include "hex.h" + +static struct trace_key trace_deserialize = TRACE_KEY_INIT(DESERIALIZE); + `````` * 57: b3e750505779 = 61: 7405e5e0ed54 Teach ahead-behind and serialized status to play nicely together * 58: 8407c36d45d5 = 62: 44d03e8f1d5e status: serialize to path * 59: 28d3839d0ce1 = 63: ce47f124cf02 status: reject deserialize in V2 and conflicts * 60: 1d82aa2c3520 ! 64: fe42bddb72b4 serialize-status: serialize global and repo-local exclude file metadata ``````diff @@ Commit message ## wt-status-deserialize.c ## @@ - #include "pkt-line.h" #include "trace.h" #include "statinfo.h" + #include "hex.h" +#include "path.h" static struct trace_key trace_deserialize = TRACE_KEY_INIT(DESERIALIZE); `````` * 61: 3ff191af1deb = 65: c1d5d31ab17e status: deserialization wait * 62: c5e4ee04008f = 66: 11d838d7f861 merge-recursive: avoid confusing logic in was_dirty() * 63: 47d58ffd65ba = 67: 1bc8f66607f2 merge-recursive: add some defensive coding to was_dirty() * 64: cc07a28bf9b9 ! 68: dad640bef266 merge-recursive: teach was_dirty() about the virtualfilesystem ``````diff @@ Commit message ## merge-recursive.c ## @@ - */ + #include "git-compat-util.h" #include "merge-recursive.h" +#include "virtualfilesystem.h" `````` * 65: 72ea807fa985 = 69: 3026a1e4f244 status: deserialize with -uno does not print correct hint * 66: abb2796979ae = 70: f974331a3617 fsmonitor: check CE_FSMONITOR_VALID in ce_uptodate * 67: aaab24ef16cc = 71: 0ad0d0f4b54b fsmonitor: add script for debugging and update script for tests * 68: c1569804b39e ! 72: 907a53a12c9d status: disable deserialize when verbose output requested. ``````diff @@ Commit message ## builtin/commit.c ## @@ - #include "commit-reach.h" #include "commit-graph.h" #include "pretty.h" + #include "trailer.h" +#include "trace2.h" static const char * const builtin_commit_usage[] = { `````` * 69: 81f271c72e4a = 73: ba4aaf94aa85 t7524: add test for verbose status deserialzation * 70: 42623159951e = 74: a4bbd5d79ebe deserialize-status: silently fallback if we cannot read cache file * 71: 9d211c480f0b = 75: c8c93ae2402b gvfs:trace2:data: add trace2 tracing around read_object_process * 72: a41a3cafa513 ! 76: cded777829c9 gvfs:trace2:data: status deserialization information ``````diff @@ builtin/commit.c: int cmd_status(int argc, const char **argv, const char *prefix ## wt-status-deserialize.c ## @@ - #include "trace.h" #include "statinfo.h" + #include "hex.h" #include "path.h" +#include "trace2.h" + `````` * 73: aa452a0bd691 ! 77: 03952fa61547 gvfs:trace2:data: status serialization ``````diff @@ Commit message Signed-off-by: Jeff HostetlerThe 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.