Skip to content
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

Merged
203 commits merged into from
Dec 18, 2023
Merged

Rebase to v2.43.0 #615

203 commits merged into from
Dec 18, 2023

Conversation

dscho
Copy link
Member

@dscho dscho commented Nov 3, 2023

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

    @@ GIT-VERSION-GEN
      #!/bin/sh
      
      GVF=GIT-VERSION-FILE
    --DEF_VER=v2.42.0
    -+DEF_VER=v2.42.0.vfs.0.0
    +-DEF_VER=v2.43.0-rc0
    ++DEF_VER=v2.43.0.vfs.0.0
      
      LF='
      '
  • 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

    @@ config.c
     +#include "gvfs.h"
      #include "branch.h"
      #include "config.h"
    - #include "convert.h"
    + #include "parse.h"
     @@ config.c: int git_default_core_config(const char *var, const char *value,
      		return 0;
      	}
  • 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

    @@ unpack-trees.c
     +#include "gvfs.h"
      #include "strvec.h"
      #include "repository.h"
    - #include "config.h"
    + #include "parse.h"
     @@ unpack-trees.c: static int deleted_entry(const struct cache_entry *ce,
      
      	if (!(old->ce_flags & CE_CONFLICTED) && verify_uptodate(old, o))
  • 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

    @@ environment.c: int core_gvfs;
      unsigned long pack_size_limit_cfg;
     +int core_virtualize_objects;
      enum log_refs_config log_all_ref_updates = LOG_REFS_UNSET;
    - 
    - #ifndef PROTECT_HFS_DEFAULT
    + int max_allowed_tree_depth =
    + #ifdef _MSC_VER
     
      ## environment.h ##
     @@ environment.h: struct strvec;
  • 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

    @@ builtin/update-index.c: int cmd_update_index(int argc, const char **argv, const
     +		if (preferred_index_format != 4 && gvfs_config_is_set(GVFS_BLOCK_COMMANDS))
     +			die(_("changing the index version is not supported on a GVFS repo"));
     +
    - 		if (preferred_index_format < INDEX_FORMAT_LB ||
    - 		    INDEX_FORMAT_UB < preferred_index_format)
    - 			die("index-version %d not in range: %d..%d",
    + 		if (preferred_index_format < 0) {
    + 			printf(_("%d\n"), the_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();
      
  • 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

    @@ unpack-trees.c
     +#include "virtualfilesystem.h"
      #include "strvec.h"
      #include "repository.h"
    - #include "config.h"
    + #include "parse.h"
     @@ unpack-trees.c: static int clear_ce_flags_1(struct index_state *istate,
      			continue;
      		}
  • 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

    @@ contrib/completion/git-completion.bash: _git_clone ()
     -__git_untracked_file_modes="all no normal"
     +__git_untracked_file_modes="all no normal complete"
      
    - _git_commit ()
    + __git_trailer_tokens ()
      {
     
      ## pkt-line.c ##
  • 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

    @@ config.c: static int git_default_mailmap_config(const char *var, const char *val
     +	return 0;
     +}
     +
    - int git_default_config(const char *var, const char *value,
    - 		       const struct config_context *ctx, void *cb)
    + static int git_default_attr_config(const char *var, const char *value)
      {
    + 	if (!strcmp(var, "attr.tree"))
     @@ config.c: int git_default_config(const char *var, const char *value,
      	if (starts_with(var, "sparse."))
      		return git_default_sparse_config(var, value);
  • 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-git

    @@ .github/workflows/monitor-components.yml (deleted)
     -            feed: https://github.com/gpg/gnupg/releases.atom
     -          - label: mintty
     -            feed: https://github.com/mintty/mintty/releases.atom
    --          - label: p7zip
    --            feed: https://sourceforge.net/projects/p7zip/rss?path=/p7zip
    +-          - label: 7-zip
    +-            feed: https://sourceforge.net/projects/sevenzip/rss?path=/7-Zip
    +-            aggregate: true
     -          - label: bash
     -            feed: https://git.savannah.gnu.org/cgit/bash.git/atom/?h=master
     -            aggregate: true
    @@ .github/workflows/monitor-components.yml (deleted)
     -            title-pattern: ^(?!.*(5\.[0-9]+[13579]|RC))
     -          - label: pcre2
     -            feed: https://github.com/PCRE2Project/pcre2/tags.atom
    +-          - label: mingw-w64-clang
    +-            feed: https://github.com/msys2/MINGW-packages/commits/master/mingw-w64-clang.atom
     -      fail-fast: false
     -    steps:
     -      - uses: git-for-windows/rss-to-issues@v0
  • 112: 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 compatibility

  • 130: b50649a = 126: 1695713 scalar: implement a minimal JSON parser

  • 131: bb87de6 ! 127: 317c6b9 scalar clone: support GVFS-enabled remote repositories

    @@ scalar.c: static int set_config(const char *fmt, ...)
      {
      	struct child_process cp = CHILD_PROCESS_INIT;
     @@ scalar.c: static int cmd_clone(int argc, const char **argv)
    - {
      	const char *branch = NULL;
      	int full_clone = 0, single_branch = 0, show_progress = isatty(2);
    + 	int src = 1;
     +	const char *cache_server_url = NULL;
     +	char *default_cache_server_url = NULL;
      	struct option clone_options[] = {
      		OPT_STRING('b', "branch", &branch, N_("<branch>"),
      			   N_("branch to checkout after clone")),
     @@ scalar.c: static int cmd_clone(int argc, const char **argv)
    - 		OPT_BOOL(0, "single-branch", &single_branch,
    - 			 N_("only download metadata for the branch that will "
      			    "be checked out")),
    + 		OPT_BOOL(0, "src", &src,
    + 			 N_("create repository within 'src' directory")),
     +		OPT_STRING(0, "cache-server-url", &cache_server_url,
     +			   N_("<url>"),
     +			   N_("the url or friendly name of the cache server")),
  • 132: 8ff5fad = 128: cd787a3 test-gvfs-protocol: also serve smart protocol

  • 133: 06f1e8b = 129: b5c45c8 gvfs-helper: add the endpoint command

  • 134: 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

    @@ Commit message
         Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
     
      ## Documentation/scalar.txt ##
    -@@ Documentation/scalar.txt: scalar - A tool for managing large Git repositories
    - SYNOPSIS
    +@@ Documentation/scalar.txt: SYNOPSIS
      --------
      [verse]
    --scalar clone [--single-branch] [--branch <main-branch>] [--full-clone] <url> [<enlistment>]
    -+scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]
    -+	[--local-cache-path <path>] [--cache-server-url <url>]
    + scalar clone [--single-branch] [--branch <main-branch>] [--full-clone]
    +-	[--[no-]src] <url> [<enlistment>]
    ++	[--[no-]src] [--local-cache-path <path>] [--cache-server-url <url>]
     +	<url> [<enlistment>]
      scalar list
      scalar register [<enlistment>]
    @@ scalar.c: void load_builtin_commands(const char *prefix, struct cmdnames *cmds)
      {
      	const char *branch = NULL;
      	int full_clone = 0, single_branch = 0, show_progress = isatty(2);
    + 	int src = 1;
     -	const char *cache_server_url = NULL;
     -	char *default_cache_server_url = NULL;
     +	const char *cache_server_url = NULL, *local_cache_root = NULL;
    @@ scalar.c: static int cmd_clone(int argc, const char **argv)
      
     +	ensure_absolute_path(enlistment, &enlistment);
     +
    - 	dir = xstrfmt("%s/src", enlistment);
    + 	if (src)
    + 		dir = xstrfmt("%s/src", enlistment);
    + 	else
    + 		dir = xstrdup(enlistment);
      
     +	if (!local_cache_root)
     +		local_cache_root = local_cache_root_abs =
  • 137: b2a647f ! 133: 1c0a915 scalar diagnose: include shared cache info

    @@ Commit message
         Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
     
      ## diagnose.c ##
    -@@ diagnose.c: static unsigned char get_dtype(struct dirent *e, struct strbuf *path)
    - 	return dtype;
    +@@ diagnose.c: static int dir_file_stats(struct object_directory *object_dir, void *data)
    + 	return 0;
      }
      
     +static void dir_stats(struct strbuf *buf, const char *path)
  • 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 command

  • 141: 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 compatibility

    @@ scalar.c: static int init_shared_object_cache(const char *url,
     +	int dummy = 0;
      	const char *branch = NULL;
      	int full_clone = 0, single_branch = 0, show_progress = isatty(2);
    - 	const char *cache_server_url = NULL, *local_cache_root = NULL;
    + 	int src = 1;
     @@ scalar.c: static int cmd_clone(int argc, const char **argv)
      		OPT_STRING(0, "local-cache-path", &local_cache_root,
      			   N_("<path>"),
  • 145: 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'

    @@ Commit message
     
      ## scalar.c ##
     @@ scalar.c: static int cmd_reconfigure(int argc, const char **argv)
    - 		if (set_recommended_config(1) < 0)
    - 			failed = -1;
    + 		if (set_recommended_config(1) >= 0)
    + 			succeeded = 1;
      
    -+		if (toggle_maintenance(1) < 0)
    -+			failed = -1;
    ++		if (toggle_maintenance(1) >= 0)
    ++			succeeded = 1;
     +
      loop_end:
    - 		if (failed) {
    - 			res = failed;
    + 		if (!succeeded) {
    + 			res = -1;
     
      ## t/t9210-scalar.sh ##
     @@ t/t9210-scalar.sh: test_expect_success 'scalar 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

@dscho dscho self-assigned this Nov 3, 2023
@dscho
Copy link
Member Author

dscho commented Nov 3, 2023

sigh osx-clang failed, due to that macos-12-xl co-opting. We could cherry-pick gitgitgadget#1607 to remedy that, but from what I understand that patch is on its way into -rc1 anyway.

@dscho
Copy link
Member Author

dscho commented Nov 5, 2023

I added c15ee9f to fix the linux-leaks failures.

@dscho
Copy link
Member Author

dscho commented Nov 8, 2023

Range-diff relative to -rc0 + universal binary PR + Trace2 redacting PR:
  • 1: 99e79b8 = 1: cff1a2f reset --stdin: trim carriage return from the paths

  • 2: ed0a8b4 ! 2: dd7c9a7 gvfs: start by adding the -gvfs suffix to the version

    @@ GIT-VERSION-GEN
      #!/bin/sh
      
      GVF=GIT-VERSION-FILE
    --DEF_VER=v2.43.0-rc0
    +-DEF_VER=v2.43.0-rc1
     +DEF_VER=v2.43.0.vfs.0.0
      
      LF='
  • 3: 8be0426 = 3: 7152f38 gvfs: ensure that the version is based on a GVFS tag

  • 4: 37d2c9d = 4: 5263392 gvfs: add a GVFS-specific header file

  • 5: 8668bb7 = 5: e970eae gvfs: add the core.gvfs config setting

  • 6: d99b255 = 6: 896df21 gvfs: add the feature to skip writing the index' SHA-1

  • 7: fc7e063 = 7: 7e89833 gvfs: add the feature that blobs may be missing

  • 8: a3b2d03 = 8: 6729f38 gvfs: prevent files to be deleted outside the sparse checkout

  • 9: e4f7323 = 9: f47f108 gvfs: optionally skip reachability checks/upload pack during fetch

  • 10: a70b1dc = 10: 966d252 gvfs: ensure all filters and EOL conversions are blocked

  • 11: 87d9f02 = 11: 65b7099 gvfs: allow "virtualizing" objects

  • 12: 051bcdd = 12: 6e0235f Hydrate missing loose objects in check_and_freshen()

  • 13: 29cbb5a = 13: 6aa2175 sha1_file: when writing objects, skip the read_object_hook

  • 14: 2352f0c ! 14: f003fd9 gvfs: add global command pre and post hook procs

    @@ hook.c
     +		const char *early_hooks_dir = NULL;
     +
     +		if (discover_git_directory(&commondir, &gitdir) < 0) {
    ++			strbuf_release(&gitdir);
    ++			strbuf_release(&commondir);
     +			initialized = -1;
     +			return NULL;
     +		}
  • 15: 2ccfb83 = 15: 632bb5e t0400: verify that the hook is called correctly from a subdirectory

  • 16: 58b17ee = 16: fb4cf4c Pass PID of git process to hooks.

  • 17: 394d502 = 17: 0cd6337 pre-command: always respect core.hooksPath

  • 18: 96c562c = 18: 545142e sparse-checkout: update files with a modify/delete conflict

  • 19: a7d1603 = 19: c23bd3b sparse-checkout: avoid writing entries with the skip-worktree bit

  • 20: 897869c = 20: 01ecce5 Do not remove files outside the sparse-checkout

  • 21: f8965fa = 21: 64b1b4b send-pack: do not check for sha1 file when GVFS_MISSING_OK set

  • 22: 8b20949 = 22: a381847 cache-tree: remove use of strbuf_addf in update_one

  • 23: 9e50d7a = 23: d6bf4ae gvfs: block unsupported commands when running in a GVFS repo

  • 24: 0a25d9a = 24: bedcaeb worktree: allow in Scalar repositories

  • 25: 7215080 = 25: 60fe349 gvfs: allow overriding core.gvfs

  • 26: 929fc3c = 26: 3255d6b BRANCHES.md: Add explanation of branches and using forks

  • 27: ec0c3b3 = 27: 4e0a577 Add virtual file system settings and hook proc

  • 28: 8fc7a7d = 28: 5e4e7c4 virtualfilesystem: don't run the virtual file system hook if the index has been redirected

  • 29: e0935bf = 29: eee1c35 virtualfilesystem: check if directory is included

  • 30: 5440331 = 30: f61260e backwards-compatibility: support the post-indexchanged hook

  • 31: 2a8e325 = 31: 0671037 gvfs: verify that the built-in FSMonitor is disabled

  • 32: c6e71ee = 32: 495f3c9 status: add status serialization mechanism

  • 33: df1bec0 = 33: 41573c4 Teach ahead-behind and serialized status to play nicely together

  • 34: 46a6fc1 = 34: 2e4c8a3 status: serialize to path

  • 35: 09ecd11 = 35: e66730f status: reject deserialize in V2 and conflicts

  • 36: d9e7946 = 36: d053cd0 serialize-status: serialize global and repo-local exclude file metadata

  • 37: 2b44917 = 37: da09693 status: deserialization wait

  • 38: 3b28525 = 38: 18aa23a merge-recursive: avoid confusing logic in was_dirty()

  • 39: 2fbea31 = 39: 813a9ca merge-recursive: add some defensive coding to was_dirty()

  • 40: a9987a8 = 40: 4c52e6c merge-recursive: teach was_dirty() about the virtualfilesystem

  • 41: bcae658 = 41: 923843c status: deserialize with -uno does not print correct hint

  • 42: 72daa6e = 42: b0609a2 fsmonitor: check CE_FSMONITOR_VALID in ce_uptodate

  • 43: b148e10 = 43: 47ef114 fsmonitor: add script for debugging and update script for tests

  • 44: 1eeb23f = 44: a7de873 status: disable deserialize when verbose output requested.

  • 45: e13c216 = 45: 1cdbeea t7524: add test for verbose status deserialzation

  • 46: da6ba9e = 46: 5d6f1ab deserialize-status: silently fallback if we cannot read cache file

  • 47: 935075a = 47: 42b56d7 gvfs:trace2:data: add trace2 tracing around read_object_process

  • 48: a3a21ee = 48: 4823db2 gvfs:trace2:data: status deserialization information

  • 49: 2e91a37 = 49: a1b99bf gvfs:trace2:data: status serialization

  • 50: 5bbf109 = 50: f2959de gvfs:trace2:data: add vfs stats

  • 51: 510763f = 51: 4da1037 trace2: refactor setting process starting time

  • 52: 58348c1 = 52: bff9656 trace2:gvfs:experiment: clear_ce_flags_1

  • 53: 31064cf = 53: 614a2e0 trace2:gvfs:experiment: report_tracking

  • 54: 2d20516 = 54: dca92bb trace2:gvfs:experiment: read_cache: annotate thread usage in read-cache

  • 55: 17a8386 = 55: c67bb66 trace2:gvfs:experiment: read-cache: time read/write of cache-tree extension

  • 56: 6f0f0ad = 56: 6195596 trace2:gvfs:experiment: add region to apply_virtualfilesystem()

  • 57: 94b9e74 = 57: 96143d3 trace2:gvfs:experiment: add region around unpack_trees()

  • 58: d08d303 = 58: af066f3 trace2:gvfs:experiment: add region to cache_tree_fully_valid()

  • 59: f2fa7a6 = 59: af2bafa trace2:gvfs:experiment: add unpack_entry() counter to unpack_trees() and report_tracking()

  • 60: cfee221 = 60: 6d1d547 trace2:gvfs:experiment: increase default event depth for unpack-tree data

  • 61: 9cb8e6e = 61: 000e50a trace2:gvfs:experiment: add data for check_updates() in unpack_trees()

  • 62: 28e92d6 = 62: 005c0fb Trace2:gvfs:experiment: capture more 'tracking' details

  • 63: cf37c8b = 63: d5a0c7c credential: set trace2_child_class for credential manager children

  • 64: 60c1a19 = 64: c3851b4 sub-process: do not borrow cmd pointer from caller

  • 65: 4f22dd7 = 65: ab1bc96 sub-process: add subprocess_start_argv()

  • 66: 0f90579 = 66: 28b9b1b sha1-file: add function to update existing loose object cache

  • 67: d01ff0d = 67: a5b1bb7 packfile: add install_packed_git_and_mru()

  • 68: b1a0157 = 68: 9fd2a2f index-pack: avoid immediate object fetch while parsing packfile

  • 69: ab7c36a = 69: cf06ef2 gvfs-helper: create tool to fetch objects using the GVFS Protocol

  • 70: 0a666e8 = 70: 12fd0d9 sha1-file: create shared-cache directory if it doesn't exist

  • 71: a438315 = 71: 091fb67 gvfs-helper: better handling of network errors

  • 72: 7a5798b = 72: d5068eb gvfs-helper-client: properly update loose cache with fetched OID

  • 73: d4c6772 = 73: 89bf1f5 gvfs-helper: V2 robust retry and throttling

  • 74: c5ad677 = 74: 8308224 gvfs-helper: expose gvfs/objects GET and POST semantics

  • 75: 0daa2eb = 75: 262ea7e gvfs-helper: dramatically reduce progress noise

  • 76: 4e59bb1 = 76: b5f86d2 gvfs-helper-client.h: define struct object_id

  • 77: 3958c1b = 77: 8a94a5e gvfs-helper: handle pack-file after single POST request

  • 78: 2be9271 = 78: f134972 test-gvfs-prococol, t5799: tests for gvfs-helper

  • 79: be495f4 = 79: 88d3b3a gvfs-helper: move result-list construction into install functions

  • 80: a249936 = 80: 72ea08a t5799: add support for POST to return either a loose object or packfile

  • 81: ed7aabd = 81: 43eaed7 t5799: cleanup wc-l and grep-c lines

  • 82: db90e61 = 82: 6f0a108 gvfs-helper: verify loose objects after write

  • 83: 57a7a1d = 83: 8e936ae t7599: create corrupt blob test

  • 84: 22b31ad = 84: c761943 gvfs-helper: add prefetch support

  • 85: 60043d3 = 85: baef9f8 gvfs-helper: add prefetch .keep file for last packfile

  • 86: 04429ca = 86: 59f2fbe gvfs-helper: do one read in my_copy_fd_len_tail()

  • 87: f4734f4 = 87: 539f653 gvfs-helper: move content-type warning for prefetch packs

  • 88: 68bdb0d = 88: 4543d99 fetch: use gvfs-helper prefetch under config

  • 89: 971e509 = 89: 8d9888b gvfs-helper: better support for concurrent packfile fetches

  • 90: 04627ca = 90: e36380c remote-curl: do not call fetch-pack when using gvfs-helper

  • 91: b862eb7 = 91: 31c5db7 fetch: reprepare packs before checking connectivity

  • 92: 749a3e8 = 92: 337452a gvfs-helper: retry when creating temp files

  • 93: ff277e3 = 93: 1405d91 sparse: avoid warnings about known cURL issues in gvfs-helper.c

  • 97: b94f532 = 94: d1b797c maintenance: care about gvfs.sharedCache config

  • 98: 536df78 = 95: 27312fb unpack-trees:virtualfilesystem: Improve efficiency of clear_ce_flags

  • 99: 7202cb1 = 96: 82b1b1c homebrew: add GitHub workflow to release Cask

  • 94: 9acbbda = 97: 993b304 gvfs-helper: add --max-retries to prefetch verb

  • 100: a1cf699 = 98: 973b7b6 Adding winget workflows

  • 95: 5b24b58 = 99: 7cc33f0 t5799: add tests to detect corrupt pack/idx files in prefetch

  • 101: 63db775 = 100: 832ddef Disable the monitor-components workflow in msft-git

  • 96: 4fb9e00 = 101: a42447f gvfs-helper: ignore .idx files in prefetch multi-part responses

  • 102: 103c0a1 = 102: 9e48105 .github: enable windows builds on microsoft fork

  • 109: 09ecfbc = 103: 1f11504 update-microsoft-git: create barebones builtin

  • 111: 2847978 = 104: 0a2aad6 update-microsoft-git: Windows implementation

  • 119: 087188f = 105: 9d9cfe1 git_config_set_multivar_in_file_gently(): add a lock timeout

  • 113: 45a19d9 = 106: 640ec7b update-microsoft-git: use brew on macOS

  • 120: 3a5b7ac = 107: d26352a scalar: set the config write-lock timeout to 150ms

  • 115: 9b32706 = 108: 9246058 .github: update ISSUE_TEMPLATE.md for microsoft/git

  • 121: 4035f8b = 109: c701a70 scalar: add docs from microsoft/scalar

  • 117: c5c9099 = 110: b66b7c2 .github: update PULL_REQUEST_TEMPLATE.md

  • 122: 7fbee27 = 111: d3fe9a5 Adjust README.md for microsoft/git

  • 123: 5ad79f8 = 112: abf7bff scalar (Windows): use forward slashes as directory separators

  • 124: c4d0313 = 113: 1a3377d scalar: add retry logic to run_git()

  • 125: 5854da7 = 114: 6f73e54 scalar: support the config command for backwards compatibility

  • 126: 1695713 = 115: 49a73fb scalar: implement a minimal JSON parser

  • 127: 317c6b9 = 116: d5a5caa scalar clone: support GVFS-enabled remote repositories

  • 128: cd787a3 = 117: 18b1009 test-gvfs-protocol: also serve smart protocol

  • 129: b5c45c8 = 118: 98583c8 gvfs-helper: add the endpoint command

  • 130: 82e0e12 = 119: 38779fa dir_inside_of(): handle directory separators correctly

  • 131: 884983b = 120: edc0735 scalar: disable authentication in unattended mode

  • 132: c852bb2 = 121: 541c0c1 scalar: do initialize gvfs.sharedCache

  • 133: 1c0a915 = 122: 900a3a4 scalar diagnose: include shared cache info

  • 134: 98dedc4 = 123: 05931bd scalar: only try GVFS protocol on https:// URLs

  • 135: fc6b6cf = 124: b501f16 scalar: verify that we can use a GVFS-enabled repository

  • 136: 6fcf4ec = 125: 7f91793 scalar: add the cache-server command

  • 137: 272a530 = 126: 80032cd scalar: add a test toggle to skip accessing the vsts/info endpoint

  • 138: 9d7dd3b = 127: 229b544 scalar: adjust documentation to the microsoft/git fork

  • 139: fc6a7c2 = 128: 685c004 scalar: enable untracked cache unconditionally

  • 140: 043f91a = 129: 873ce53 scalar: parse clone --no-fetch-commits-and-trees for backwards compatibility

  • 141: 58e350f = 130: 2d97972 scalar diagnose: accommodate Scalar's Functional Tests

  • 142: 38e9365 = 131: b490af4 ci: run Scalar's Functional Tests

  • 143: 0543ac6 = 132: f8ba50d scalar: upgrade to newest FSMonitor config setting

  • 144: dcf7b41 = 133: 9563619 abspath: make strip_last_path_component() global

  • 145: 8640024 = 134: 4995774 scalar: .scalarCache should live above enlistment

  • 146: 50380be = 135: 7b4d0a1 add/rm: allow adding sparse entries when virtual

  • 147: f7a7d9b = 136: 20d2642 sparse-checkout: add config to disable deleting dirs

  • 148: f42153b = 137: 68b1d42 diff: ignore sparse paths in diffstat

  • 149: f3c3b66 = 138: d3cfb63 repo-settings: enable sparse index by default

  • 150: 42d52fa = 139: bc7fbc7 diff(sparse-index): verify with partially-sparse

  • 151: de1ceb3 = 140: 75ab427 stash: expand testing for git stash -u

  • 152: ddc99c5 = 141: 4dc56f5 sequencer: avoid progress when stderr is redirected

  • 153: fbd62f1 = 142: a49f5f2 sparse: add vfs-specific precautions

  • 154: 5695874 = 143: 82fbe54 reset: fix mixed reset when using virtual filesystem

  • 103: add30d6 ! 144: 54d0545 release: create initial Windows installer build workflow

    @@ .github/workflows/build-git-installers.yml (new)
     +      - name: Validate tag
     +        run: |
     +          echo "$GITHUB_REF" |
    -+          grep '^refs/tags/v2\.\(0\|[1-9][0-9]*\)\.\(0\|[1-9][0-9]*\)\.vfs\.0\.\(0\|[1-9][0-9]*\)$' || {
    -+            echo "::error::${GITHUB_REF#refs/tags/} is not of the form v2.<X>.<Y>.vfs.0.<W>" >&2
    ++          grep -E '^refs/tags/v2\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.vfs\.0\.(0|[1-9][0-9]*)(\.rc[0-9])?$' || {
    ++            echo "::error::${GITHUB_REF#refs/tags/} is not of the form v2.<X>.<Y>.vfs.0.<W>[.rc<N>]" >&2
     +            exit 1
     +          }
     +      - name: Determine tag to build
  • 164: 56274d5 ! 145: 44e7ff0 help: special-case HOST_CPU universal

    @@ Commit message
         setting that is woefully unprepared for such a situation, as it wants to
         show architecture hard-coded at build time.
     
    -    In preparation for switching to universal builds, work around this by
    +    In preparation for releasing universal builds, work around this by
         special-casing `universal` and replacing it at run-time with the known
         values `x86_64` or `arm64`.
     
  • 104: 13380f4 ! 146: 92227c7 release: add Mac OSX installer build

    @@ .github/macos-installer/Makefile (new)
     +
     +uname_M := $(shell sh -c 'uname -m 2>/dev/null || echo not')
     +
    -+ifeq ($(uname_M),x86_64)
    -+	ARCH := x86_64
    -+	ARCH_CODE := x86_64
    -+	ARCH_FLAGS_x86_64 := -arch x86_64
    -+	CPU_VENDOR := Intel
    -+endif
    -+ifeq ($(uname_M),arm64)
    -+	ARCH := arm64
    -+	ARCH_CODE := arm64
    -+	ARCH_FLAGS_arm64 := -arch arm64
    -+	CPU_VENDOR := Apple Silicon
    -+endif
    ++ARCH_UNIV := universal
    ++ARCH_FLAGS := -arch x86_64 -arch arm64
     +
    -+CFLAGS := $(TARGET_FLAGS) $(ARCH_FLAGS_${ARCH_CODE})
    -+LDFLAGS := $(TARGET_FLAGS) $(ARCH_FLAGS_${ARCH_CODE})
    ++CFLAGS := $(TARGET_FLAGS) $(ARCH_FLAGS)
    ++LDFLAGS := $(TARGET_FLAGS) $(ARCH_FLAGS)
     +
     +PREFIX := /usr/local
     +GIT_PREFIX := $(PREFIX)/git
     +
    -+BUILD_CODE := $(ARCH_CODE)
     +BUILD_DIR := $(GITHUB_WORKSPACE)/payload
    -+DESTDIR := $(PWD)/stage/git-$(BUILD_CODE)-$(VERSION)
    ++DESTDIR := $(PWD)/stage/git-$(ARCH_UNIV)-$(VERSION)
     +ARTIFACTDIR := build-artifacts
     +SUBMAKE := $(MAKE) C_INCLUDE_PATH="$(C_INCLUDE_PATH)" CPLUS_INCLUDE_PATH="$(CPLUS_INCLUDE_PATH)" LD_LIBRARY_PATH="$(LD_LIBRARY_PATH)" TARGET_FLAGS="$(TARGET_FLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" NO_GETTEXT=1 NO_DARWIN_PORTS=1 prefix=$(GIT_PREFIX) DESTDIR=$(DESTDIR)
     +CORES := $(shell bash -c "sysctl hw.ncpu | awk '{print \$$2}'")
    @@ .github/macos-installer/Makefile (new)
     +
     +.SECONDARY:
     +
    -+$(DESTDIR)$(GIT_PREFIX)/VERSION-$(VERSION)-$(BUILD_CODE):
    ++$(DESTDIR)$(GIT_PREFIX)/VERSION-$(VERSION)-$(ARCH_UNIV):
     +	rm -f $(BUILD_DIR)/git-$(VERSION)/osx-installed*
     +	mkdir -p $(DESTDIR)$(GIT_PREFIX)
     +	touch $@
    @@ .github/macos-installer/Makefile (new)
     +	ruby ../scripts/symlink-git-hardlinks.rb $(ARTIFACTDIR)
     +	touch $@
     +
    -+$(BUILD_DIR)/git-$(VERSION)/osx-installed: $(DESTDIR)$(GIT_PREFIX)/VERSION-$(VERSION)-$(BUILD_CODE) $(BUILD_DIR)/git-$(VERSION)/osx-installed-man $(BUILD_DIR)/git-$(VERSION)/osx-installed-assets $(BUILD_DIR)/git-$(VERSION)/osx-installed-subtree
    ++$(BUILD_DIR)/git-$(VERSION)/osx-installed: $(DESTDIR)$(GIT_PREFIX)/VERSION-$(VERSION)-$(ARCH_UNIV) $(BUILD_DIR)/git-$(VERSION)/osx-installed-man $(BUILD_DIR)/git-$(VERSION)/osx-installed-assets $(BUILD_DIR)/git-$(VERSION)/osx-installed-subtree
     +	find $(DESTDIR)$(GIT_PREFIX) -type d -exec chmod ugo+rx {} \;
     +	find $(DESTDIR)$(GIT_PREFIX) -type f -exec chmod ugo+r {} \;
     +	touch $@
     +
    -+$(BUILD_DIR)/git-$(VERSION)/osx-built-assert-$(ARCH_CODE): $(BUILD_DIR)/git-$(VERSION)/osx-built
    -+ifeq ("$(ARCH_CODE)", "universal")
    ++$(BUILD_DIR)/git-$(VERSION)/osx-built-assert-$(ARCH_UNIV): $(BUILD_DIR)/git-$(VERSION)/osx-built
     +	File $(BUILD_DIR)/git-$(VERSION)/git
     +	File $(BUILD_DIR)/git-$(VERSION)/contrib/credential/osxkeychain/git-credential-osxkeychain
    -+else
    -+	[ "$$(File $(BUILD_DIR)/git-$(VERSION)/git | cut -f 5 -d' ')" == "$(ARCH_CODE)" ]
    -+	[ "$$(File $(BUILD_DIR)/git-$(VERSION)/contrib/credential/osxkeychain/git-credential-osxkeychain | cut -f 5 -d' ')" == "$(ARCH_CODE)" ]
    -+endif
     +	touch $@
     +
    -+disk-image/VERSION-$(VERSION)-$(ARCH_CODE):
    ++disk-image/VERSION-$(VERSION)-$(ARCH_UNIV):
     +	rm -f disk-image/*.pkg disk-image/VERSION-* disk-image/.DS_Store
     +	mkdir disk-image
     +	touch "$@"
    @@ .github/macos-installer/Makefile (new)
     +	pkg_cmd += --sign "$(APPLE_INSTALLER_IDENTITY)"
     +endif
     +
    -+pkg_cmd += disk-image/git-$(VERSION)-$(BUILD_CODE).pkg
    -+disk-image/git-$(VERSION)-$(BUILD_CODE).pkg: disk-image/VERSION-$(VERSION)-$(ARCH_CODE) symlinks
    ++pkg_cmd += disk-image/git-$(VERSION)-$(ARCH_UNIV).pkg
    ++disk-image/git-$(VERSION)-$(ARCH_UNIV).pkg: disk-image/VERSION-$(VERSION)-$(ARCH_UNIV) symlinks
     +	$(pkg_cmd)
     +
    -+git-%-$(BUILD_CODE).dmg:
    -+	hdiutil create git-$(VERSION)-$(BUILD_CODE).uncompressed.dmg -fs HFS+ -srcfolder disk-image -volname "Git $(VERSION) $(CPU_VENDOR) $(ARCH)" -ov
    -+	hdiutil convert -format UDZO -o $@ git-$(VERSION)-$(BUILD_CODE).uncompressed.dmg
    -+	rm -f git-$(VERSION)-$(BUILD_CODE).uncompressed.dmg
    ++git-%-$(ARCH_UNIV).dmg:
    ++	hdiutil create git-$(VERSION)-$(ARCH_UNIV).uncompressed.dmg -fs HFS+ -srcfolder disk-image -volname "Git $(VERSION) $(ARCH_UNIV)" -ov 2>&1 | tee err || { \
    ++		grep "Resource busy" err && \
    ++		sleep 5 && \
    ++		hdiutil create git-$(VERSION)-$(ARCH_UNIV).uncompressed.dmg -fs HFS+ -srcfolder disk-image -volname "Git $(VERSION) $(ARCH_UNIV)" -ov; }
    ++	hdiutil convert -format UDZO -o $@ git-$(VERSION)-$(ARCH_UNIV).uncompressed.dmg
    ++	rm -f git-$(VERSION)-$(ARCH_UNIV).uncompressed.dmg
     +
    -+payload: $(BUILD_DIR)/git-$(VERSION)/osx-installed $(BUILD_DIR)/git-$(VERSION)/osx-built-assert-$(ARCH_CODE)
    ++payload: $(BUILD_DIR)/git-$(VERSION)/osx-installed $(BUILD_DIR)/git-$(VERSION)/osx-built-assert-$(ARCH_UNIV)
     +
    -+pkg: disk-image/git-$(VERSION)-$(BUILD_CODE).pkg
    ++pkg: disk-image/git-$(VERSION)-$(ARCH_UNIV).pkg
     +
    -+image: git-$(VERSION)-$(BUILD_CODE).dmg
    ++image: git-$(VERSION)-$(ARCH_UNIV).dmg
     +
     +ifdef APPLE_APP_IDENTITY
     +codesign:
    @@ .github/macos-installer/Makefile (new)
     +ifdef APPLE_KEYCHAIN_PROFILE
     +notarize:
     +	@$(CURDIR)/../scripts/notarize.sh \
    -+		--package="disk-image/git-$(VERSION)-$(BUILD_CODE).pkg" \
    ++		--package="disk-image/git-$(VERSION)-$(ARCH_UNIV).pkg" \
     +		--keychain-profile="$(APPLE_KEYCHAIN_PROFILE)"
     +endif
     
    @@ .github/workflows/build-git-installers.yml: jobs:
     +    strategy:
     +      matrix:
     +        arch:
    -+          - name: x86_64
    -+            runner: macos-latest
     +          - name: arm64
     +            runner: macos-latest-xl-arm64
     +    runs-on: ${{ matrix.arch.runner }}
    @@ .github/workflows/build-git-installers.yml: jobs:
     +
     +      - name: Install Git dependencies
     +        run: |
    -+          set -x
    ++          set -ex
    ++
    ++          # Install x86_64 packages
    ++          arch -x86_64 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    ++          arch -x86_64 /usr/local/bin/brew install gettext curl
    ++
    ++          # Install arm64 packages
     +          brew install automake asciidoc xmlto docbook
     +          brew link --force gettext
     +
    ++          # Make universal gettext and curl library
    ++          lipo -create -output libintl.a /usr/local/opt/gettext/lib/libintl.a /opt/homebrew/opt/gettext/lib/libintl.a
    ++          lipo -create -output libcurl.dylib /opt/homebrew/opt/curl/lib/libcurl.4.dylib /usr/local/opt/curl/lib/libcurl.4.dylib
    ++
     +      - name: Set up signing/notarization infrastructure
     +        env:
     +          A1: ${{ secrets.APPLICATION_CERTIFICATE_BASE64 }}
    @@ .github/workflows/build-git-installers.yml: jobs:
     +            exit 1
     +          }
     +
    -+          # Configure the environment
    ++          # Trace execution, stop on error
     +          set -ex
    -+          PATH=/usr/local/bin:$PATH
    -+          export CURL_LDFLAGS=$(curl-config --libs)
     +
     +          # Write to "version" file to force match with trigger payload version
     +          echo "${{ needs.prereqs.outputs.tag_version }}" >>git/version
     +
    ++          # Configure universal build
    ++          cat >git/config.mak <<EOF
    ++          # Create universal binaries. HOST_CPU is a bit of a lie and only
    ++          # used in 'git version --build-options'.  We'll fix that in code.
    ++          HOST_CPU = universal
    ++          BASIC_CFLAGS += -arch arm64 -arch x86_64
    ++          EOF
    ++
     +          # Configure the Git build to pick up gettext
     +          homebrew_prefix="$(brew --prefix)"
    -+          cat >git/config.mak <<EOF
    -+          LDFLAGS = -L$homebrew_prefix/lib -L/usr/local/opt/gettext/lib
    ++          cat >>git/config.mak <<EOF
     +          CFLAGS = -I$homebrew_prefix/include -I/usr/local/opt/gettext/include
    ++          LDFLAGS = -L"$(pwd)"
    ++          EOF
    ++
    ++          # Configure the Git build to pick up the universal `libcurl.dylib`
    ++          cat >>git/config.mak <<EOF
    ++          CURL_LDFLAGS := -L"$(pwd)" -lcurl
    ++          CURL_CONFIG := /usr/bin/true
     +          EOF
     +
    -+          # On Apple Silicon, homebrew apparently does not install a `gcc` symlink
    -+          test x86_64 = '${{ matrix.arch.name }}' ||
    -+          echo 'CC = gcc-13' >>config.mak
    ++          # Avoid even building the dashed built-ins; Those should be hard-linked
    ++          # copies of the `git` executable but would end up as actual copies instead,
    ++          # bloating the size of the `.dmg` indecently.
    ++          echo 'SKIP_DASHED_BUILT_INS = YabbaDabbaDoo' >>git/config.mak
     +
     +          # To make use of the catalogs...
     +          export XML_CATALOG_FILES=$homebrew_prefix/etc/xml/catalog
    @@ .github/workflows/build-git-installers.yml: jobs:
     +          tar -xvf git/git-manpages-$VERSION.tar.gz -C manpages
     +
     +          # Lay out payload
    ++          cp git/config.mak payload/git-$VERSION/config.mak
     +          make -C git/.github/macos-installer V=1 payload
     +
     +          # Codesign payload
    -+          cp -R stage/git-${{ matrix.arch.name }}-$VERSION/ \
    ++          cp -R stage/git-universal-$VERSION/ \
     +            git/.github/macos-installer/build-artifacts
     +          make -C git/.github/macos-installer V=1 codesign \
     +            APPLE_APP_IDENTITY="$A3" || die "Creating signed payload failed"
  • 105: 0c8a060 = 147: a684691 release: build unsigned Ubuntu .deb package

  • 106: ff6a052 = 148: 7dc1afd release: add signing step for .deb package

  • 107: 7e07030 = 149: 15348c9 release: create draft GitHub release with packages & installers

  • 108: d4f6b5f = 150: 6c8b548 build-git-installers: publish gpg public key

  • 110: ca91fc0 = 151: 5a66880 release: continue pestering until user upgrades

  • 112: 8fadbda = 152: 20138a2 Makefile: allow specifying GIT_BUILT_FROM_COMMIT

  • 114: 8bcee12 = 153: ca8408e dist: archive HEAD instead of HEAD^{tree}

  • 116: 0633331 ! 154: 80668f1 release: include GIT_BUILT_FROM_COMMIT in MacOS build

    @@ Commit message
         Signed-off-by: Victoria Dye <vdye@github.com>
     
      ## .github/macos-installer/Makefile ##
    -@@ .github/macos-installer/Makefile: BUILD_CODE := $(ARCH_CODE)
    +@@ .github/macos-installer/Makefile: GIT_PREFIX := $(PREFIX)/git
      BUILD_DIR := $(GITHUB_WORKSPACE)/payload
    - DESTDIR := $(PWD)/stage/git-$(BUILD_CODE)-$(VERSION)
    + DESTDIR := $(PWD)/stage/git-$(ARCH_UNIV)-$(VERSION)
      ARTIFACTDIR := build-artifacts
     -SUBMAKE := $(MAKE) C_INCLUDE_PATH="$(C_INCLUDE_PATH)" CPLUS_INCLUDE_PATH="$(CPLUS_INCLUDE_PATH)" LD_LIBRARY_PATH="$(LD_LIBRARY_PATH)" TARGET_FLAGS="$(TARGET_FLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" NO_GETTEXT=1 NO_DARWIN_PORTS=1 prefix=$(GIT_PREFIX) DESTDIR=$(DESTDIR)
     +SUBMAKE := $(MAKE) C_INCLUDE_PATH="$(C_INCLUDE_PATH)" CPLUS_INCLUDE_PATH="$(CPLUS_INCLUDE_PATH)" LD_LIBRARY_PATH="$(LD_LIBRARY_PATH)" TARGET_FLAGS="$(TARGET_FLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" NO_GETTEXT=1 NO_DARWIN_PORTS=1 prefix=$(GIT_PREFIX) GIT_BUILT_FROM_COMMIT="$(GIT_BUILT_FROM_COMMIT)" DESTDIR=$(DESTDIR)
  • 118: da79fcd ! 155: e06acf4 release: add installer validation

    @@ .github/workflows/build-git-installers.yml: jobs:
     +          - os: macos-latest
     +            artifact: macos-artifacts
     +            command: git
    ++          - os: macos-latest-xl-arm64
    ++            artifact: macos-artifacts
    ++            command: git
     +          - os: windows-latest
     +            artifact: win-installer-x86_64
     +            command: $PROGRAMFILES\Git\cmd\git.exe
    @@ .github/workflows/build-git-installers.yml: jobs:
     +          test arm64 != "$arch" ||
     +          brew uninstall git
     +
    -+          pkgpath=$(find ./*$arch*.pkg)
    ++          pkgpath=$(find ./*universal*.pkg)
     +          sudo installer -pkg $pkgpath -target /
     +
     +      - name: Validate
    @@ .github/workflows/build-git-installers.yml: jobs:
     +          "${{ matrix.component.command }}" --version | sed 's/git version //' >actual
     +          echo ${{ needs.prereqs.outputs.tag_version }} >expect
     +          cmp expect actual || exit 1
    ++
    ++      - name: Validate universal binary CPU architecture
    ++        if: contains(matrix.component.os, 'macos')
    ++        shell: bash
    ++        run: |
    ++          set -ex
    ++          git version --build-options >actual
    ++          cat actual
    ++          grep "cpu: $(uname -m)" actual
     +  # End validate installers
     +
        create-github-release:
  • 155: ab34496 = 156: fd78e13 credential: add new interactive config option

  • 156: cdf3ce6 = 157: b916be6 maintenance: add custom config to background jobs

  • 157: c0a3cb5 = 158: ff56043 scalar: configure maintenance during 'reconfigure'

  • 158: 36ac15c = 159: de0d745 t5300: confirm failure of git index-pack when non-idx suffix requested

  • 159: c001575 = 160: b9e9d3a index-pack: disable rev-index if index file has non .idx suffix

  • 160: 5a3760f = 161: 8bae765 sparse-index.c: fix use of index hashes in expand_index

  • 161: 7c24d14 = 162: 878ae8e t1092: add test for untracked files and directories

  • 162: c15ee9f < -: ----------- fixup! gvfs: add global command pre and post hook procs

  • 163: 5215f8f < -: ----------- fixup! release: add Mac OSX installer build

  • 165: f1b13a8 < -: ----------- fixup! release: add Mac OSX installer build

  • 166: f76eb04 < -: ----------- fixup! release: add Mac OSX installer build

  • 167: ac09407 < -: ----------- fixup! release: add Mac OSX installer build

  • 168: 8b09616 < -: ----------- fixup! release: add installer validation

  • 169: 58e14eb < -: ----------- fixup! release: add installer validation

  • 170: d9cb26d = 163: 681e8c1 trace2: redact passwords from https:// URLs by default

  • 171: 6a7e6c7 = 164: d6e0f81 t0211: test URL redacting in PERF format

  • 172: 49d97ff = 165: d02cd56 trace2: fix signature of trace2_def_param() macro

  • 173: 23987cf = 166: 6fc9578 t0212: test URL redacting in EVENT format

  • 174: 6b5acc8 = 167: a00d9ce t0210,t0211: unset SANITIZE_LEAK

  • 175: 3f0dcb0 < -: ----------- fixup! release: create initial Windows installer build workflow

Summary: lotsa fixup!s squashed...

@dscho
Copy link
Member Author

dscho commented Nov 14, 2023

Range-diff relative to -rc1
  • 1: cff1a2f = 1: dce5fbd reset --stdin: trim carriage return from the paths

  • 2: dd7c9a7 ! 2: d620aed gvfs: start by adding the -gvfs suffix to the version

    @@ GIT-VERSION-GEN
      #!/bin/sh
      
      GVF=GIT-VERSION-FILE
    --DEF_VER=v2.43.0-rc1
    +-DEF_VER=v2.43.0-rc2
     +DEF_VER=v2.43.0.vfs.0.0
      
      LF='
  • 3: 7152f38 = 3: 1c911be gvfs: ensure that the version is based on a GVFS tag

  • 4: 5263392 = 4: 21f7594 gvfs: add a GVFS-specific header file

  • 5: e970eae = 5: 67a0669 gvfs: add the core.gvfs config setting

  • 6: 896df21 = 6: 56a63b3 gvfs: add the feature to skip writing the index' SHA-1

  • 7: 7e89833 = 7: c36355c gvfs: add the feature that blobs may be missing

  • 8: 6729f38 = 8: 5516f22 gvfs: prevent files to be deleted outside the sparse checkout

  • 9: f47f108 = 9: b011c1a gvfs: optionally skip reachability checks/upload pack during fetch

  • 10: 966d252 = 10: 5935aee gvfs: ensure all filters and EOL conversions are blocked

  • 11: 65b7099 = 11: 7d6b998 gvfs: allow "virtualizing" objects

  • 12: 6e0235f = 12: 815c5d0 Hydrate missing loose objects in check_and_freshen()

  • 13: 6aa2175 = 13: 8991d86 sha1_file: when writing objects, skip the read_object_hook

  • 14: f003fd9 = 14: cf8b83a gvfs: add global command pre and post hook procs

  • 15: 632bb5e = 15: cad2a90 t0400: verify that the hook is called correctly from a subdirectory

  • 16: fb4cf4c = 16: e60bc76 Pass PID of git process to hooks.

  • 17: 0cd6337 = 17: 6066ada pre-command: always respect core.hooksPath

  • 18: 545142e = 18: 686c254 sparse-checkout: update files with a modify/delete conflict

  • 19: c23bd3b = 19: 219878e sparse-checkout: avoid writing entries with the skip-worktree bit

  • 20: 01ecce5 = 20: f5360ab Do not remove files outside the sparse-checkout

  • 21: 64b1b4b = 21: 2e29735 send-pack: do not check for sha1 file when GVFS_MISSING_OK set

  • 22: a381847 = 22: b09771c cache-tree: remove use of strbuf_addf in update_one

  • 23: d6bf4ae = 23: c244d93 gvfs: block unsupported commands when running in a GVFS repo

  • 24: bedcaeb = 24: 740c8c8 worktree: allow in Scalar repositories

  • 25: 60fe349 = 25: 71210fd gvfs: allow overriding core.gvfs

  • 26: 3255d6b = 26: d273e8c BRANCHES.md: Add explanation of branches and using forks

  • 27: 4e0a577 = 27: 4638a8d Add virtual file system settings and hook proc

  • 28: 5e4e7c4 = 28: 7e1c812 virtualfilesystem: don't run the virtual file system hook if the index has been redirected

  • 29: eee1c35 = 29: 4a5d54d virtualfilesystem: check if directory is included

  • 30: f61260e = 30: 46b747d backwards-compatibility: support the post-indexchanged hook

  • 31: 0671037 = 31: ad8a265 gvfs: verify that the built-in FSMonitor is disabled

  • 32: 495f3c9 = 32: cb8caf4 status: add status serialization mechanism

  • 33: 41573c4 = 33: cdc779d Teach ahead-behind and serialized status to play nicely together

  • 34: 2e4c8a3 = 34: accb31a status: serialize to path

  • 35: e66730f = 35: 983cea3 status: reject deserialize in V2 and conflicts

  • 36: d053cd0 = 36: 433029e serialize-status: serialize global and repo-local exclude file metadata

  • 37: da09693 = 37: 375d992 status: deserialization wait

  • 38: 18aa23a = 38: 688d73e merge-recursive: avoid confusing logic in was_dirty()

  • 39: 813a9ca = 39: c9191f4 merge-recursive: add some defensive coding to was_dirty()

  • 40: 4c52e6c = 40: 43d3605 merge-recursive: teach was_dirty() about the virtualfilesystem

  • 41: 923843c = 41: 5c8ef95 status: deserialize with -uno does not print correct hint

  • 42: b0609a2 = 42: 7a3b238 fsmonitor: check CE_FSMONITOR_VALID in ce_uptodate

  • 43: 47ef114 = 43: 59a8f00 fsmonitor: add script for debugging and update script for tests

  • 44: a7de873 = 44: 7ee1e17 status: disable deserialize when verbose output requested.

  • 45: 1cdbeea = 45: 6d03677 t7524: add test for verbose status deserialzation

  • 46: 5d6f1ab = 46: 0d2e655 deserialize-status: silently fallback if we cannot read cache file

  • 47: 42b56d7 = 47: 7a5fe23 gvfs:trace2:data: add trace2 tracing around read_object_process

  • 48: 4823db2 = 48: 425cba7 gvfs:trace2:data: status deserialization information

  • 49: a1b99bf = 49: 0564984 gvfs:trace2:data: status serialization

  • 50: f2959de = 50: e3d59be gvfs:trace2:data: add vfs stats

  • 51: 4da1037 = 51: 1889f2c trace2: refactor setting process starting time

  • 52: bff9656 = 52: c7d3452 trace2:gvfs:experiment: clear_ce_flags_1

  • 53: 614a2e0 = 53: ab30ba2 trace2:gvfs:experiment: report_tracking

  • 54: dca92bb = 54: 86872e3 trace2:gvfs:experiment: read_cache: annotate thread usage in read-cache

  • 55: c67bb66 = 55: 8880792 trace2:gvfs:experiment: read-cache: time read/write of cache-tree extension

  • 56: 6195596 = 56: b802d6c trace2:gvfs:experiment: add region to apply_virtualfilesystem()

  • 57: 96143d3 = 57: 89b1710 trace2:gvfs:experiment: add region around unpack_trees()

  • 58: af066f3 = 58: d001954 trace2:gvfs:experiment: add region to cache_tree_fully_valid()

  • 59: af2bafa = 59: 229c0cb trace2:gvfs:experiment: add unpack_entry() counter to unpack_trees() and report_tracking()

  • 60: 6d1d547 = 60: 70d68be trace2:gvfs:experiment: increase default event depth for unpack-tree data

  • 61: 000e50a = 61: bcf7fbb trace2:gvfs:experiment: add data for check_updates() in unpack_trees()

  • 62: 005c0fb = 62: e76b921 Trace2:gvfs:experiment: capture more 'tracking' details

  • 63: d5a0c7c = 63: 275d717 credential: set trace2_child_class for credential manager children

  • 64: c3851b4 = 64: 036d8d8 sub-process: do not borrow cmd pointer from caller

  • 65: ab1bc96 = 65: 7453c83 sub-process: add subprocess_start_argv()

  • 66: 28b9b1b = 66: 03a7dcc sha1-file: add function to update existing loose object cache

  • 67: a5b1bb7 = 67: f841568 packfile: add install_packed_git_and_mru()

  • 68: 9fd2a2f = 68: 51ae2df index-pack: avoid immediate object fetch while parsing packfile

  • 69: cf06ef2 = 69: eadb745 gvfs-helper: create tool to fetch objects using the GVFS Protocol

  • 70: 12fd0d9 = 70: d6b5a93 sha1-file: create shared-cache directory if it doesn't exist

  • 71: 091fb67 = 71: 513c4e7 gvfs-helper: better handling of network errors

  • 72: d5068eb = 72: 1dcf2db gvfs-helper-client: properly update loose cache with fetched OID

  • 73: 89bf1f5 = 73: 2ac3d58 gvfs-helper: V2 robust retry and throttling

  • 74: 8308224 = 74: 20f0fa7 gvfs-helper: expose gvfs/objects GET and POST semantics

  • 75: 262ea7e = 75: 8d0687a gvfs-helper: dramatically reduce progress noise

  • 76: b5f86d2 = 76: 95ae75d gvfs-helper-client.h: define struct object_id

  • 77: 8a94a5e = 77: 917a16f gvfs-helper: handle pack-file after single POST request

  • 78: f134972 = 78: 3c352ac test-gvfs-prococol, t5799: tests for gvfs-helper

  • 79: 88d3b3a = 79: 80c6a14 gvfs-helper: move result-list construction into install functions

  • 80: 72ea08a = 80: 189a5c4 t5799: add support for POST to return either a loose object or packfile

  • 81: 43eaed7 = 81: 1db7f00 t5799: cleanup wc-l and grep-c lines

  • 82: 6f0a108 = 82: 06e7d21 gvfs-helper: verify loose objects after write

  • 83: 8e936ae = 83: dc3c681 t7599: create corrupt blob test

  • 84: c761943 = 84: 71d0280 gvfs-helper: add prefetch support

  • 85: baef9f8 = 85: 46e287a gvfs-helper: add prefetch .keep file for last packfile

  • 86: 59f2fbe = 86: b84bb60 gvfs-helper: do one read in my_copy_fd_len_tail()

  • 87: 539f653 = 87: df67914 gvfs-helper: move content-type warning for prefetch packs

  • 88: 4543d99 = 88: 6c80284 fetch: use gvfs-helper prefetch under config

  • 89: 8d9888b = 89: 1e25aad gvfs-helper: better support for concurrent packfile fetches

  • 90: e36380c = 90: 0e4c5a6 remote-curl: do not call fetch-pack when using gvfs-helper

  • 91: 31c5db7 = 91: d164471 fetch: reprepare packs before checking connectivity

  • 92: 337452a = 92: aecfecd gvfs-helper: retry when creating temp files

  • 93: 1405d91 = 93: f3d9a34 sparse: avoid warnings about known cURL issues in gvfs-helper.c

  • 97: 993b304 = 94: 44424f6 gvfs-helper: add --max-retries to prefetch verb

  • 99: 7cc33f0 = 95: ead934f t5799: add tests to detect corrupt pack/idx files in prefetch

  • 101: a42447f = 96: 105e6bb gvfs-helper: ignore .idx files in prefetch multi-part responses

  • 94: d1b797c = 97: 99ed03b maintenance: care about gvfs.sharedCache config

  • 95: 27312fb = 98: 1f6d4e3 unpack-trees:virtualfilesystem: Improve efficiency of clear_ce_flags

  • 96: 82b1b1c = 99: aafdd4a homebrew: add GitHub workflow to release Cask

  • 98: 973b7b6 = 100: 9e5ac00 Adding winget workflows

  • 100: 832ddef = 101: f3b2015 Disable the monitor-components workflow in msft-git

  • 102: 9e48105 = 102: c97816e .github: enable windows builds on microsoft fork

  • 144: 54d0545 = 103: 9b8fa64 release: create initial Windows installer build workflow

  • 145: 44e7ff0 = 104: 0adaccc help: special-case HOST_CPU universal

  • 146: 92227c7 = 105: 57c6db5 release: add Mac OSX installer build

  • 147: a684691 = 106: de2893c release: build unsigned Ubuntu .deb package

  • 148: 7dc1afd = 107: 900791f release: add signing step for .deb package

  • 149: 15348c9 = 108: e1002c3 release: create draft GitHub release with packages & installers

  • 150: 6c8b548 = 109: 04e8f54 build-git-installers: publish gpg public key

  • 151: 5a66880 = 110: 442074d release: continue pestering until user upgrades

  • 103: 1f11504 = 111: 473ecea update-microsoft-git: create barebones builtin

  • 104: 0a2aad6 = 112: 691cd3a update-microsoft-git: Windows implementation

  • 106: 640ec7b = 113: f47e636 update-microsoft-git: use brew on macOS

  • 152: 20138a2 = 114: 5b878c8 Makefile: allow specifying GIT_BUILT_FROM_COMMIT

  • 108: 9246058 = 115: 29ca19b .github: update ISSUE_TEMPLATE.md for microsoft/git

  • 153: ca8408e = 116: e7aeceb dist: archive HEAD instead of HEAD^{tree}

  • 105: 9d9cfe1 = 117: 0eb3419 git_config_set_multivar_in_file_gently(): add a lock timeout

  • 110: b66b7c2 = 118: 13cc3fa .github: update PULL_REQUEST_TEMPLATE.md

  • 154: 80668f1 = 119: a77863e release: include GIT_BUILT_FROM_COMMIT in MacOS build

  • 107: d26352a = 120: f2e8d95 scalar: set the config write-lock timeout to 150ms

  • 111: d3fe9a5 = 121: 8fad968 Adjust README.md for microsoft/git

  • 155: e06acf4 = 122: e3ea888 release: add installer validation

  • 109: c701a70 = 123: 2943681 scalar: add docs from microsoft/scalar

  • 112: abf7bff = 124: ef80ab6 scalar (Windows): use forward slashes as directory separators

  • 113: 1a3377d = 125: df83ee4 scalar: add retry logic to run_git()

  • 114: 6f73e54 = 126: 6e1df02 scalar: support the config command for backwards compatibility

  • 115: 49a73fb = 127: 50a113a scalar: implement a minimal JSON parser

  • 116: d5a5caa = 128: 6e05633 scalar clone: support GVFS-enabled remote repositories

  • 117: 18b1009 = 129: 9024fd0 test-gvfs-protocol: also serve smart protocol

  • 118: 98583c8 = 130: e25a08d gvfs-helper: add the endpoint command

  • 119: 38779fa = 131: fdac9bb dir_inside_of(): handle directory separators correctly

  • 120: edc0735 = 132: cb3b207 scalar: disable authentication in unattended mode

  • 121: 541c0c1 = 133: 5c3c1e7 scalar: do initialize gvfs.sharedCache

  • 122: 900a3a4 = 134: 6d45ca8 scalar diagnose: include shared cache info

  • 123: 05931bd = 135: 1e598df scalar: only try GVFS protocol on https:// URLs

  • 124: b501f16 = 136: 1dbeb0e scalar: verify that we can use a GVFS-enabled repository

  • 125: 7f91793 = 137: d0fb1f6 scalar: add the cache-server command

  • 126: 80032cd = 138: e651f1c scalar: add a test toggle to skip accessing the vsts/info endpoint

  • 127: 229b544 = 139: 405f066 scalar: adjust documentation to the microsoft/git fork

  • 128: 685c004 = 140: 8763c3f scalar: enable untracked cache unconditionally

  • 129: 873ce53 = 141: b23fa52 scalar: parse clone --no-fetch-commits-and-trees for backwards compatibility

  • 130: 2d97972 = 142: eca1f10 scalar diagnose: accommodate Scalar's Functional Tests

  • 131: b490af4 = 143: ea2990d ci: run Scalar's Functional Tests

  • 132: f8ba50d = 144: c15e4e4 scalar: upgrade to newest FSMonitor config setting

  • 133: 9563619 = 145: 933fd7a abspath: make strip_last_path_component() global

  • 134: 4995774 = 146: ef9bb85 scalar: .scalarCache should live above enlistment

  • 135: 7b4d0a1 = 147: 9b1ce67 add/rm: allow adding sparse entries when virtual

  • 136: 20d2642 = 148: 267b9b9 sparse-checkout: add config to disable deleting dirs

  • 137: 68b1d42 = 149: be52dfa diff: ignore sparse paths in diffstat

  • 138: d3cfb63 = 150: 017fb9c repo-settings: enable sparse index by default

  • 139: bc7fbc7 = 151: 87c30c8 diff(sparse-index): verify with partially-sparse

  • 140: 75ab427 = 152: 164a2cf stash: expand testing for git stash -u

  • 141: 4dc56f5 = 153: 9c7859b sequencer: avoid progress when stderr is redirected

  • 142: a49f5f2 = 154: cb4746d sparse: add vfs-specific precautions

  • 143: 82fbe54 = 155: ee91929 reset: fix mixed reset when using virtual filesystem

  • 156: fd78e13 = 156: e30a55e credential: add new interactive config option

  • 157: b916be6 = 157: c5fe1b4 maintenance: add custom config to background jobs

  • 158: ff56043 = 158: 005db91 scalar: configure maintenance during 'reconfigure'

  • 159: de0d745 = 159: 2c211cd t5300: confirm failure of git index-pack when non-idx suffix requested

  • 160: b9e9d3a = 160: 1355c4d index-pack: disable rev-index if index file has non .idx suffix

  • 161: 8bae765 = 161: 1f88a2c sparse-index.c: fix use of index hashes in expand_index

  • 162: 878ae8e = 162: 241d9f7 t1092: add test for untracked files and directories

  • 163: 681e8c1 = 163: 510418c trace2: redact passwords from https:// URLs by default

  • 164: d6e0f81 = 164: 21b2850 t0211: test URL redacting in PERF format

  • 165: d02cd56 = 165: a9f8c88 trace2: fix signature of trace2_def_param() macro

  • 166: 6fc9578 = 166: 40dbb6e t0212: test URL redacting in EVENT format

  • 167: a00d9ce = 167: f85d023 t0210,t0211: unset SANITIZE_LEAK

tl;dr uneventful!

Kevin Willford and others added 12 commits November 20, 2023 19:33
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 <kewillf@microsoft.com>
Signed-off-by: Saeed Noursalehi <sanoursa@microsoft.com>
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 <johasc@microsoft.com>
This header file will accumulate GVFS-specific definitions.

Signed-off-by: Kevin Willford <kewillf@microsoft.com>
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 <kewillf@microsoft.com>

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 <kewillf@microsoft.com>
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 <kewillf@microsoft.com>

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 <derrickstolee@github.com>
Signed-off-by: Kevin Willford <kewillf@microsoft.com>
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 <kewillf@microsoft.com>
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 <kewillf@microsoft.com>
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 <Ben.Peart@microsoft.com>
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 <Ben.Peart@microsoft.com>
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 <kewillf@microsoft.com>
Signed-off-by: Ben Peart <Ben.Peart@microsoft.com>
dscho and others added 16 commits November 20, 2023 19:35
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 <derrickstolee@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>
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 <derrickstolee@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>
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 <derrickstolee@github.com>
It is an unsafe practice to call something like

	git clone https://user:password@example.com/

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 <johannes.schindelin@gmx.de>
Signed-off-by: Jeff Hostetler <jeffhostetler@github.com>
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 <jeffhostetler@github.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>
Signed-off-by: Jeff Hostetler <jeffhostetler@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>
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 <jeffhostetler@github.com>
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
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:password@host.com/`.

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.
@dscho
Copy link
Member Author

dscho commented Nov 20, 2023

Range-diff relative to -rc2
  • 1: dce5fbd = 1: a974b14 reset --stdin: trim carriage return from the paths

  • 2: d620aed ! 2: ad8d0b9 gvfs: start by adding the -gvfs suffix to the version

    @@ GIT-VERSION-GEN
      #!/bin/sh
      
      GVF=GIT-VERSION-FILE
    --DEF_VER=v2.43.0-rc2
    +-DEF_VER=v2.43.0
     +DEF_VER=v2.43.0.vfs.0.0
      
      LF='
  • 3: 1c911be = 3: fca083a gvfs: ensure that the version is based on a GVFS tag

  • 4: 21f7594 = 4: d78de08 gvfs: add a GVFS-specific header file

  • 5: 67a0669 = 5: 3556ea0 gvfs: add the core.gvfs config setting

  • 6: 56a63b3 = 6: ccf7f70 gvfs: add the feature to skip writing the index' SHA-1

  • 7: c36355c = 7: 1aa1248 gvfs: add the feature that blobs may be missing

  • 8: 5516f22 = 8: e44e823 gvfs: prevent files to be deleted outside the sparse checkout

  • 9: b011c1a = 9: f4de9c9 gvfs: optionally skip reachability checks/upload pack during fetch

  • 10: 5935aee = 10: 4728ebc gvfs: ensure all filters and EOL conversions are blocked

  • 11: 7d6b998 = 11: 9c2a07a gvfs: allow "virtualizing" objects

  • 12: 815c5d0 = 12: 2206633 Hydrate missing loose objects in check_and_freshen()

  • 13: 8991d86 = 13: b7c8f6e sha1_file: when writing objects, skip the read_object_hook

  • 14: cf8b83a = 14: 841fbcf gvfs: add global command pre and post hook procs

  • 15: cad2a90 = 15: 7d495f8 t0400: verify that the hook is called correctly from a subdirectory

  • 16: e60bc76 = 16: d589761 Pass PID of git process to hooks.

  • 17: 6066ada = 17: 82294a9 pre-command: always respect core.hooksPath

  • 18: 686c254 = 18: e53d8d9 sparse-checkout: update files with a modify/delete conflict

  • 19: 219878e = 19: a3c5312 sparse-checkout: avoid writing entries with the skip-worktree bit

  • 20: f5360ab = 20: 31ec876 Do not remove files outside the sparse-checkout

  • 21: 2e29735 = 21: a147bf0 send-pack: do not check for sha1 file when GVFS_MISSING_OK set

  • 22: b09771c = 22: a25fe51 cache-tree: remove use of strbuf_addf in update_one

  • 23: c244d93 = 23: 30a0f59 gvfs: block unsupported commands when running in a GVFS repo

  • 24: 740c8c8 = 24: 094e64e worktree: allow in Scalar repositories

  • 25: 71210fd = 25: a7dea34 gvfs: allow overriding core.gvfs

  • 26: d273e8c = 26: 543775e BRANCHES.md: Add explanation of branches and using forks

  • 27: 4638a8d = 27: ff2514c Add virtual file system settings and hook proc

  • 28: 7e1c812 = 28: 23e0749 virtualfilesystem: don't run the virtual file system hook if the index has been redirected

  • 29: 4a5d54d = 29: 4a58f5a virtualfilesystem: check if directory is included

  • 30: 46b747d = 30: 9fda9ad backwards-compatibility: support the post-indexchanged hook

  • 31: ad8a265 = 31: 457e6a4 gvfs: verify that the built-in FSMonitor is disabled

  • 32: cb8caf4 = 32: 112fa44 status: add status serialization mechanism

  • 33: cdc779d = 33: e8e29af Teach ahead-behind and serialized status to play nicely together

  • 34: accb31a = 34: 5779892 status: serialize to path

  • 35: 983cea3 = 35: 631b365 status: reject deserialize in V2 and conflicts

  • 36: 433029e = 36: 69f2880 serialize-status: serialize global and repo-local exclude file metadata

  • 37: 375d992 = 37: 46da1e9 status: deserialization wait

  • 38: 688d73e = 38: dc54eb4 merge-recursive: avoid confusing logic in was_dirty()

  • 39: c9191f4 = 39: 8e00850 merge-recursive: add some defensive coding to was_dirty()

  • 40: 43d3605 = 40: a31e2c5 merge-recursive: teach was_dirty() about the virtualfilesystem

  • 41: 5c8ef95 = 41: daa14a8 status: deserialize with -uno does not print correct hint

  • 42: 7a3b238 = 42: a6bf6f1 fsmonitor: check CE_FSMONITOR_VALID in ce_uptodate

  • 43: 59a8f00 = 43: e8099de fsmonitor: add script for debugging and update script for tests

  • 44: 7ee1e17 = 44: 10bf9c1 status: disable deserialize when verbose output requested.

  • 45: 6d03677 = 45: c48f9a9 t7524: add test for verbose status deserialzation

  • 46: 0d2e655 = 46: ca53dad deserialize-status: silently fallback if we cannot read cache file

  • 47: 7a5fe23 = 47: 56c9f6e gvfs:trace2:data: add trace2 tracing around read_object_process

  • 48: 425cba7 = 48: c400ad0 gvfs:trace2:data: status deserialization information

  • 49: 0564984 = 49: 2bd8a8b gvfs:trace2:data: status serialization

  • 50: e3d59be = 50: 5f31f1b gvfs:trace2:data: add vfs stats

  • 51: 1889f2c = 51: 2bd6834 trace2: refactor setting process starting time

  • 52: c7d3452 = 52: d51366d trace2:gvfs:experiment: clear_ce_flags_1

  • 53: ab30ba2 = 53: a1f300e trace2:gvfs:experiment: report_tracking

  • 54: 86872e3 = 54: 33229f6 trace2:gvfs:experiment: read_cache: annotate thread usage in read-cache

  • 55: 8880792 = 55: ed99b1b trace2:gvfs:experiment: read-cache: time read/write of cache-tree extension

  • 56: b802d6c = 56: d68452c trace2:gvfs:experiment: add region to apply_virtualfilesystem()

  • 57: 89b1710 = 57: 025fd6a trace2:gvfs:experiment: add region around unpack_trees()

  • 58: d001954 = 58: a90ad70 trace2:gvfs:experiment: add region to cache_tree_fully_valid()

  • 59: 229c0cb = 59: a768214 trace2:gvfs:experiment: add unpack_entry() counter to unpack_trees() and report_tracking()

  • 60: 70d68be = 60: 9f23c0f trace2:gvfs:experiment: increase default event depth for unpack-tree data

  • 61: bcf7fbb = 61: af18d6b trace2:gvfs:experiment: add data for check_updates() in unpack_trees()

  • 62: e76b921 = 62: c9403b8 Trace2:gvfs:experiment: capture more 'tracking' details

  • 63: 275d717 = 63: 93ed390 credential: set trace2_child_class for credential manager children

  • 64: 036d8d8 = 64: f9ff180 sub-process: do not borrow cmd pointer from caller

  • 65: 7453c83 = 65: 2224c09 sub-process: add subprocess_start_argv()

  • 66: 03a7dcc = 66: b621659 sha1-file: add function to update existing loose object cache

  • 67: f841568 = 67: c9a3d28 packfile: add install_packed_git_and_mru()

  • 68: 51ae2df = 68: 4fb7e70 index-pack: avoid immediate object fetch while parsing packfile

  • 69: eadb745 = 69: ac8e9f9 gvfs-helper: create tool to fetch objects using the GVFS Protocol

  • 70: d6b5a93 = 70: 0d67b3b sha1-file: create shared-cache directory if it doesn't exist

  • 71: 513c4e7 = 71: 412fe9c gvfs-helper: better handling of network errors

  • 72: 1dcf2db = 72: 4512d14 gvfs-helper-client: properly update loose cache with fetched OID

  • 73: 2ac3d58 = 73: 2f700e6 gvfs-helper: V2 robust retry and throttling

  • 74: 20f0fa7 = 74: a6e9d9e gvfs-helper: expose gvfs/objects GET and POST semantics

  • 75: 8d0687a = 75: 5d60e52 gvfs-helper: dramatically reduce progress noise

  • 76: 95ae75d = 76: 49dce2c gvfs-helper-client.h: define struct object_id

  • 77: 917a16f = 77: 4a8e740 gvfs-helper: handle pack-file after single POST request

  • 78: 3c352ac = 78: a037644 test-gvfs-prococol, t5799: tests for gvfs-helper

  • 79: 80c6a14 = 79: cb005db gvfs-helper: move result-list construction into install functions

  • 80: 189a5c4 = 80: 34c9ff0 t5799: add support for POST to return either a loose object or packfile

  • 81: 1db7f00 = 81: b83f2f2 t5799: cleanup wc-l and grep-c lines

  • 82: 06e7d21 = 82: a2ffa64 gvfs-helper: verify loose objects after write

  • 83: dc3c681 = 83: 9e32438 t7599: create corrupt blob test

  • 84: 71d0280 = 84: 69a82ce gvfs-helper: add prefetch support

  • 85: 46e287a = 85: 303a008 gvfs-helper: add prefetch .keep file for last packfile

  • 86: b84bb60 = 86: 8168ff2 gvfs-helper: do one read in my_copy_fd_len_tail()

  • 87: df67914 = 87: c03629f gvfs-helper: move content-type warning for prefetch packs

  • 88: 6c80284 = 88: 1538ce2 fetch: use gvfs-helper prefetch under config

  • 89: 1e25aad = 89: ccb306f gvfs-helper: better support for concurrent packfile fetches

  • 90: 0e4c5a6 = 90: a2156c9 remote-curl: do not call fetch-pack when using gvfs-helper

  • 91: d164471 = 91: dfb5b01 fetch: reprepare packs before checking connectivity

  • 92: aecfecd = 92: b4526b7 gvfs-helper: retry when creating temp files

  • 93: f3d9a34 = 93: 91cdad9 sparse: avoid warnings about known cURL issues in gvfs-helper.c

  • 94: 44424f6 = 94: ff3e440 gvfs-helper: add --max-retries to prefetch verb

  • 95: ead934f = 95: 99bd372 t5799: add tests to detect corrupt pack/idx files in prefetch

  • 96: 105e6bb = 96: a107698 gvfs-helper: ignore .idx files in prefetch multi-part responses

  • 97: 99ed03b = 97: 3347e58 maintenance: care about gvfs.sharedCache config

  • 98: 1f6d4e3 = 98: a6b2e7d unpack-trees:virtualfilesystem: Improve efficiency of clear_ce_flags

  • 99: aafdd4a = 99: 29ffc42 homebrew: add GitHub workflow to release Cask

  • 100: 9e5ac00 = 100: fa5fa71 Adding winget workflows

  • 101: f3b2015 = 101: f627d1c Disable the monitor-components workflow in msft-git

  • 102: c97816e = 102: e4fb0a6 .github: enable windows builds on microsoft fork

  • 103: 9b8fa64 = 103: 2dc2755 release: create initial Windows installer build workflow

  • 104: 0adaccc = 104: c68b447 help: special-case HOST_CPU universal

  • 105: 57c6db5 = 105: dbbb38b release: add Mac OSX installer build

  • 106: de2893c = 106: 7fa18cd release: build unsigned Ubuntu .deb package

  • 107: 900791f = 107: 9fa8d8e release: add signing step for .deb package

  • 108: e1002c3 = 108: 7563d72 release: create draft GitHub release with packages & installers

  • 109: 04e8f54 = 109: 6872758 build-git-installers: publish gpg public key

  • 110: 442074d = 110: d6e810c release: continue pestering until user upgrades

  • 114: 5b878c8 = 111: 7046a8e Makefile: allow specifying GIT_BUILT_FROM_COMMIT

  • 116: e7aeceb = 112: aff19d5 dist: archive HEAD instead of HEAD^{tree}

  • 111: 473ecea = 113: a12eb00 update-microsoft-git: create barebones builtin

  • 119: a77863e = 114: 03c9452 release: include GIT_BUILT_FROM_COMMIT in MacOS build

  • 112: 691cd3a = 115: 476e968 update-microsoft-git: Windows implementation

  • 122: e3ea888 = 116: ab2a0e5 release: add installer validation

  • 117: 0eb3419 = 117: 38fb624 git_config_set_multivar_in_file_gently(): add a lock timeout

  • 120: f2e8d95 = 118: 200a0e0 scalar: set the config write-lock timeout to 150ms

  • 113: f47e636 = 119: 56ca1c2 update-microsoft-git: use brew on macOS

  • 123: 2943681 = 120: ed3b89a scalar: add docs from microsoft/scalar

  • 115: 29ca19b = 121: c812236 .github: update ISSUE_TEMPLATE.md for microsoft/git

  • 118: 13cc3fa = 122: f3f3e30 .github: update PULL_REQUEST_TEMPLATE.md

  • 124: ef80ab6 = 123: fd18ac9 scalar (Windows): use forward slashes as directory separators

  • 121: 8fad968 = 124: 8ee8ea0 Adjust README.md for microsoft/git

  • 125: df83ee4 = 125: 037027e scalar: add retry logic to run_git()

  • 126: 6e1df02 = 126: 392824f scalar: support the config command for backwards compatibility

  • 127: 50a113a = 127: aa6747a scalar: implement a minimal JSON parser

  • 128: 6e05633 = 128: 7d6c79d scalar clone: support GVFS-enabled remote repositories

  • 129: 9024fd0 = 129: 836ea67 test-gvfs-protocol: also serve smart protocol

  • 130: e25a08d = 130: 7ab1b72 gvfs-helper: add the endpoint command

  • 131: fdac9bb = 131: 2355926 dir_inside_of(): handle directory separators correctly

  • 132: cb3b207 = 132: 8724aa9 scalar: disable authentication in unattended mode

  • 133: 5c3c1e7 = 133: 501d792 scalar: do initialize gvfs.sharedCache

  • 134: 6d45ca8 = 134: f70311e scalar diagnose: include shared cache info

  • 135: 1e598df = 135: 4e91983 scalar: only try GVFS protocol on https:// URLs

  • 136: 1dbeb0e = 136: 68220bc scalar: verify that we can use a GVFS-enabled repository

  • 137: d0fb1f6 = 137: aec7f5e scalar: add the cache-server command

  • 138: e651f1c = 138: e7f533d scalar: add a test toggle to skip accessing the vsts/info endpoint

  • 139: 405f066 = 139: 4f9b060 scalar: adjust documentation to the microsoft/git fork

  • 140: 8763c3f = 140: fd68d27 scalar: enable untracked cache unconditionally

  • 141: b23fa52 = 141: ab3184f scalar: parse clone --no-fetch-commits-and-trees for backwards compatibility

  • 142: eca1f10 = 142: 1339fd6 scalar diagnose: accommodate Scalar's Functional Tests

  • 143: ea2990d = 143: ee54857 ci: run Scalar's Functional Tests

  • 144: c15e4e4 = 144: 34c210a scalar: upgrade to newest FSMonitor config setting

  • 145: 933fd7a = 145: 92c86aa abspath: make strip_last_path_component() global

  • 146: ef9bb85 = 146: 8cc95bc scalar: .scalarCache should live above enlistment

  • 147: 9b1ce67 = 147: 146c851 add/rm: allow adding sparse entries when virtual

  • 148: 267b9b9 = 148: c147171 sparse-checkout: add config to disable deleting dirs

  • 149: be52dfa = 149: 4832a77 diff: ignore sparse paths in diffstat

  • 150: 017fb9c = 150: 7d11caf repo-settings: enable sparse index by default

  • 151: 87c30c8 = 151: 7ee263f diff(sparse-index): verify with partially-sparse

  • 152: 164a2cf = 152: b5689de stash: expand testing for git stash -u

  • 153: 9c7859b = 153: b2b0d53 sequencer: avoid progress when stderr is redirected

  • 154: cb4746d = 154: 9229e50 sparse: add vfs-specific precautions

  • 155: ee91929 = 155: c9ceb95 reset: fix mixed reset when using virtual filesystem

  • 156: e30a55e = 156: 2a05783 credential: add new interactive config option

  • 157: c5fe1b4 = 157: 0ae4ac7 maintenance: add custom config to background jobs

  • 158: 005db91 = 158: 8336d80 scalar: configure maintenance during 'reconfigure'

  • 159: 2c211cd = 159: 5cadc4c t5300: confirm failure of git index-pack when non-idx suffix requested

  • 160: 1355c4d = 160: ae6e1c9 index-pack: disable rev-index if index file has non .idx suffix

  • 161: 1f88a2c = 161: b216189 sparse-index.c: fix use of index hashes in expand_index

  • 162: 241d9f7 = 162: 18c885d t1092: add test for untracked files and directories

  • 163: 510418c = 163: 7229680 trace2: redact passwords from https:// URLs by default

  • 164: 21b2850 = 164: e8eec34 t0211: test URL redacting in PERF format

  • 165: a9f8c88 = 165: ff13c04 trace2: fix signature of trace2_def_param() macro

  • 166: 40dbb6e = 166: 8548168 t0212: test URL redacting in EVENT format

  • 167: f85d023 = 167: 52c75cc t0210,t0211: unset SANITIZE_LEAK

tl;dr looking great!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.