Skip to content

Rebase to v2.33.1 #3465

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

Merged
merged 560 commits into from
Oct 13, 2021
Merged

Rebase to v2.33.1 #3465

merged 560 commits into from
Oct 13, 2021

Conversation

dscho
Copy link
Member

@dscho dscho commented Oct 13, 2021

The usual thing. Range-diff relative to main:

-  1:  3cf9bb36bf3a (upstream: 3cf9bb36bf3a) <   -:  ------------ ci: use upload-artifacts v1 for dockerized jobs
   2:  6e34e54050cb =   1:  0b043bef5688 t9350: point out that refs are not updated correctly
   3:  158907ceb874 =   2:  94833d8d79c0 transport-helper: add trailing --
   4:  f189282dcfc8 =   3:  e9a9bdde00ae remote-helper: check helper status after import/export
   8:  0221569db1c5 =   4:  9e64a3c5bb76 Always auto-gc after calling a fast-import transport
   5:  f070e35da86e =   5:  e333dced4c45 mingw: demonstrate a problem with certain absolute paths
   6:  fc0e515ba1e9 =   6:  99bb083f7048 archive: replace write_or_die() calls with write_block_or_die()
   7:  2e004e4a3982 =   7:  0d81cd186fe3 gitk: prevent overly long command lines
   9:  ecf7f0d78b91 =   8:  6324fc3c0497 mingw: allow absolute paths without drive prefix
  10:  8716f7dd4901 =   9:  1b48af6dca2f mingw: handle absolute paths in expand_user_path()
  11:  3b9f65ddf181 =  10:  e2b66348b409 archive: avoid spawning `gzip`
  12:  409cae91eb7a =  11:  ce4786fc77ce mingw: change core.fsyncObjectFiles = 1 by default
  13:  904dc67d9066 =  12:  f953fca23c29 gitk: Escape file paths before piping to git log
  15:  432b3154413d !  13:  903852c7a437 clean: do not traverse mount points
    @@ builtin/clean.c: static int remove_dirs(struct strbuf *path, const char *prefix,
      
     +	if (is_mount_point(path)) {
     +		if (!quiet) {
    -+			quote_path_relative(path->buf, prefix, &quoted);
    ++			quote_path(path->buf, prefix, &quoted, 0);
     +			printf(dry_run ?
     +			       _(msg_would_skip_mount_point) :
     +			       _(msg_skip_mount_point), quoted.buf);
  17:  379fe49ce4c7 !  14:  f546bcc740bc clean: remove mount points when possible
    @@ builtin/clean.c: static int remove_dirs(struct strbuf *path, const char *prefix,
      	if (is_mount_point(path)) {
     +#ifndef CAN_UNLINK_MOUNT_POINTS
      		if (!quiet) {
    --			quote_path_relative(path->buf, prefix, &quoted);
    -+			quote_path(path->buf, prefix, &quoted, 0);
    + 			quote_path(path->buf, prefix, &quoted, 0);
      			printf(dry_run ?
    - 			       _(msg_would_skip_mount_point) :
    +@@ builtin/clean.c: static int remove_dirs(struct strbuf *path, const char *prefix, int force_flag,
      			       _(msg_skip_mount_point), quoted.buf);
      		}
      		*dir_gone = 0;
  18:  5e28151f0ec9 =  15:  e4e05a011ce0 mingw: include the Python parts in the build
  19:  003f50c05454 =  16:  0c9949bd8f1b Config option to disable side-band-64k for transport
  20:  6e2adf4721e8 =  17:  07ff4a5e8d08 mingw: make sure `errno` is set correctly when socket operations fail
  21:  134a05639a70 =  18:  4e4c947a5784 mingw: do resolve symlinks in `getcwd()`
  22:  99629cb66369 =  19:  5c7bbd9cac2b mingw: fix fatal error working on mapped network drives on Windows
  24:  0d465cf41540 =  20:  7ecd92b835de mingw: ensure valid CTYPE
  26:  9f337d26ec6f =  21:  fba499b549ea mingw: allow `git.exe` to be used instead of the "Git wrapper"
  14:  6889d057177f =  22:  e982bf855c3d mingw: demonstrate a `git add` issue with NTFS junctions
  28:  27f4215a7694 !  23:  c89a6cb875e1 mingw: ignore HOMEDRIVE/HOMEPATH if it points to Windows' system directory
    @@ compat/mingw.c: static size_t append_system_bin_dirs(char *path, size_t size)
      
     +static int is_system32_path(const char *path)
     +{
    -+	WCHAR system32[MAX_LONG_PATH], wpath[MAX_LONG_PATH];
    ++	WCHAR system32[MAX_PATH], wpath[MAX_PATH];
     +
    -+	if (xutftowcs_long_path(wpath, path) < 0 ||
    ++	if (xutftowcs_path(wpath, path) < 0 ||
     +	    !GetSystemDirectoryW(system32, ARRAY_SIZE(system32)) ||
     +	    _wcsicmp(system32, wpath))
     +		return 0;
  16:  c735978159d0 =  24:  dc3d6bb24049 strbuf_realpath(): use platform-dependent API if available
  31:  8efa52f5967e =  25:  ae5f1b7b6004 tests: exercise the RUNTIME_PREFIX feature
  23:  b876fea722d6 =  26:  3f1cf3c9876a clink.pl: fix MSVC compile script to handle libcurl-d.lib
  33:  fcb281d7f2d1 !  27:  c218ee5029a3 mingw: implement a platform-specific `strbuf_realpath()`
    @@ compat/mingw.h: static inline void convert_slashes(char *path)
      #define PATH_SEP ';'
      char *mingw_query_user_email(void);
      #define query_user_email mingw_query_user_email
    ++struct strbuf;
     +char *mingw_strbuf_realpath(struct strbuf *resolved, const char *path);
     +#define platform_strbuf_realpath mingw_strbuf_realpath
      #if !defined(__MINGW64_VERSION_MAJOR) && (!defined(_MSC_VER) || _MSC_VER < 1800)
  25:  cf4459343a53 =  28:  5b9d69777032 vcxproj: unclash project directories with build outputs
  27:  4eb35c79dbb4 =  29:  e6b46721f56a t5505/t5516: allow running without `.git/branches/` in the templates
  29:  896f959a01a3 =  30:  51554a0182e9 Allow `add -p` and `add -i` with a large number of files
  30:  c0d57820a525 =  31:  b62ca41311a0 t5505/t5516: fix white-space around redirectors
  32:  88de6b82cc4a =  32:  1d9af59953d7 http: use new "best effort" strategy for Secure Channel revoke checking
  34:  2ad88237bed8 =  33:  54c3efaeed09 t3701: verify that we can add *lots* of files interactively
  35:  968faba67fd7 =  34:  a1c624a4137e git add -i: handle CR/LF line endings in the interactive input
  36:  85baeaf82b9e =  35:  76aef071d5b5 commit: accept "scissors" with CR/LF line endings
  48:  3ecf225ed6a9 =  36:  e27eeb77cb42 t0014: fix indentation
  49:  6bd7e02351d5 =  37:  6f1731e6286f git-gui: accommodate for intent-to-add files
  37:  493e33ea1661 =  38:  805a1034425a clink.pl: fix libexpatd.lib link error when using MSVC
  38:  d225b8d9cc3c =  39:  ac86c9f02ad7 Makefile: clean up .ilk files when MSVC=1
  39:  b6a63defec9a =  40:  4926ea174e93 vcbuild: add support for compiling Windows resource files
  40:  f11a12831c03 =  41:  e530e8e803a6 config.mak.uname: add git.rc to MSVC builds
  41:  10ded59193a4 =  42:  0b7cdfb5c6a7 clink.pl: ignore no-stack-protector arg on MSVC=1 builds
  42:  04e077d10d0c =  43:  f9ffe027c0ca clink.pl: move default linker options for MSVC=1 builds
  43:  49b4c9c3d2e9 =  44:  8a297857be57 buildsystems: remove duplicate clause
  44:  50fc145b7cbe =  45:  efa188a09412 vcxproj: handle resource files, too
  45:  a788112422fc =  46:  c3bac484e563 vcxproj: ignore -fno-stack-protector and -fno-common
  52:  d51b83cf8c95 =  47:  92a1ceb95b3a vcpkg_install: detect lack of Git
  54:  c120e2a28e94 =  48:  60bbbf3e4cc1 vcpkg_install: add comment regarding slow network connections
  56:  f81c40f0a3f7 =  49:  bd896a434767 vcxproj: support building Windows/ARM64 binaries
  58:  f60779f0c5e4 =  50:  0e3159c27620 vcbuild: install ARM64 dependencies when building ARM64 binaries
  60:  04ad761c1650 =  51:  6e7e354a9b70 vcbuild: add an option to install individual 'features'
  62:  b78e2d18de9b =  52:  5cfa79fa7f66 cmake: allow building for Windows/ARM64
  46:  d1019842d699 =  53:  302cb5651828 vcxproj: handle GUI programs, too
  50:  9eba813a1d15 =  54:  42e237eb2633 Add a GitHub workflow to generate Git for Windows' Pacman package
  51:  14ee5f181ff7 =  55:  ba23533fe983 git-artifacts: if GPG secrets are available, use them
  53:  72c572645145 =  56:  2caeb2e66957 git-artifacts: also code-sign, if configured via the secrets
  55:  5271fc5179c4 =  57:  771da46cdfca git-artifacts: also build the installer
  57:  8b60e1430155 =  58:  6de9a56f9457 git-artifacts: also build portable, mingit and mingit-busybox
  59:  ae06c57c7fe4 =  59:  e53fc032ca0c git-artifacts: also build 32-bit versions
  61:  dc4c23f8f888 =  60:  ed6946e61bc1 git-artifacts: also build the nuget package
  63:  4b0f57f9b516 =  61:  3df5697d4e4b git-artifacts: allow restricting which artifacts are built
  65:  558c80138037 =  62:  214bb64b0d3c git-artifacts: allow specifying repo/ref via workflow_dispatch
  68:  9df13c8b0ef5 =  63:  ad000a61bf97 git-artifacts: cache the build-installers artifact
  69:  5e1c9b385304 =  64:  1050b30c1a29 git-artifacts: use the cached build-installers instead of makepkg-git
  64:  4146dec51c62 =  65:  c8d438b62006 ci(vs-build) also build Windows/ARM64 artifacts
  70:  90fd5c4786d1 =  66:  12d024a1986f git-artifacts: add ARM64 artifacts
  66:  918bdd05e951 =  67:  04758f38bf78 Add schannel to curl installation
  77:  c12b62b00887 =  68:  2096dae0ccb6 git-artifacts: add workaround for GCM Core on ARM64
  71:  e120e7ee42ce =  69:  62b8032afea7 git-artifacts(arm64): avoid hard-linking the dashed built-ins
  72:  62cc9843161a =  70:  7cf9a7d3065d git-artifacts: use a narrower `PATH`
  73:  638a027aab2a =  71:  3d0041276ba5 git-artifacts: fix BUILD_ONLY handling for ARM64
  74:  81986ca4cf70 =  72:  1c7880a08226 git-artifacts: extend the `SKIP` logic to handle `pkg` and `build-arm64`
  75:  c7bb8dc553c9 =  73:  c1cfd52284bb git-artifacts: mark all inputs as "not required"
  76:  d5e623f7369b =  74:  0821809746e9 git-artifacts(build-arm64): build artifacts using the intended Git revision
  78:  dea98a569055 =  75:  bac20c5ba546 cmake(): allow setting HOST_CPU for cross-compilation
  79:  1046ebe7c12c =  76:  12a7394c3d00 git-artifacts: Use the shiny new setup-git-for-windows-sdk Action
  80:  467ddc982da0 =  77:  7fb2d7c03143 ci(): add HOST_CPU to CMake command
  95:  11f3d271c30f =  78:  ddb31d5e2aa0 ci(vs-build): download the vcpkg artifacts using a dedicated Action
  96:  34fc8ef403bc =  79:  30bce0cd5e85 mingw: allow for longer paths in `parse_interpreter()`
  97:  15acb6178a0c =  80:  e694f59558c5 compat/vcbuild: document preferred way to build in Visual Studio
 130:  93b402967b23 =  81:  d279ea7a7c27 subtree: update `contrib/subtree` `test` target
 129:  cc84746ae5b8 =  82:  f5640609edce http: optionally send SSL client certificate
 131:  4759da4d7590 !  83:  bc3ad3357a6a ci: run `contrib/subtree` tests in CI builds
    @@ ci/run-build-and-tests.sh: linux-gcc)
     -	make test
     +	make test && make -C contrib/subtree test || exit 1
      	;;
    - linux-gcc-4.8)
    + linux-gcc-4.8|pedantic)
      	# Don't run the tests; we only care about whether Git can be
    -@@ ci/run-build-and-tests.sh: linux-gcc-4.8)
    - 	# constructs that newer compilers seem to quietly accept.
    + 	# built with GCC 4.8 or with pedantic
      	;;
      *)
     -	make test
 159:  9354370d0955 =  84:  3fd97173c2c0 git-gui: provide question helper for retry fallback on Windows
 160:  df4dbab7fc86 =  85:  036c265f68b4 git gui: set GIT_ASKPASS=git-gui--askpass if not set yet
 169:  cb34179f4096 =  86:  9af982af2903 gitk: Unicode file name support
 162:  194082e2584b =  87:  4adb9dc47d52 git-gui--askyesno: fix funny text wrapping
 170:  047e3cbb9f4d =  88:  71e2ed40f1ca gitk: Use an external icon file on Windows
 164:  1829cb8bfe38 =  89:  8f9e7f9edf2c git-gui--askyesno: allow overriding the window title
 171:  fcaf4614e32c =  90:  4063fb4ec922 gitk: fix arrow keys in input fields with Tcl/Tk >= 8.6
 166:  06b638d8ded9 =  91:  43c95326c7b6 respect core.hooksPath, falling back to .git/hooks
 167:  8a19601d42ca =  92:  0ae2254fbca5 git-gui--askyesno (mingw): use Git for Windows' icon, if available
 172:  8647725bdc35 =  93:  c8753bc4f5b8 gitk: make the "list references" default window width wider
 232:  733f4d103246 =  94:  1689d98dc3c9 status: carry the --no-lock-index option for backwards-compatibility
 235:  0b5bd988e888 =  95:  23e653c5fad9 status: reinstate --show-ignored-directory as a deprecated option
 243:  4e46eb2071bc =  96:  9bbd6196f95c reset: reinstate support for the deprecated --stdin option
 236:  5d05386bea64 =  97:  feafc5c010f6 Modify the Code of Conduct for Git for Windows
 237:  4668f982e381 =  98:  b6bc8ccf88da CONTRIBUTING.md: add guide for first-time contributors
 238:  083f3f2f027d =  99:  7f2ab89036d7 README.md: Add a Windows-specific preamble
 239:  2b6efaa85a46 = 100:  db7b19382e10 Add an issue template
 240:  fd47bb62edc4 = 101:  21d4054046e4 Modify the GitHub Pull Request template (to reflect Git for Windows)
 241:  cabd26a3e5c3 = 102:  b9a64b7c9810 .github: Add configuration for the Sentiment Bot
 244:  71566e2f5137 = 103:  238bbbb71ba0 Add a GitHub workflow to monitor component updates
 242:  77ff80a8f6b6 = 104:  3c2d9768a006 Document how $HOME is set on Windows
 245:  550ab5ca2c1c = 105:  d70df45ce1ed SECURITY.md: document Git for Windows' policies
 252:  aade3ca57406 = 106:  f384543c349a commit-graph: when closing the graph, also release the slab
 253:  0e956ae7bba9 = 107:  cce352269806 pull: release packs before fetching
 373:  cd5242d16044 = 108:  7a57f743a993 ci(windows): ensure that we do not pick up random executables
  47:  e4148a1b3491 ! 109:  0f1d3ff2f780 win32: add a helper to run `git.exe` without a foreground window
    @@ Commit message
         re-launch `git.exe`, suppressing that console window, passing through
         all command-line arguments as-are.
     
    +    Helped-by: Carlo Marcelo Arenas Belón <[email protected]>
         Signed-off-by: Johannes Schindelin <[email protected]>
         Signed-off-by: Derrick Stolee <[email protected]>
     
    @@ compat/win32/headless.c (new)
     +	return 1;
     +}
     +
    -+int WINAPI wWinMain(HINSTANCE instance, HINSTANCE previous_instance,
    -+		    wchar_t *command_line, int show)
    ++int WINAPI wWinMain(_In_ HINSTANCE instance,
    ++		    _In_opt_ HINSTANCE previous_instance,
    ++		    _In_ LPWSTR command_line, _In_ int show)
     +{
     +	wchar_t git_command_line[32768];
     +	size_t size = sizeof(git_command_line) / sizeof(wchar_t);
    @@ compat/win32/headless.c (new)
     +	int slash = 0, i;
     +
     +	STARTUPINFO startup_info = {
    ++		.cb = sizeof(STARTUPINFO),
     +		.dwFlags = STARTF_USESHOWWINDOW,
     +		.wShowWindow = SW_HIDE,
     +	};
    @@ compat/win32/headless.c (new)
     +		else if (_wpgmptr[i] == L'\\')
     +			slash = i;
     +
    -+	if (slash + 11 >= sizeof(git_command_line) / sizeof(wchar_t))
    ++	if (slash >= size - 11)
     +		return 127; /* Too long path */
     +
     +	/* If it is in Git's exec path, add the bin/ directory to the PATH */
    @@ compat/win32/headless.c (new)
     +			return 127;
     +	}
     +
    -+	startup_info.cb = sizeof(STARTUPINFO);
    -+
     +	startup_info.hStdInput = GetStdHandle(STD_INPUT_HANDLE);
     +	startup_info.hStdOutput = GetStdHandle(STD_OUTPUT_HANDLE);
     +	startup_info.hStdError = GetStdHandle(STD_ERROR_HANDLE);
    @@ compat/win32/headless.c (new)
     +			   &startup_info, &process_info))
     +		return 129; /* could not start */
     +	WaitForSingleObject(process_info.hProcess, INFINITE);
    -+	if (!GetExitCodeProcess(process_info.hProcess, &exit_code)) {
    -+		CloseHandle(process_info.hProcess);
    -+		return 130; /* Could not determine exit code? */
    -+	}
    ++	if (!GetExitCodeProcess(process_info.hProcess, &exit_code))
    ++		exit_code = 130; /* Could not determine exit code? */
    ++
    ++	CloseHandle(process_info.hProcess);
    ++	CloseHandle(process_info.hThread);
     +
     +	return (int)exit_code;
     +}
  67:  571b378cb8bf = 110:  b996193f5b96 git maintenance: avoid console window in scheduled tasks on Windows
- 81:  15b44c3f2166 <   -:  ------------ simple-ipc: preparations for supporting binary messages.
- 82:  e3e590dbc753 <   -:  ------------ fsmonitor--daemon: man page
- 83:  5641d51b02fa <   -:  ------------ fsmonitor--daemon: update fsmonitor documentation
- 84:  a2f5482b4e8e <   -:  ------------ fsmonitor-ipc: create client routines for git-fsmonitor--daemon
 256:  03b742e867c2 = 111:  2997adbfb211 CMake: default Visual Studio generator has changed
 257:  204e0d5b95bd = 112:  8ec87961921a .gitignore: add Visual Studio CMakeSetting.json file
 258:  2c669d013eb9 = 113:  3d33db718f9e CMakeLists: add default "x64-windows" arch for Visual Studio
 259:  0e1dc0b2383d = 114:  a300641f0397 CMake: show Win32 and Generator_platform build-option values
 250:  9e52042d4a4e ! 115:  6e1633f83b52 mingw: avoid fallback for {local,gm}time_r()
    @@ compat/mingw.c: struct tm *localtime_r(const time_t *timep, struct tm *result)
      }
     +#endif
      
    - char *mingw_strbuf_realpath(struct strbuf *resolved, const char *path)
    + char *mingw_getcwd(char *pointer, int len)
      {
     
      ## git-compat-util.h ##
 254:  9ad3d10e7feb = 116:  79857deecff7 init: do parse _all_ core.* settings early
 132:  bd68b55eb92f = 117:  d2f20f6f61f2 Win32: make FILETIME conversion functions public
 133:  cc5abf3a3ce1 = 118:  ba3d25582ec9 Win32: dirent.c: Move opendir down
 134:  40e42138559b ! 119:  c48d7ab9d228 mingw: make the dirent implementation pluggable
    @@ compat/win32/dirent.c
      
     -struct DIR {
     -	struct dirent dd_dir; /* includes d_type */
    ++#pragma GCC diagnostic push
    ++#pragma GCC diagnostic ignored "-Wpedantic"
     +typedef struct dirent_DIR {
     +	struct DIR base_dir;  /* extend base struct DIR */
      	HANDLE dd_handle;     /* FindFirstFile handle */
    @@ compat/win32/dirent.c
     -};
     +	struct dirent dd_dir; /* includes d_type */
     +} dirent_DIR;
    ++#pragma GCC diagnostic pop
     +
     +DIR *(*opendir)(const char *dirname) = dirent_opendir;
      
 135:  c95d6e65bf7a = 120:  10489b78b02f Win32: make the lstat implementation pluggable
 136:  b92364d9c4a9 = 121:  83eb469b6ccf add infrastructure for read-only file system level caches
 137:  39149f72f446 ! 122:  b15d11e164c4 mingw: add a cache below mingw's lstat and dirent implementations
    @@ compat/win32/fscache.c (new)
     + * An entry in the file system cache. Used for both entire directory listings
     + * and file entries.
     + */
    ++#pragma GCC diagnostic push
    ++#pragma GCC diagnostic ignored "-Wpedantic"
     +struct fsentry {
     +	struct hashmap_entry ent;
     +	mode_t st_mode;
    @@ compat/win32/fscache.c (new)
     +	 */
     +	struct dirent dirent;
     +};
    ++#pragma GCC diagnostic pop
     +
     +struct heap_fsentry {
     +	struct fsentry ent;
 138:  375e03b81446 = 123:  17189459f127 fscache: load directories only once
 139:  00689f773750 = 124:  2401328d991c fscache: add key for GIT_TRACE_FSCACHE
 140:  07894b1bda8b = 125:  a2c1d668e77e fscache: remember not-found directories
 141:  332b7e5b52b1 = 126:  0c2fe3869fbd fscache: add a test for the dir-not-found optimization
 142:  dc21f40e56db = 127:  35a052a78a2d add: use preload-index and fscache for performance
 143:  13183f66761d = 128:  c3922c1ebb15 dir.c: make add_excludes aware of fscache during status
 144:  3db9cef9c7da = 129:  dad72860b3de fscache: make fscache_enabled() public
 145:  c5bf291237e9 = 130:  9e97a0c9d89d dir.c: regression fix for add_excludes with fscache
 146:  e3d1b63b1619 = 131:  cc0d45de219f fetch-pack.c: enable fscache for stats under .git/objects
 147:  232ebfa223c6 ! 132:  5fbe31b23c74 checkout.c: enable fscache for checkout again
    @@ builtin/checkout.c: static int checkout_worktree(const struct checkout_opts *opt
     +	enable_fscache(0);
      	remove_marked_cache_entries(&the_index, 1);
      	remove_scheduled_dirs();
    - 	errs |= finish_delayed_checkout(&state, &nr_checkouts);
    + 	errs |= finish_delayed_checkout(&state, &nr_checkouts, opts->show_progress);
     
      ## compat/win32/fscache.c ##
     @@ compat/win32/fscache.c: int fscache_enable(int enable)
 148:  636202969363 = 133:  7f05e2a6547c Enable the filesystem cache (fscache) in refresh_index().
 149:  98ccd0043a3f = 134:  d94119aaedc3 fscache: use FindFirstFileExW to avoid retrieving the short name
 150:  fd9d280871b7 = 135:  083c4a51c1da status: disable and free fscache at the end of the status command
 151:  ed404edda323 = 136:  d126289e9440 fscache: add GIT_TEST_FSCACHE support
 152:  18d00258c0cc = 137:  408027ae7a40 fscache: add fscache hit statistics
 153:  b358145995bc ! 138:  5e0e39aa37ee mem_pool: add GIT_TRACE_MEMPOOL support
    @@ mem-pool.c: void mem_pool_init(struct mem_pool *pool, size_t initial_size)
      	if (initial_size > 0)
      		mem_pool_alloc_block(pool, initial_size, NULL);
     +
    -+	trace_printf_key(&trace_mem_pool, "mem_pool (%p): init (%"PRIuMAX") initial size\n",
    -+		pool, (uintmax_t)initial_size);
    ++	trace_printf_key(&trace_mem_pool,
    ++		"mem_pool (%p): init (%"PRIuMAX") initial size\n",
    ++		(void *)pool, (uintmax_t)initial_size);
      }
      
      void mem_pool_discard(struct mem_pool *pool, int invalidate_memory)
      {
      	struct mp_block *block, *block_to_free;
      
    -+	trace_printf_key(&trace_mem_pool, "mem_pool (%p): discard (%"PRIuMAX") unused\n",
    -+		pool, (uintmax_t)(pool->mp_block->end - pool->mp_block->next_free));
    ++	trace_printf_key(&trace_mem_pool,
    ++		"mem_pool (%p): discard (%"PRIuMAX") unused\n",
    ++		(void *)pool,
    ++		(uintmax_t)(pool->mp_block->end - pool->mp_block->next_free));
      	block = pool->mp_block;
      	while (block)
      	{
 154:  6bbb0a589916 ! 139:  637ae9e4be5d fscache: fscache takes an initial size
    @@ builtin/checkout.c: static int checkout_worktree(const struct checkout_opts *opt
     +	disable_fscache();
      	remove_marked_cache_entries(&the_index, 1);
      	remove_scheduled_dirs();
    - 	errs |= finish_delayed_checkout(&state, &nr_checkouts);
    + 	errs |= finish_delayed_checkout(&state, &nr_checkouts, opts->show_progress);
     
      ## builtin/commit.c ##
     @@ builtin/commit.c: int cmd_status(int argc, const char **argv, const char *prefix)
 155:  a67b953e4382 = 140:  38a3b43400f4 fscache: update fscache to be thread specific instead of global
 156:  be3106182417 = 141:  82c9f96646ef fscache: teach fscache to use mempool
 157:  631dd3f3d01c = 142:  f45518e840ee fscache: make fscache_enable() thread safe
 158:  71a42798f60a = 143:  bebbbfd14c38 fscache: teach fscache to use NtQueryDirectoryFile
 161:  46da4fab880f = 144:  e71d3ea64257 unpack-trees: enable fscache for sparse-checkout
 163:  cb143e12b92a = 145:  84d891488826 fscache: remember the reparse tag for each entry
 165:  3329a58463a6 = 146:  0bd47cc53228 fscache: implement an FSCache-aware is_mount_point()
 168:  7fc0b64c7cc1 = 147:  66d22a2a046b clean: make use of FSCache
 173:  2d725f225e06 = 148:  09c3563c52b9 pack-objects (mingw): demonstrate a segmentation fault with large deltas
 174:  64da6f218258 ! 149:  722c0a30a277 mingw: support long paths
    @@ Documentation/config/core.txt: core.fscache::
      	Windows-only: comma-separated list of environment variables'
      	names that need to be unset before spawning any other process.
     
    - ## compat/fsmonitor/fsm-listen-win32.c ##
    -@@ compat/fsmonitor/fsm-listen-win32.c: static struct one_watch *create_watch(struct fsmonitor_daemon_state *state,
    - 	DWORD share_mode =
    - 		FILE_SHARE_WRITE | FILE_SHARE_READ | FILE_SHARE_DELETE;
    - 	HANDLE hDir;
    --	wchar_t wpath[MAX_PATH];
    -+	wchar_t wpath[MAX_LONG_PATH];
    - 
    --	if (xutftowcs_path(wpath, path) < 0) {
    -+	if (xutftowcs_long_path(wpath, path) < 0) {
    - 		error(_("could not convert to wide characters: '%s'"), path);
    - 		return NULL;
    - 	}
    -
    - ## compat/fsmonitor/fsm-settings-win32.c ##
    -@@ compat/fsmonitor/fsm-settings-win32.c: static enum fsmonitor_reason is_virtual(struct repository *r)
    -  */
    - static enum fsmonitor_reason is_remote(struct repository *r)
    - {
    --	wchar_t wpath[MAX_PATH];
    --	wchar_t wfullpath[MAX_PATH];
    -+	wchar_t wpath[MAX_LONG_PATH];
    -+	wchar_t wfullpath[MAX_LONG_PATH];
    - 	size_t wlen;
    - 	UINT driveType;
    - 
    -@@ compat/fsmonitor/fsm-settings-win32.c: static enum fsmonitor_reason is_remote(struct repository *r)
    - 	 * Do everything in wide chars because the drive letter might be
    - 	 * a multi-byte sequence.  See win32_has_dos_drive_prefix().
    - 	 */
    --	if (xutftowcs_path(wpath, r->worktree) < 0)
    -+	if (xutftowcs_long_path(wpath, r->worktree) < 0)
    - 		return FSMONITOR_REASON_ZERO;
    - 
    - 	/*
    -@@ compat/fsmonitor/fsm-settings-win32.c: static enum fsmonitor_reason is_remote(struct repository *r)
    - 	 * slashes to backslashes.  This is essential to get GetDriveTypeW()
    - 	 * correctly handle some UNC "\\server\share\..." paths.
    - 	 */
    --	if (!GetFullPathNameW(wpath, MAX_PATH, wfullpath, NULL))
    -+	if (!GetFullPathNameW(wpath, MAX_LONG_PATH, wfullpath, NULL))
    - 		return FSMONITOR_REASON_ZERO;
    - 
    - 	driveType = GetDriveTypeW(wfullpath);
    -
      ## compat/mingw.c ##
     @@ compat/mingw.c: static int core_restrict_inherited_handles = -1;
      static enum hide_dotfiles_type hide_dotfiles = HIDE_DOTFILES_DOTGITONLY;
    @@ compat/mingw.c: int mingw_is_mount_point(struct strbuf *path)
      	if (wlen < 0)
      		die(_("could not get long path for '%s'"), path->buf);
      
    +@@ compat/mingw.c: static size_t append_system_bin_dirs(char *path, size_t size)
    + 
    + static int is_system32_path(const char *path)
    + {
    +-	WCHAR system32[MAX_PATH], wpath[MAX_PATH];
    ++	WCHAR system32[MAX_LONG_PATH], wpath[MAX_LONG_PATH];
    + 
    +-	if (xutftowcs_path(wpath, path) < 0 ||
    ++	if (xutftowcs_long_path(wpath, path) < 0 ||
    + 	    !GetSystemDirectoryW(system32, ARRAY_SIZE(system32)) ||
    + 	    _wcsicmp(system32, wpath))
    + 		return 0;
     @@ compat/mingw.c: int is_valid_win32_path(const char *path, int allow_literal_nul)
      	}
      }
 175:  d20fa02250ce = 150:  8e8d7a5f9592 Win32: fix 'lstat("dir/")' with long paths
 176:  fc948a4da4c4 ! 151:  da740c088e28 mingw: ensure that core.longPaths is handled *always*
    @@ builtin/clone.c: int cmd_clone(int argc, const char **argv, const char *prefix)
      	struct transport_ls_refs_options transport_ls_refs_options =
      		TRANSPORT_LS_REFS_OPTIONS_INIT;
      
    -+	git_config(platform_core_config, NULL);
    ++	git_config(git_default_core_config, NULL);
     +
      	packet_trace_identity("clone");
      
    @@ builtin/column.c: int cmd_column(int argc, const char **argv, const char *prefix
      		OPT_END()
      	};
      
    -+	git_config(platform_core_config, NULL);
    ++	git_config(git_default_core_config, NULL);
     +
      	/* This one is special and must be the first one */
      	if (argc > 1 && starts_with(argv[1], "--command=")) {
 177:  8bbc80a2f7e2 = 152:  88977d5111b6 mingw: Support `git_terminal_prompt` with more terminals
 178:  e58a8c6ab9d4 = 153:  ee4e009a6076 compat/terminal.c: only use the Windows console if bash 'read -r' fails
 179:  f6d4ef49d9b9 = 154:  d361f59de8cb mingw (git_terminal_prompt): do fall back to CONIN$/CONOUT$ method
 180:  16cf4533a01a = 155:  99c7f630d48f Unbreak interactive GPG prompt upon signing
 181:  d8b1fdbb1023 = 156:  186cf4f16186 strbuf_readlink: don't call readlink twice if hint is the exact link size
 182:  af6584d4818d = 157:  2499614d9817 strbuf_readlink: support link targets that exceed PATH_MAX
 183:  4cb604183da0 = 158:  8581c608082f lockfile.c: use is_dir_sep() instead of hardcoded '/' checks
 184:  49ddf83e2b38 = 159:  bfa89a1fca31 Win32: don't call GetFileAttributes twice in mingw_lstat()
 185:  8e5e6422aeb3 = 160:  4630343be212 Win32: implement stat() with symlink support
 186:  46913db96f9e = 161:  5b8fb9709aa0 Win32: remove separate do_lstat() function
 187:  346ee4b505cb = 162:  ec55c9632083 Win32: let mingw_lstat() error early upon problems with reparse points
 188:  a3e0701abee3 = 163:  f4dcf3dc0765 mingw: teach fscache and dirent about symlinks
 189:  602ddfa70568 = 164:  19cbcd91cdcd Win32: lstat(): return adequate stat.st_size for symlinks
 190:  2e061b527ab9 = 165:  80d407cdbef8 Win32: factor out retry logic
 191:  accc9a5566e8 = 166:  7da16b244ad6 Win32: change default of 'core.symlinks' to false
 192:  6f42d3c5b915 = 167:  1bc1f0bbcdd1 Win32: add symlink-specific error codes
 193:  3a212768ef0d = 168:  0a78ca289f48 Win32: mingw_unlink: support symlinks to directories
 194:  04116c6fb6be = 169:  29671b0ebea7 Win32: mingw_rename: support renaming symlinks
 195:  dfd503771080 = 170:  eed47191801f Win32: mingw_chdir: change to symlink-resolved directory
 196:  d28caf09c739 = 171:  914447d06133 Win32: implement readlink()
 197:  2d445b7fa8fd = 172:  9d28378da031 mingw: lstat: compute correct size for symlinks
 198:  d6cdafff3f60 = 173:  83a6be6dc243 Win32: implement basic symlink() functionality (file symlinks only)
 199:  6bd9c8e02b60 ! 174:  6fd24eba979b Win32: symlink: add support for symlinks to directories
    @@ compat/mingw.c: int mingw_core_config(const char *var, const char *value, void *
     +
     +	len = wcslen(path);
     +	if (i + len + 1 > size) {
    -+		error("Could not make '%S' relative to '%S' (too large)",
    ++		error("Could not make '%ls' relative to '%ls' (too large)",
     +		      path, relative_to);
     +		return NULL;
     +	}
 200:  32ccf8e094ba = 175:  1111a12db8be mingw: try to create symlinks without elevated permissions
 201:  55060fa3f394 = 176:  24980123d7dd mingw: emulate stat() a little more faithfully
 202:  b487ad175c74 = 177:  ad1648471991 mingw: special-case index entries for symlinks with buggy size
 208:  2b4bf3501e9c = 178:  7eda2b4fdb2b mingw: introduce code to detect whether we're inside a Windows container
 210:  481741d01d66 = 179:  a2c8ec27bb53 mingw: when running in a Windows container, try to rename() harder
 212:  9e7403b19291 = 180:  8fd75c08639d mingw: move the file_attr_to_st_mode() function definition
 214:  daeb0d14ee34 = 181:  ca7fda8b351b mingw: Windows Docker volumes are *not* symbolic links
 203:  777c01e8322d = 182:  feb5e2c9509f Win32: symlink: move phantom symlink creation to a separate function
 204:  0fb3908161dc = 183:  1bab7c0e04e1 Introduce helper to create symlinks that knows about index_state
 205:  f116920dc728 = 184:  10c016042e27 mingw: allow to specify the symlink type in .gitattributes
 206:  7bf6c747432b = 185:  cf9c44861b54 Win32: symlink: add test for `symlink` attribute
 207:  7a578347638f = 186:  07b6ac31af50 mingw: explicitly specify with which cmd to prefix the cmdline
 209:  82f50e22d97e = 187:  c648de662417 mingw: when path_lookup() failed, try BusyBox
 211:  427a02510ea2 = 188:  ed29d6582e2c test-lib: avoid unnecessary Perl invocation
 213:  cd49051c5bf2 = 189:  aea0e82bdf7d tests: replace mingw_test_cmp with a helper in C
 215:  c238b1c55d2f = 190:  5ba4d2615dd9 test-tool: learn to act as a drop-in replacement for `iconv`
 216:  335d6011316a = 191:  1b95841e96a7 tests(mingw): if `iconv` is unavailable, use `test-helper --iconv`
 217:  6010e2206a84 = 192:  bb150b47355b tests: use t/lib-diff/* consistently
 218:  89affffb31d3 = 193:  8e5b16c68710 gitattributes: mark .png files as binary
 219:  d48928d0c374 ! 194:  e8a70bfd9529 tests: move test PNGs into t/lib-diff/
    @@ t/t4049-diff-stat-count.sh: test_expect_success 'binary changes do not count in
      	 a | 1 +
      	 c | 1 +
     
    + ## t/t4108-apply-threeway.sh ##
    +@@ t/t4108-apply-threeway.sh: test_expect_success 'apply with --3way --cached and conflicts' '
    + 
    + test_expect_success 'apply binary file patch' '
    + 	git reset --hard main &&
    +-	cp "$TEST_DIRECTORY/test-binary-1.png" bin.png &&
    ++	cp "$TEST_DIRECTORY/lib-diff/test-binary-1.png" bin.png &&
    + 	git add bin.png &&
    + 	git commit -m "add binary file" &&
    + 
    +-	cp "$TEST_DIRECTORY/test-binary-2.png" bin.png &&
    ++	cp "$TEST_DIRECTORY/lib-diff/test-binary-2.png" bin.png &&
    + 
    + 	git diff --binary >bin.diff &&
    + 	git reset --hard &&
    +@@ t/t4108-apply-threeway.sh: test_expect_success 'apply binary file patch' '
    + 
    + test_expect_success 'apply binary file patch with 3way' '
    + 	git reset --hard main &&
    +-	cp "$TEST_DIRECTORY/test-binary-1.png" bin.png &&
    ++	cp "$TEST_DIRECTORY/lib-diff/test-binary-1.png" bin.png &&
    + 	git add bin.png &&
    + 	git commit -m "add binary file" &&
    + 
    +-	cp "$TEST_DIRECTORY/test-binary-2.png" bin.png &&
    ++	cp "$TEST_DIRECTORY/lib-diff/test-binary-2.png" bin.png &&
    + 
    + 	git diff --binary >bin.diff &&
    + 	git reset --hard &&
    +@@ t/t4108-apply-threeway.sh: test_expect_success 'apply binary file patch with 3way' '
    + 
    + test_expect_success 'apply full-index patch with 3way' '
    + 	git reset --hard main &&
    +-	cp "$TEST_DIRECTORY/test-binary-1.png" bin.png &&
    ++	cp "$TEST_DIRECTORY/lib-diff/test-binary-1.png" bin.png &&
    + 	git add bin.png &&
    + 	git commit -m "add binary file" &&
    + 
    +-	cp "$TEST_DIRECTORY/test-binary-2.png" bin.png &&
    ++	cp "$TEST_DIRECTORY/lib-diff/test-binary-2.png" bin.png &&
    + 
    + 	git diff --full-index >bin.diff &&
    + 	git reset --hard &&
    +
      ## t/t6403-merge-file.sh ##
     @@ t/t6403-merge-file.sh: test_expect_success "expected conflict markers" '
      
 220:  70fd6a7ce4bf = 195:  abbd6ff7cb4b tests: only override sort & find if there are usable ones in /usr/bin/
 221:  0fac8c16f76a ! 196:  d4c32bdc1933 tests: use the correct path separator with BusyBox
    @@ t/lib-proto-disable.sh: setup_ext_wrapper () {
     
      ## t/t0021-conversion.sh ##
     @@ t/t0021-conversion.sh: export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
    - . ./test-lib.sh
    + . "$TEST_DIRECTORY"/lib-terminal.sh
      
      TEST_ROOT="$PWD"
     -PATH=$TEST_ROOT:$PATH
 222:  e21503c0a665 = 197:  d191aa80964c mingw: only use Bash-ism `builtin pwd -W` when available
 223:  a8cd46e5b7f8 = 198:  42e5606ec335 tests (mingw): remove Bash-specific pwd option
 224:  9bab197d832c = 199:  179b0fac93a1 test-lib: add BUSYBOX prerequisite
 225:  5ddcb65bc06a ! 200:  b86c8a086b5c t0021: use Windows path when appropriate
    @@ Commit message
     
      ## t/t0021-conversion.sh ##
     @@ t/t0021-conversion.sh: export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
    - 
      . ./test-lib.sh
    + . "$TEST_DIRECTORY"/lib-terminal.sh
      
     -TEST_ROOT="$PWD"
     -PATH=$TEST_ROOT$PATH_SEP$PATH
 226:  9da9c7f7988a = 201:  8d0926f9c12f t5003: use binary file from t/lib-diff/
 227:  6bac98919a39 = 202:  569a7e54bb1a t5532: workaround for BusyBox on Windows
 228:  05185348c67f = 203:  6dc02fec7a29 t5605: special-case hardlink test for BusyBox-w32
 229:  23982ca731b4 = 204:  a7896d277772 t5813: allow for $PWD to be a Windows path
 230:  81faead10fcf = 205:  8b8437b5f29b t9200: skip tests when $PWD contains a colon
 231:  9b7249d142f6 = 206:  5c13a3d02c93 mingw: kill child processes in a gentler way
 233:  49b7755cd382 = 207:  1b4064aff994 mingw: add a Makefile target to copy test artifacts
 234:  4b1d17dac15e = 208:  d575b4a00f91 mingw: really handle SIGINT
 306:  54ddae09f9ae = 209:  1ff0cbe50730 trace2: add trace2_child_ready() to report on background children
 307:  f183cc7b0d84 = 210:  ebbf3c5cb473 simple-ipc: preparations for supporting binary messages.
 308:  a0a6ebeb6870 = 211:  09693f7eb0d3 simple-ipc: move definition of ipc_active_state outside of ifdef
 309:  e5a1d91095ac = 212:  8535c366e575 simple-ipc/ipc-win32: add trace2 debugging
 310:  e3ac087f25d9 = 213:  af3fb715d49e simple-ipc/ipc-win32: add Windows ACL to named pipe
 311:  e96c86e4c2f7 = 214:  88ca3da05426 run-command: create start_bg_command
 312:  64e68477ef6f = 215:  d56269011f8c t/helper/simple-ipc: convert test-simple-ipc to use start_bg_command
 313:  e7939e07cb3a = 216:  d9fa67f60a64 fsmonitor: enhance existing comments
 314:  c624a60d4b29 = 217:  7dec29ddacdc fsmonitor-ipc: create client routines for git-fsmonitor--daemon
 315:  c008c3bdd3f2 = 218:  a05b20caf052 fsmonitor: config settings are repository-specific
 316:  3587437d0c10 = 219:  7763928f3452 fsmonitor: use IPC to query the builtin FSMonitor daemon
 317:  8d563f0824a0 = 220:  752b19ac245a fsmonitor: update fsmonitor config documentation
 318:  0f795e40f67a = 221:  057c350789ca fsmonitor--daemon: man page
 319:  19e42f8f8ed3 = 222:  5a34bc34f4b4 fsmonitor--daemon: add a built-in fsmonitor daemon
 320:  0e97154174fb = 223:  a742f5655258 builtin/fsmonitor--daemon: use parse-options API fully
 321:  94ec0e57e327 = 224:  45344f451d7f fsmonitor--daemon: implement 'stop' and 'status' commands
 322:  3aac461ddf99 = 225:  8297abeed0c2 compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
 323:  c56988615700 = 226:  fef90c0dcb98 compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
 324:  2685c53a7c73 = 227:  7cdd0a1a7d58 fsmonitor--daemon: implement 'run' command
 325:  34d228cf9664 = 228:  95fe634c1aaa fsmonitor--daemon: implement 'start' command
 326:  64971b4d86f2 = 229:  aa83a3aa59ca fsmonitor--daemon: add pathname classification
 327:  556722075f58 = 230:  6fd6142d7850 fsmonitor--daemon: define token-ids
 328:  f54b4a4d15dc = 231:  876cd3a2da26 fsmonitor--daemon: create token-based changed path cache
 329:  dd378b45fa5b = 232:  7be8ade6707c compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
 103:  ccc75e26a146 ! 233:  d9dd4458c064 fsm-listen-darwin: add macos header files for FSEvent
    @@ Metadata
     Author: Jeff Hostetler <[email protected]>
     
      ## Commit message ##
    -    fsm-listen-darwin: add macos header files for FSEvent
    +    compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEvent
     
         Include MacOS system declarations to allow us to use FSEvent and
         CoreFoundation APIs.  We need GCC and clang versions because of
 331:  38560a3b5a8f = 234:  efc2a8f24267 compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
 332:  cace837b5349 = 235:  e457342d9648 fsmonitor--daemon: implement handle_client callback
  85:  bd7a1410d34e ! 236:  7226de95c869 help: include fsmonitor--daemon feature flag in version info
    @@ Commit message
         Add the "feature: fsmonitor--daemon" message to the output of
         `git version --build-options`.
     
    -    This allows users to know if the built-in fsmonitor feature is
    -    supported on their platform.
    +    The builtin FSMonitor is only available on certain platforms and
    +    even then only when certain Makefile flags are enabled, so print
    +    a message in the verbose version output when it is available.
    +
    +    This can be used by test scripts for prereq testing.  Granted, tests
    +    could just try `git fsmonitor--daemon status` and look for a 128 exit
    +    code or grep for a "not supported" message on stderr, but this is
    +    rather obscure.
    +
    +    The main advantage is that the feature message will automatically
    +    appear in bug reports and other support requests.
     
         Signed-off-by: Jeff Hostetler <[email protected]>
     
- 86:  81f7337e3dc7 <   -:  ------------ fsmonitor: config settings are repository-specific
- 87:  abc1c46df9fb <   -:  ------------ fsmonitor: use IPC to query the builtin FSMonitor daemon
- 88:  b441b3720eda <   -:  ------------ fsmonitor--daemon: add a built-in fsmonitor daemon
- 89:  1866a62b4f51 <   -:  ------------ fsmonitor--daemon: implement 'stop' and 'status' commands
  90:  f6e27d05bc90 = 237:  6a59ccfee5bb t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
- 91:  1b42506abac0 <   -:  ------------ fsm-listen-win32: stub in backend for Windows
- 92:  a6784cb37843 <   -:  ------------ fsm-listen-darwin: stub in backend for Darwin
- 93:  7d39bbb344be <   -:  ------------ fsmonitor--daemon: implement 'run' command
- 94:  f5c5085496b1 <   -:  ------------ fsmonitor--daemon: implement 'start' command
- 98:  eab07e13cc2d <   -:  ------------ fsmonitor--daemon: do not try to operate on bare repos
- 99:  89265708a0b9 <   -:  ------------ fsmonitor--daemon: add pathname classification
-100:  13cf2b394472 <   -:  ------------ fsmonitor--daemon: define token-ids
-101:  68a4ae60326d <   -:  ------------ fsmonitor--daemon: create token-based changed path cache
-102:  a25a759709af <   -:  ------------ fsm-listen-win32: implement FSMonitor backend on Windows
-104:  8657519ee51e <   -:  ------------ fsm-listen-darwin: implement FSEvent listener on MacOS
-105:  d0ed68b4a1fa <   -:  ------------ fsmonitor--daemon: implement handle_client callback
 110:  8318d7dec0a1 = 238:  fd1842fa8964 t7527: create test for fsmonitor--daemon
 108:  5ab490f926b0 = 239:  92dc2a1bbb0a t/perf: avoid copying builtin fsmonitor files into test repo
 106:  fd9522aa9ba9 = 240:  cc03b6ff0279 t/helper/test-chmtime: skip directories on Windows
 107:  b34d252c709b = 241:  99a21c5364fd t/perf/p7519: speed up test on Windows
 109:  41b215e19afd = 242:  7111a94b1cc9 t/perf/p7519: add fsmonitor--daemon test cases
-111:  20eea488e8f1 <   -:  ------------ fsmonitor--daemon: periodically truncate list of modified files
 340:  4c1167f1497f = 243:  5fdfa3c73dd4 fsmonitor--daemon: periodically truncate list of modified files
 112:  0de22628c592 = 244:  9c07b5deb640 fsmonitor--daemon: use a cookie file to sync with file system
-113:  76408441581b <   -:  ------------ fsmonitor: enhance existing comments
 114:  ec3dfa64cc1e = 245:  05676b921608 fsmonitor: force update index after large responses
-115:  27846ccfc583 <   -:  ------------ t7527: test status with untracked-cache and fsmonitor--daemon
-116:  0fadc91ae493 <   -:  ------------ fsmonitor: handle shortname for .git
 343:  b6367c7d0b26 ! 246:  752d6571f7a2 t7527: test status with untracked-cache and fsmonitor--daemon
    @@ t/t7527-builtin-fsmonitor.sh: test_expect_success 'cleanup worktrees' '
     +		matrix_try $uc_val $fsm_val rename_files
     +		matrix_try $uc_val $fsm_val file_to_directory
     +		matrix_try $uc_val $fsm_val directory_to_file
    ++
    ++		if test $fsm_val = true
    ++		then
    ++			test_expect_success "Matrix[uc:$uc_val][fsm:$fsm_val] disable fsmonitor at end" '
    ++				test_might_fail git config --unset core.useBuiltinFSMonitor &&
    ++				git update-index --no-fsmonitor &&
    ++				test_might_fail git fsmonitor--daemon stop 2>/dev/null
    ++			'
    ++		fi
     +	done
     +done
     +
 344:  4597bc9a8afd = 247:  9dd3ba988518 compat/fsmonitor/fsm-listen-win32: handle shortnames
 117:  207eece649a9 = 248:  cb3b33249aa1 t7527: test FS event reporing on MacOS WRT case and Unicode
 118:  0f46db7c01af = 249:  109ad0714c16 t7527: test builtin FSMonitor watching repos with unicode paths
 119:  751d7c39ddba = 250:  a2dd98123a43 t/helper/fsmonitor-client: create stress test
-120:  ddab099c559d <   -:  ------------ ipc-win32: add trace2 debugging
-121:  56b6c9aa9926 <   -:  ------------ fsmonitor-settings: stub in platform-specific incompatibility checking
 348:  386c3695b760 = 251:  4cc341780aec fsmonitor-settings: bare repos are incompatible with FSMonitor
 349:  b77197af823c = 252:  2076a4ec05d1 fsmonitor-settings: stub in platform-specific incompatibility checking
 122:  7b37f49707b2 = 253:  d35af1e5f3f9 fsmonitor-settings: virtual repos are incompatible with FSMonitor
-123:  e3fc6efce384 <   -:  ------------ fsmonitor--daemon: background daemon must free the console on windows
-124:  7b8c024f511a <   -:  ------------ fsmonitor-settings: stub in platform-specific incompatibility checking on MacOS
 351:  c54c767b1ae9 = 254:  5cde67d55c3e fsmonitor-settings: stub in platform-specific incompatibility checking on MacOS
 125:  da396b62982f = 255:  683f75574d3a fsmonitor-settings: remote repos on MacOS are incompatible with FSMonitor
-126:  a002e816f2af <   -:  ------------ fsmonitor-settings: remote repos on Windows are incompatible with FSMonitor
 353:  e3c9f93317f5 = 256:  6803d5c052f3 fsmonitor-settings: remote repos on Windows are incompatible with FSMonitor
 354:  ea6e532d6541 = 257:  72ffbb726490 unpack-trees: initialize fsmonitor_has_run_once in o->result
 355:  7059baba9007 = 258:  a8ea9c34daf8 compat/fsmonitor/fsm-listen-darwin: ignore FSEvents caused by xattr changes on MacOS
 356:  e0238f4dfa4f = 259:  4725384bf54f fsmonitor--daemon: print start message only if fsmonitor.announceStartup
 357:  6fa4324438c2 = 260:  a0525f9e8974 fsmonitor--daemon: cd out of worktree root
 358:  e1c65c763d1e = 261:  ef8e6b15b8bf fsmonitor--daemon: prepare for adding health thread
 359:  39f0fde48665 = 262:  11f9e050a454 fsmonitor--daemon: rename listener thread related variables
 360:  0398d35ff797 = 263:  66ad532804ce fsmonitor--daemon: stub in health thread
 361:  dd4bdde7ded0 = 264:  3f46db7bf11b compat/fsmonitor/fsm-health-win32: add framework for periodically monitoring
 362:  941ff16ce6b0 = 265:  bd8ab71bd9b3 compat/fsmonitor/fsm-health-win32: force shutdown daemon if worktree root moves
 363:  991e668afb93 = 266:  1671c780610d compat/fsmonitor/fsm-listen-darwin: shutdown daemon if worktree root is moved/renamed
 364:  edb45f063b64 = 267:  fb425ed23d69 fsmonitor: measure time taken to apply fsmonitor query result
 374:  61641ea6fc9d ! 268:  6c83b1dd6e33 fixup! fsmonitor: optimize processing of directory events
    @@ Metadata
     Author: Jeff Hostetler <[email protected]>
     
      ## Commit message ##
    -    fixup! fsmonitor: optimize processing of directory events
    +    fsmonitor: optimize processing of directory events
    +
    +    Teach Git to perform binary search over the cache-entries for a directory
    +    notification and then linearly scan forward to find the immediate children.
    +
    +    Previously, when the FSMonitor reported a modified directory Git would
    +    perform a linear search on the entire cache-entry array for all
    +    entries matching that directory prefix and invalidate them.  Since the
    +    cache-entry array is already sorted, we can use a binary search to
    +    find the first matching entry and then only linearly walk forward and
    +    invalidate entries until the prefix changes.
    +
    +    Also, the original code would invalidate anything having the same
    +    directory prefix.  Since a directory event should only be received for
    +    items that are immediately within the directory (and not within
    +    sub-directories of it), only invalidate those entries and not the
    +    whole subtree.
     
         Signed-off-by: Jeff Hostetler <[email protected]>
     
    @@ fsmonitor.c: int fsmonitor_is_trivial_response(const struct strbuf *query_result
      static void fsmonitor_refresh_callback(struct index_state *istate, char *name)
      {
      	int i, len = strlen(name);
    +-	if (name[len - 1] == '/') {
     +	int pos = index_name_pos(istate, name, len);
     +
     +	trace_printf_key(&trace_fsmonitor,
     +			 "fsmonitor_refresh_callback '%s' (pos %d)",
     +			 name, pos);
    -+
    - 	if (name[len - 1] == '/') {
    --		const char *rel;
    --		int pos = index_name_pos(istate, name, len);
    -+		/*
    + 
    ++	if (name[len - 1] == '/') {
    + 		/*
    +-		 * TODO We should binary search to find the first path with
    +-		 * TODO this directory prefix.  Then linearly update entries
    +-		 * TODO while the prefix matches.  Taking care to search without
    +-		 * TODO the trailing slash -- because '/' sorts after a few
    +-		 * TODO interesting special chars, like '.' and ' '.
     +		 * The daemon can decorate directory events, such as
     +		 * moves or renames, with a trailing slash if the OS
     +		 * FS Event contains sufficient information, such as
    @@ fsmonitor.c: int fsmonitor_is_trivial_response(const struct strbuf *query_result
     +		 * We do not expect an exact match because the index
     +		 * does not normally contain directory entries, so we
     +		 * start at the insertion point and scan.
    -+		 */
    - 		if (pos < 0)
    - 			pos = -pos - 1;
    + 		 */
    ++		if (pos < 0)
    ++			pos = -pos - 1;
      
    -@@ fsmonitor.c: static void fsmonitor_refresh_callback(struct index_state *istate, char *name)
    - 		for (i = pos; i < istate->cache_nr; i++) {
    - 			if (!starts_with(istate->cache[i]->name, name))
    - 				break;
    --			/* Only mark the immediate children in the folder */
    --			rel = istate->cache[i]->name + len;
    --			if (!strchr(rel, '/'))
    + 		/* Mark all entries for the folder invalid */
    +-		for (i = 0; i < istate->cache_nr; i++) {
    +-			if (istate->cache[i]->ce_flags & CE_FSMONITOR_VALID &&
    +-			    starts_with(istate->cache[i]->name, name))
     -				istate->cache[i]->ce_flags &= ~CE_FSMONITOR_VALID;
    ++		for (i = pos; i < istate->cache_nr; i++) {
    ++			if (!starts_with(istate->cache[i]->name, name))
    ++				break;
     +			istate->cache[i]->ce_flags &= ~CE_FSMONITOR_VALID;
      		}
     -		/* Need to remove the / from the path for the untracked cache */
    @@ fsmonitor.c: static void fsmonitor_refresh_callback(struct index_state *istate,
     +		 */
     +		istate->cache[pos]->ce_flags &= ~CE_FSMONITOR_VALID;
      	} else {
    --		int pos = index_name_pos(istate, name, len);
    +-		int pos = index_name_pos(istate, name, strlen(name));
    +-
    +-		if (pos >= 0) {
    +-			struct cache_entry *ce = istate->cache[pos];
    +-			ce->ce_flags &= ~CE_FSMONITOR_VALID;
     +		/*
     +		 * The path is not a tracked file -or- it is a
     +		 * directory event on a platform that cannot
    @@ fsmonitor.c: static void fsmonitor_refresh_callback(struct index_state *istate,
     +		 * "name.".
     +		 */
     +		pos = -pos - 1;
    - 
    --		if (pos >= 0) {
    --			struct cache_entry *ce = istate->cache[pos];
    --			ce->ce_flags &= ~CE_FSMONITOR_VALID;
    ++
     +		for (i = pos; i < istate->cache_nr; i++) {
     +			if (!starts_with(istate->cache[i]->name, name))
     +				break;
 375:  4c3206e2a7c7 = 269:  afa386b2ec6b t7527: FSMonitor tests for directory moves
 127:  63d2d7bb4a2f ! 270:  6fcc8d0234da fsmonitor: mark the built-in FSMonitor as experimental
    @@ Commit message
         fsmonitor: mark the built-in FSMonitor as experimental
     
         Signed-off-by: Johannes Schindelin <[email protected]>
    +    Signed-off-by: Jeff Hostetler <[email protected]>
     
      ## Documentation/config/core.txt ##
     @@ Documentation/config/core.txt: git by avoiding unnecessary scanning of files that have not changed.
-128:  3bcb1a2f29a0 <   -:  ------------ Enable the built-in FSMonitor as an experimental feature
-246:  d629921dbe2d <   -:  ------------ fixup! clean: do not traverse mount points
-247:  7b052e6d209c <   -:  ------------ fixup! mingw: ignore HOMEDRIVE/HOMEPATH if it points to Windows' system directory
-248:  72648d920511 <   -:  ------------ fixup! mingw: implement a platform-specific `strbuf_realpath()`
-249:  8735530946cc <   -:  ------------ fixup! mingw: support long paths
-251:  e3c2451bfde9 <   -:  ------------ squash! win32: add a helper to run git.exe without a foreground window
-255:  0efd86d70762 <   -:  ------------ fixup! mingw: ensure that core.longPaths is handled *always*
-260:  7ed17ed9e79b <   -:  ------------ fixup! Enable the built-in FSMonitor as an experimental feature
-261:  49e51c030a58 <   -:  ------------ fixup! fsmonitor: mark the built-in FSMonitor as experimental
-262:  bfa0044eccda <   -:  ------------ fixup! mingw: support long paths
-263:  98b55c3021b0 <   -:  ------------ fixup! fsmonitor-settings: remote repos on Windows are incompatible with FSMonitor
-264:  479df9ff6859 <   -:  ------------ fixup! fsmonitor-settings: remote repos on MacOS are incompatible with FSMonitor
-265:  627671214f2c <   -:  ------------ fixup! fsmonitor-settings: stub in platform-specific incompatibility checking on MacOS
-266:  1a545a1fa03f <   -:  ------------ fixup! fsmonitor--daemon: background daemon must free the console on windows
-267:  5a54dfa08ab8 <   -:  ------------ fixup! fsmonitor-settings: virtual repos are incompatible with FSMonitor
-268:  cd4411cb3c09 <   -:  ------------ fixup! fsmonitor-settings: stub in platform-specific incompatibility checking
-269:  09f93852e15c <   -:  ------------ fixup! ipc-win32: add trace2 debugging
-270:  9fd734e53e48 <   -:  ------------ fixup! t/helper/fsmonitor-client: create stress test
-271:  126ab52086ed <   -:  ------------ fixup! t7527: test builtin FSMonitor watching repos with unicode paths
-272:  238888315a8b <   -:  ------------ fixup! t7527: test FS event reporing on MacOS WRT case and Unicode
-273:  0e325759c69e <   -:  ------------ fixup! fsmonitor: handle shortname for .git
-274:  ee717d5d946a <   -:  ------------ fixup! t7527: test status with untracked-cache and fsmonitor--daemon
-275:  4f40cd4a4aa5 <   -:  ------------ fixup! fsmonitor: force update index after large responses
-276:  6cea160356c5 <   -:  ------------ fixup! fsmonitor: enhance existing comments
-277:  39e04891763a <   -:  ------------ fixup! fsmonitor--daemon: use a cookie file to sync with file system
-278:  0dae22b88f2f <   -:  ------------ fixup! fsmonitor--daemon: periodically truncate list of modified files
-279:  bfc1efc0d600 <   -:  ------------ fixup! t7527: create test for fsmonitor--daemon
-280:  b1488adc281a <   -:  ------------ fixup! t/perf/p7519: add fsmonitor--daemon test cases
-281:  62cad115d754 <   -:  ------------ fixup! t/perf: avoid copying builtin fsmonitor files into test repo
-282:  43ab88164c28 <   -:  ------------ fixup! t/perf/p7519: speed up test on Windows
-283:  b244b5416dcb <   -:  ------------ fixup! t/helper/test-chmtime: skip directories on Windows
-284:  492c04ea7a79 <   -:  ------------ fixup! fsmonitor--daemon: implement handle_client callback
-285:  b27da829cdf1 <   -:  ------------ fixup! fsm-listen-darwin: implement FSEvent listener on MacOS
-286:  6fe4f740501b <   -:  ------------ fixup! fsm-listen-darwin: add macos header files for FSEvent
-287:  32c3a207fcf2 <   -:  ------------ fixup! fsm-listen-win32: implement FSMonitor backend on Windows
-288:  f394cb19737d <   -:  ------------ fixup! fsmonitor--daemon: create token-based changed path cache
-289:  1be0de12a38f <   -:  ------------ fixup! fsmonitor--daemon: define token-ids
-290:  d27ea8bbabd5 <   -:  ------------ fixup! fsmonitor--daemon: add pathname classification
-291:  eee16aa4aaa1 <   -:  ------------ fixup! fsmonitor--daemon: do not try to operate on bare repos
-292:  4ef31733492d <   -:  ------------ fixup! fsmonitor--daemon: implement 'start' command
-293:  d5fd4ed9e881 <   -:  ------------ fixup! fsmonitor--daemon: implement 'run' command
-294:  d953cad8a9da <   -:  ------------ fixup! fsm-listen-darwin: stub in backend for Darwin
-295:  c1b76c04bccc <   -:  ------------ fixup! fsm-listen-win32: stub in backend for Windows
-296:  7fbbac3a2970 <   -:  ------------ fixup! t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
-297:  a9bfc01b1f71 <   -:  ------------ fixup! fsmonitor--daemon: implement 'stop' and 'status' commands
-298:  669c95526b6e <   -:  ------------ fixup! fsmonitor--daemon: add a built-in fsmonitor daemon
-299:  c6e29c27dc74 <   -:  ------------ fixup! fsmonitor: use IPC to query the builtin FSMonitor daemon
-300:  feea1cbe19a7 <   -:  ------------ fixup! fsmonitor: config settings are repository-specific
-301:  a63209e7c158 <   -:  ------------ fixup! help: include fsmonitor--daemon feature flag in version info
-302:  513dee5fd244 <   -:  ------------ fixup! fsmonitor-ipc: create client routines for git-fsmonitor--daemon
-303:  5c2eb208245a <   -:  ------------ fixup! fsmonitor--daemon: update fsmonitor documentation
-304:  f3c5e26fcf69 <   -:  ------------ fixup! fsmonitor--daemon: man page
-305:  19ee980052a5 <   -:  ------------ fixup! simple-ipc: preparations for supporting binary messages.
-330:  7aa75f6b6baa <   -:  ------------ compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEvent
-333:  336e91833fd3 <   -:  ------------ help: include fsmonitor--daemon feature flag in version info
-334:  370af40bc064 <   -:  ------------ t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
-335:  6afcddb08b87 <   -:  ------------ t7527: create test for fsmonitor--daemon
-336:  2ba3e3537f2d <   -:  ------------ t/perf: avoid copying builtin fsmonitor files into test repo
-337:  3b617e886245 <   -:  ------------ t/helper/test-chmtime: skip directories on Windows
-338:  f8013f4cb24b <   -:  ------------ t/perf/p7519: speed up test on Windows
-339:  065492de0a94 <   -:  ------------ t/perf/p7519: add fsmonitor--daemon test cases
-341:  a511adef6d45 <   -:  ------------ fsmonitor--daemon: use a cookie file to sync with file system
-342:  67f2c1df7982 <   -:  ------------ fsmonitor: force update index after large responses
-345:  ee3be16449fa <   -:  ------------ t7527: test FS event reporing on MacOS WRT case and Unicode
-346:  a1fc4aad03f3 <   -:  ------------ t7527: test builtin FSMonitor watching repos with unicode paths
-347:  42d62b4c8828 <   -:  ------------ t/helper/fsmonitor-client: create stress test
-350:  d432e98d60b9 <   -:  ------------ fsmonitor-settings: virtual repos are incompatible with FSMonitor
-352:  6635d1acfaea <   -:  ------------ fsmonitor-settings: remote repos on MacOS are incompatible with FSMonitor
-365:  13f8336b2b06 <   -:  ------------ fsmonitor: optimize processing of directory events
-366:  9c05fd9820d4 <   -:  ------------ fsmonitor: mark the built-in FSMonitor as experimental
 367:  1e54c4a08dcb = 271:  ca7feca3dc2f Enable the built-in FSMonitor as an experimental feature
 368:  f715125f28f9 = 272:  6aff8e63d057 compat/fsmonitor/fsm-*-win32: support long paths
-369:  d9c437e35b0d <   -:  ------------ squash! Win32: symlink: add support for symlinks to directories
-370:  629aaaa6ee59 <   -:  ------------ squash! mem_pool: add GIT_TRACE_MEMPOOL support
-371:  8e4b4ce41bd3 <   -:  ------------ squash! mingw: make the dirent implementation plugable
-372:  711baf1b519d <   -:  ------------ fixup! t7527: test status with untracked-cache and fsmonitor--daemon

Nothing major, only the FSMonitor stuff looks funny because we dropped the previous iteration and replaced it with the current one.

dscho and others added 30 commits October 13, 2021 17:45
…-in-vs/master

ci: avoid d/f conflict in vs/master
This topic branch allows `add -p` and `add -i` with a large number of
files. It is kind of a hack that was never really meant to be
upstreamed. Let's see if we can do better in the built-in `add -p`.

Signed-off-by: Johannes Schindelin <[email protected]>
git add -i: handle CR/LF line endings in the interactive input
Rationalize line endings for scissors-cleanup
…xtra_info

t/t0014: fix: eliminate additional lines from trace
This merges the current version of the patch that tries to address Git
GUI's problems with intent-to-add files.

This patch will likely be improved substantially before it is merged
into Git GUI's main branch, but we want to have _something_ resembling a
fix already in Git for Windows v2.29.0.

Signed-off-by: Johannes Schindelin <[email protected]>
Make use of the new environment variable GIT_ASK_YESNO to support the
recently implemented fallback in case unlink, rename or rmdir fail for
files in use on Windows. The added dialog will present a yes/no question
to the the user which will currently be used by the windows compat layer
to let the user retry a failed file operation.

Signed-off-by: Heiko Voigt <[email protected]>
Assumes file names in git tree objects are UTF-8 encoded.

On most unix systems, the system encoding (and thus the TCL system
encoding) will be UTF-8, so file names will be displayed correctly.

On Windows, it is impossible to set the system encoding to UTF-8.
Changing the TCL system encoding (via 'encoding system ...', e.g. in the
startup code) is explicitly discouraged by the TCL docs.

Change gitk functions dealing with file names to always convert
from and to UTF-8.

Signed-off-by: Karsten Blees <[email protected]>
Signed-off-by: Johannes Schindelin <[email protected]>
The text wrapping seems to be aligned to the right side of the Yes
button, leaving an awful lot of empty space.

Let's try to counter this by using pixel units.

Signed-off-by: Johannes Schindelin <[email protected]>
Git for Windows now ships with the new Git icon from git-scm.com. Use that
icon file if it exists instead of the old procedurally drawn one.

This patch was sent upstream but so far no decision on its inclusion was
made, so commit it to our fork.

Signed-off-by: Sebastian Schuberth <[email protected]>
"Question?" is maybe not the most informative thing to ask. In the
absence of better information, it is the best we can do, of course.

However, Git for Windows' auto updater just learned the trick to use
git-gui--askyesno to ask the user whether to update now or not. And in
this scripted scenario, we can easily pass a command-line option to
change the window title.

So let's support that with the new `--title <title>` option.

Signed-off-by: Johannes Schindelin <[email protected]>
Tcl/Tk 8.6 introduced new events for the cursor left/right keys and
apparently changed the behavior of the previous event.

Let's work around that by using the new events when we are running with
Tcl/Tk 8.6 or later.

This fixes git-for-windows#495

Signed-off-by: Johannes Schindelin <[email protected]>
Since v2.9.0, Git knows about the config variable core.hookspath
that allows overriding the path to the directory containing the
Git hooks.

Since v2.10.0, the `--git-path` option respects that config
variable, too, so we may just as well use that command.

For Git versions older than v2.5.0 (which was the first version to
support the `--git-path` option for the `rev-parse` command), we
simply fall back to the previous code.

This fixes git-for-windows#1755

Initial-patch-by: Philipp Gortan <[email protected]>
Signed-off-by: Johannes Schindelin <[email protected]>
For additional GUI goodness.

Signed-off-by: Johannes Schindelin <[email protected]>
When using remotes (with git-flow especially), the remote reference names
are almost always wordwrapped in the "list references" window because it's
somewhat narrow by default. It's possible to resize it with a mouse,
but it's annoying to have to do this every time, especially on Windows 10,
where the window border seems to be only one (1) pixel wide, thus making
the grabbing of the window border tricky.

Signed-off-by: James J. Raden <[email protected]>
These changes are necessary to support better Git for Windows' new
auto-update feature.

Signed-off-by: Johannes Schindelin <[email protected]>
When a third-party tool periodically runs `git status` in order to keep
track of the state of the working tree, it is a bad idea to lock the
index: it might interfere with interactive commands executed by the
user, e.g. when the user wants to commit files.

Git for Windows introduced the `--no-lock-index` option a long time ago
to fix that (it made it into Git for Windows v2.9.2(3)) by simply
avoiding to write that file.

The downside is that the periodic `git status` calls will be a little
bit more wasteful because they may have to refresh the index repeatedly,
only to throw away the updates when it exits. This cannot really be
helped, though, as tools wanting to get a periodic update of the status
have no way to predict when the user may want to lock the index herself.

Sadly, a competing approach was submitted (by somebody who apparently
has less work on their plate than this maintainer) that made it into
v2.15.0 but is *different*: instead of a `git status`-only option, it is
an option that comes *before* the Git command and is called differently,
too.

Let's give previous users a chance to upgrade to newer Git for Windows
versions by handling the `--no-lock-index` option, still, though with a
big fat warning.

Signed-off-by: Johannes Schindelin <[email protected]>
It was a bad idea to just remove that option from Git for Windows
v2.15.0, as early users of that (still experimental) option would have
been puzzled what they are supposed to do now.

So let's reintroduce the flag, but make sure to show the user good
advice how to fix this going forward.

We'll remove this option in a more orderly fashion when we're certain
that the option is no longer used (previous Visual Studio versions
relied on it).

The option is deprecated now, therefore we make sure that keeps saying
so until we finally remove it.

Signed-off-by: Johannes Schindelin <[email protected]>
The `--stdin` option was a well-established paradigm in other commands,
therefore we implemented it in `git reset` for use by Visual Studio.

Unfortunately, upstream Git decided that it is time to introduce
`--pathspec-from-file` instead.

To keep backwards-compatibility for some grace period, we therefore
reinstate the `--stdin` option on top of the `--pathspec-from-file`
option, but mark it firmly as deprecated.

Signed-off-by: Johannes Schindelin <[email protected]>
The Git project followed suite and added their Code of Conduct, based on
the Contributors' Covenant v1.4.

We edit it slightly to reflect Git for Windows' particulars.

Signed-off-by: Johannes Schindelin <[email protected]>
Getting started contributing to Git can be difficult on a Windows
machine. CONTRIBUTING.md contains a guide to getting started, including
detailed steps for setting up build tools, running tests, and
submitting patches to upstream.

[includes an example by Pratik Karki how to submit v2, v3, v4, etc.]

Signed-off-by: Derrick Stolee <[email protected]>
Includes touch-ups by Philip Oakley.

Signed-off-by: Johannes Schindelin <[email protected]>
With improvements by Clive Chan, Adric Norris, Ben Bodenmiller and
Philip Oakley.

Helped-by: Clive Chan <[email protected]>
Helped-by: Adric Norris <[email protected]>
Helped-by: Ben Bodenmiller <[email protected]>
Helped-by: Philip Oakley <[email protected]>
Signed-off-by: Brendan Forster <[email protected]>
Signed-off-by: Johannes Schindelin <[email protected]>
Git for Windows accepts pull requests; Core Git does not. Therefore we
need to adjust the template (because it only matches core Git's
project management style, not ours).

Also: direct Git for Windows enhancements to their contributions page,
space out the text for easy reading, and clarify that the mailing list
is plain text, not HTML.

Signed-off-by: Philip Oakley <[email protected]>
Signed-off-by: Johannes Schindelin <[email protected]>
The sentiment bot will help detect when things get too heated.
Hopefully.

Signed-off-by: Johannes Schindelin <[email protected]>
Rather than using private IFTTT Applets that send mails to this
maintainer whenever a new version of a Git for Windows component was
released, let's use the power of GitHub workflows to make this process
publicly visible.

This workflow monitors the Atom/RSS feeds, and opens a ticket whenever a
new version was released.

Note: Bash sometimes releases multiple patched versions within a few
minutes of each other (i.e. 5.1p1 through 5.1p4, 5.0p15 and 5.0p16). The
MSYS2 runtime also has a similar system. We can address those patches as
a group, so we shouldn't get multiple issues about them.

Note further: We're not acting on newlib releases, OpenSSL alphas, Perl
release candidates or non-stable Perl releases. There's no need to open
issues about them.

Co-authored-by: Matthias Aßhauer <[email protected]>
Signed-off-by: Johannes Schindelin <[email protected]>
@dscho dscho temporarily deployed to monitor-components October 14, 2021 08:36 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 08:36 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 08:36 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 08:36 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 08:36 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 08:36 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 08:36 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 08:36 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 08:36 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
@dscho dscho temporarily deployed to monitor-components October 14, 2021 11:28 Inactive
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.

[New git version] v2.33.1