You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This week, there have been 30 commits in the repository.
These are:
🛠️ [mingw: fix CPU reporting in git version --build-options
We cannot rely on uname -m in Git for Windows' SDK to tell us what
architecture we are compiling for, as we can compile both 32-bit and
64-bit git.exe from a 64-bit SDK, but the uname -m in that SDK will
always report x86_64.
So let's go back to our original design. And make it explicitly
Windows-specific.
Signed-off-by: Johannes Schindelin [email protected]](c6ce1b9) by dscho
🛠️ [fixup! mingw: remove obsolete IPv6-related code
We still need to ensure that sockets are initialized when calling getaddrinfo(), otherwise git:// URLs cannot be accessed.
Signed-off-by: Johannes Schindelin [email protected]](eca28c6) by dscho
🛠️ [fixup! contrib/buildsystems: add a backend for modern Visual Studio versions
The /Gm flag was deprecated, so let's not use it anymore (nor the
corresponding <MinimalRebuild> tag in the .vcxproj files).
Signed-off-by: Johannes Schindelin [email protected]](49587fd) by dscho
🛠️ [Merge pull request #1900 from tanushree27/remove-ipv6-fallback
[Outreachy] Removed ipv6 fallback](26dcaa1) by dscho
🛠️ [Merge pull request #1915 from dscho/open-in-gdb
Add a helper function to start GDB that was already attached to the current process](140e559) by dscho
🛠️ [mingw: remove obsolete IPv6-related code
To support IPv6, Git provided fall back functions for Windows versions that
did not support IPv6. However, as Git dropped support for Windows XP and
prior, those functions are not needed anymore.
Removed those fallbacks by reverting commit[1] and using the functions
directly (without 'ipv6_' prefix).
This brings substantial wins in performance because the FSCache is now
per-thread, being merged to the primary thread only at the end, so we do
not have to lock (except while merging).
Signed-off-by: Johannes Schindelin [email protected]](e1dfaac) by dscho
🛠️ [mingw: add a helper function to attach GDB to the current process
When debugging Git, the criss-cross spawning of processes can make
things quite a bit difficult, especially when a Unix shell script is
thrown in the mix that calls a git.exe that then segfaults.
To help debugging such things, we introduce the open_in_gdb() function
which can be called at a code location where the segfault happens (or as
close as one can get); This will open a new MinTTY window with a GDB
that already attached to the current process.
Inspired by Derrick Stolee.
Signed-off-by: Johannes Schindelin [email protected]](7c7e302) by dscho
🛠️ [Merge pull request #1910 from benpeart/fscache_statistics-gfw
fscache: add fscache hit statistics](c2e8fb3) by dscho
🛠️ [Merge pull request #1914 from benpeart/free-fscache-after-add-gfw
At the end of the add command, disable and free the fscache](e70ae99) by dscho
🛠️ [Merge pull request #1911 from benpeart/git_test_fscache-gfw
fscache: add GIT_TEST_FSCACHE support](5dd2e38) by dscho
🛠️ [Merge pull request #1909 from benpeart/free-fscache-after-status-gfw
status: disable and free fscache at the end of the status command](4a2faf8) by dscho
🛠️ [fscache: teach fscache to use mempool
Now that the fscache is single threaded, take advantage of the mem_pool as
the allocator to significantly reduce the cost of allocations and frees.
With the reduced cost of free, in future patches, we can start freeing the
fscache at the end of commands instead of just leaking it.
fscache: use FindFirstFileExW to avoid retrieving the short name](abb284d) by dscho
🛠️ [fscache: update fscache to be thread specific instead of global
The threading model for fscache has been to have a single, global cache.
This puts requirements on it to be thread safe so that callers like
preload-index can call it from multiple threads. This was implemented
with a single mutex and completion events which introduces contention
between the calling threads.
Simplify the threading model by making fscache thread specific. This allows
us to remove the global mutex and synchronization events entirely and instead
associate a fscache with every thread that requests one. This works well with
the current multi-threading which divides the cache entries into blocks with
a separate thread processing each block.
At the end of each worker thread, if there is a fscache on the primary
thread, merge the cached results from the worker into the primary thread
cache. This enables us to reuse the cache later especially when scanning for
untracked files.
In testing, this reduced the time spent in preload_index() by about 25% and
also reduced the CPU utilization significantly. On a repo with ~200K files,
it reduced overall status times by ~12%.
Update enable_fscache() to take an optional initial size parameter which is
used to initialize the hashmap so that it can avoid having to rehash as
additional entries are added.
Add a separate disable_fscache() macro to make the code clearer and easier
to read.
Add tracing around initializing and discarding mempools. In discard report
on the amount of memory unused in the current block to help tune setting
the initial_size.
Track fscache hits and misses for lstat and opendir requests. Reporting of
statistics is done when the cache is disabled for the last time and freed
and is only reported if GIT_TRACE_FSCACHE is set.
Sample output is:
11:33:11.836428 compat/win32/fscache.c:433 fscache: lstat 3775, opendir 263, total requests/misses 4052/269
Signed-off-by: Ben Peart [email protected]](a74290f) by benpeart
🛠️ [At the end of the add command, disable and free the fscache so that we don't
leak the memory and so that we can dump the fscache statistics.
Add support to fscache to enable running the entire test suite with the
fscache enabled.
Signed-off-by: Ben Peart [email protected]](d3cda73) by benpeart
🛠️ [status: disable and free fscache at the end of the status command
At the end of the status command, disable and free the fscache so that we
don't leak the memory and so that we can dump the fscache statistics.
Signed-off-by: Ben Peart [email protected]](ef65290) by benpeart
🛠️ [fscache: use FindFirstFileExW to avoid retrieving the short name
Use FindFirstFileExW with FindExInfoBasic to avoid forcing NTFS to look up
the short name. Also switch to a larger (64K vs 4K) buffer using
FIND_FIRST_EX_LARGE_FETCH to minimize round trips to the kernel.
In a repo with ~200K files, this drops warm cache status times from 3.19
seconds to 2.67 seconds for a 16% savings.
Fix t0001 when the current working directory differs in case from the canonical form](e323264) by dscho
🛠️ [Merge 'builtin-stash-rebase-v3'
To avoid having to play tricks as in earlier rounds, we bit the sour
apple and rebased the builtin-stash-rebase-v3 branch thicket onto the
commit starting Git for Windows' merging-rebase.
(The merging-rebase pulls in the previous branch thicket via a "fake
merge", i.e. a merge commit that does not actually apply any changes
from the merged commit history. This has the unfortunate side effect of
confusing merge into thinking that any branch that was merged into an
earlier round does not need to be merged again.)
where Git would not fall back to reading credentials from a Win32
Console when the credentials could not be read from the terminal via the
Bash hack (that is necessary to support running in a MinTTY).
This topic branch brings slightly experimental changes supporting Git
for Windows to use BusyBox-w32 to execute its shell scripts as well as
its test suite.
The test suite can be run by installing the test artifacts into a MinGit
that has busybox.exe (and using Git for Windows' SDK's Perl for now, as
the test suite requires Perl even when NO_PERL is set, go figure) by
using the install-mingit-test-artifacts Makefile target with the
DESTDIR variable pointing to the top-level directory of the MinGit
installation.
To facilitate running the test suite (without having make available,
as make.exe is not part of MinGit), this branch brings an experimental
patch to the test-run-command helper to run Git's test suite. It is
still very experimental, though: in this developer's tests it seemed
that the poll() emulation required for run_parallel_processes() to
work sometimes hiccups on Windows, causing infinite "hangs". It is also
possible that BusyBox itself has problems writing to the pipes opened by test-run-command (and merging this branch will help investigate
further). Caveat emptor.
When spawning child processes, we do want them to inherit the standard
handles so that we can talk to them. We do not want them to inherit
any other handle, as that would hold a lock to the respective files
(preventing them from being renamed, modified or deleted), and the child
process would not know how to access that handle anyway.
Happily, there is an API to make that happen. It is supported in Windows
Vista and later, which is exactly what we promise to support in Git for
Windows for the time being.
This also means that we lift, at long last, the target Windows version
from Windows XP to Windows Vista.
🚀 v2.19.2.windows.1 Git for Windows 2.19.2
Changes since Git for Windows v2.19.1 (Oct 5th 2018)
Please note: Git CMD is deprecated as of this Git for Windows version. The default is to have git.exe in the PATH anyway, so there is no noticeable difference between CMD and Git CMD. It is impossible to turn off CMD's behavior where it picks up any git.exe in the current directory, so let's discourage the use of Git CMD. Users who dislike Git Bash should switch to Powershell instead.
Here's the Weekly Digest for git-for-windows/git:
ISSUES
This week, 27 issues were created. Of these, 22 issues have been closed and 5 issues are still open.
OPEN ISSUES
💚 #1944 Cannot init a git repository because I do not have access to one folder in the specified path: fatal: unable to get current working directory: No such file or directory, by rvignolo
💚 #1940 fscache: 3 tests in t7063-status-untracked-cache.sh fail with fscache enabled, by benpeart
💚 #1934 fscache: make fscache_enable() thread safe, by benpeart
💚 #1912 Feature Request: Supported way to use Git for Windows with full MSYS2 features, by MikeBeaton
💚 #1666 mingw: Fix unlink for open files, by orgads
CLOSED ISSUES
❤️ #1949 can not fetch from git://, by eworm-de
❤️ #1948 Where does installer store default core.autocrlf value?, by mloskot
❤️ #1947 Installer 2.19.2 does not offer experimental options, by mloskot
❤️ #1946 Windows git-worktree cannot read the /c/path syntax (a worktree created by cygwin git), by lefth
❤️ #1945 An idea to prevent CMD from picking up any git.exe in the current directory, by gdh1995
❤️ #1943 add release notes to published RC releases , by shiftkey
❤️ #1942 Git Bash 2.20.0-rc0 opens two consoles, by mloskot
❤️ #1941 sources for xxd, by antmak
❤️ #1939 [DO NOT MERGE YET] Rebase to v2.20.0-rc0, by dscho
❤️ #1938 Clean up before 2.20.0 rc0, by dscho
❤️ #1937 fscache: teach fscache to use NtQueryDirectoryFile, by benpeart
❤️ #1936 Update
ready-for-upstream
, by dscho❤️ #1930 Spurious Carriage Return breaks diff tool, by stravant
❤️ #1905 Git failed when build on /std:c++latest + MSVC on windows, by QuellaZhang
❤️ #1899 git not working after setting http.sslBackend = schannel, by tianpomin
❤️ #1895 Git clone of curl repository stuck inside Windows container, by mback2k
❤️ #1894 [Good First Contribution] remove pre-XP fall-back for IPv6 functions, by dscho
❤️ #1891 [Outreachy] New test in t3903-stash.sh : execute git stash without author, by slavicaDj
❤️ #1888 Take 2: ci(mingw): speed up, by disabling the chain lint, by dscho
❤️ #1691 Please upgrade to OpenSSL to 1.1.0, by skid9000
❤️ #1416 File is always marked as modified in git status, by geotavros
❤️ #1074 Install fails when previous installation drive is missing, by kc22033
LIKED ISSUE
The issue most liked this week has been:
👍 #1939 [DO NOT MERGE YET] Rebase to v2.20.0-rc0, by dscho
It received 👍 x1, 😄 x0, 🎉 x0 and ❤️ x0.
NOISY ISSUE
The issue most discussed this week has been:
🔈 #1666 mingw: Fix unlink for open files, by orgads
It received 25 comments.
PULL REQUESTS
This week, 4 pull requests were proposed. Of these, 0 pull requests have been merged and 0 are still open.
CONTRIBUTORS
This week, 19 users have contributed to this repository.
They are eworm-de, mloskot, lefth, gdh1995, rvignolo, shiftkey, antmak, benpeart, dscho, stravant, MikeBeaton, QuellaZhang, tianpomin, mback2k, slavicaDj, skid9000, orgads, geotavros, and kc22033.
STARGAZERS
This week, no user has starred this repository.
COMMITS
This week, there have been 30 commits in the repository.
These are:
🛠️ [mingw: fix CPU reporting in
git version --build-options
We cannot rely on
uname -m
in Git for Windows' SDK to tell us whatarchitecture we are compiling for, as we can compile both 32-bit and
64-bit
git.exe
from a 64-bit SDK, but theuname -m
in that SDK willalways report
x86_64
.So let's go back to our original design. And make it explicitly
Windows-specific.
Signed-off-by: Johannes Schindelin [email protected]](c6ce1b9) by dscho
🛠️ [fixup! mingw: remove obsolete IPv6-related code
We still need to ensure that sockets are initialized when calling
getaddrinfo()
, otherwise git:// URLs cannot be accessed.This fixes #1949.
Signed-off-by: Johannes Schindelin [email protected]](eca28c6) by dscho
🛠️ [fixup! contrib/buildsystems: add a backend for modern Visual Studio versions
The
/Gm
flag was deprecated, so let's not use it anymore (nor thecorresponding
<MinimalRebuild>
tag in the.vcxproj
files).This fixes #1905.
Signed-off-by: Johannes Schindelin [email protected]](49587fd) by dscho
🛠️ [Merge pull request #1900 from tanushree27/remove-ipv6-fallback
[Outreachy] Removed ipv6 fallback](26dcaa1) by dscho
🛠️ [Merge pull request #1915 from dscho/open-in-gdb
Add a helper function to start GDB that was already attached to the current process](140e559) by dscho
🛠️ [mingw: remove obsolete IPv6-related code
To support IPv6, Git provided fall back functions for Windows versions that
did not support IPv6. However, as Git dropped support for Windows XP and
prior, those functions are not needed anymore.
Removed those fallbacks by reverting commit[1] and using the functions
directly (without 'ipv6_' prefix).
[1] fe3b2b7.
Signed-off-by: tanushree27 [email protected]](c495a46) by tanushree27
🛠️ [Merge remote-tracking branch 'benpeart/fscache-per-thread-gfw'
This brings substantial wins in performance because the FSCache is now
per-thread, being merged to the primary thread only at the end, so we do
not have to lock (except while merging).
Signed-off-by: Johannes Schindelin [email protected]](e1dfaac) by dscho
🛠️ [mingw: add a helper function to attach GDB to the current process
When debugging Git, the criss-cross spawning of processes can make
things quite a bit difficult, especially when a Unix shell script is
thrown in the mix that calls a
git.exe
that then segfaults.To help debugging such things, we introduce the
open_in_gdb()
functionwhich can be called at a code location where the segfault happens (or as
close as one can get); This will open a new MinTTY window with a GDB
that already attached to the current process.
Inspired by Derrick Stolee.
Signed-off-by: Johannes Schindelin [email protected]](7c7e302) by dscho
🛠️ [Merge pull request #1910 from benpeart/fscache_statistics-gfw
fscache: add fscache hit statistics](c2e8fb3) by dscho
🛠️ [Merge pull request #1914 from benpeart/free-fscache-after-add-gfw
At the end of the add command, disable and free the fscache](e70ae99) by dscho
🛠️ [Merge pull request #1911 from benpeart/git_test_fscache-gfw
fscache: add GIT_TEST_FSCACHE support](5dd2e38) by dscho
🛠️ [Merge pull request #1909 from benpeart/free-fscache-after-status-gfw
status: disable and free fscache at the end of the status command](4a2faf8) by dscho
🛠️ [fscache: teach fscache to use mempool
Now that the fscache is single threaded, take advantage of the mem_pool as
the allocator to significantly reduce the cost of allocations and frees.
With the reduced cost of free, in future patches, we can start freeing the
fscache at the end of commands instead of just leaking it.
Signed-off-by: Ben Peart [email protected]](300d90d) by benpeart
🛠️ [Merge pull request #1908 from benpeart/FindFirstFileEx-gfw
fscache: use FindFirstFileExW to avoid retrieving the short name](abb284d) by dscho
🛠️ [fscache: update fscache to be thread specific instead of global
The threading model for fscache has been to have a single, global cache.
This puts requirements on it to be thread safe so that callers like
preload-index can call it from multiple threads. This was implemented
with a single mutex and completion events which introduces contention
between the calling threads.
Simplify the threading model by making fscache thread specific. This allows
us to remove the global mutex and synchronization events entirely and instead
associate a fscache with every thread that requests one. This works well with
the current multi-threading which divides the cache entries into blocks with
a separate thread processing each block.
At the end of each worker thread, if there is a fscache on the primary
thread, merge the cached results from the worker into the primary thread
cache. This enables us to reuse the cache later especially when scanning for
untracked files.
In testing, this reduced the time spent in preload_index() by about 25% and
also reduced the CPU utilization significantly. On a repo with ~200K files,
it reduced overall status times by ~12%.
Signed-off-by: Ben Peart [email protected]](950bfe2) by benpeart
🛠️ [fscache: fscache takes an initial size
Update enable_fscache() to take an optional initial size parameter which is
used to initialize the hashmap so that it can avoid having to rehash as
additional entries are added.
Add a separate disable_fscache() macro to make the code clearer and easier
to read.
Signed-off-by: Ben Peart [email protected]](fdb28f0) by benpeart
🛠️ [mem_pool: add GIT_TRACE_MEMPOOL support
Add tracing around initializing and discarding mempools. In discard report
on the amount of memory unused in the current block to help tune setting
the initial_size.
Signed-off-by: Ben Peart [email protected]](824ea00) by benpeart
🛠️ [fscache: add fscache hit statistics
Track fscache hits and misses for lstat and opendir requests. Reporting of
statistics is done when the cache is disabled for the last time and freed
and is only reported if GIT_TRACE_FSCACHE is set.
Sample output is:
11:33:11.836428 compat/win32/fscache.c:433 fscache: lstat 3775, opendir 263, total requests/misses 4052/269
Signed-off-by: Ben Peart [email protected]](a74290f) by benpeart
🛠️ [At the end of the add command, disable and free the fscache so that we don't
leak the memory and so that we can dump the fscache statistics.
Signed-off-by: Ben Peart [email protected]](4186785) by benpeart
🛠️ [fscache: add GIT_TEST_FSCACHE support
Add support to fscache to enable running the entire test suite with the
fscache enabled.
Signed-off-by: Ben Peart [email protected]](d3cda73) by benpeart
🛠️ [status: disable and free fscache at the end of the status command
At the end of the status command, disable and free the fscache so that we
don't leak the memory and so that we can dump the fscache statistics.
Signed-off-by: Ben Peart [email protected]](ef65290) by benpeart
🛠️ [fscache: use FindFirstFileExW to avoid retrieving the short name
Use FindFirstFileExW with FindExInfoBasic to avoid forcing NTFS to look up
the short name. Also switch to a larger (64K vs 4K) buffer using
FIND_FIRST_EX_LARGE_FETCH to minimize round trips to the kernel.
In a repo with ~200K files, this drops warm cache status times from 3.19
seconds to 2.67 seconds for a 16% savings.
Signed-off-by: Ben Peart [email protected]](807bced) by benpeart
🛠️ [Merge pull request #1859 from dscho/funny-cased-cwd
Fix t0001 when the current working directory differs in case from the canonical form](e323264) by dscho
🛠️ [Merge 'builtin-stash-rebase-v3'
To avoid having to play tricks as in earlier rounds, we bit the sour
apple and rebased the
builtin-stash-rebase-v3
branch thicket onto thecommit starting Git for Windows' merging-rebase.
(The merging-rebase pulls in the previous branch thicket via a "fake
merge", i.e. a merge commit that does not actually apply any changes
from the merged commit history. This has the unfortunate side effect of
confusing
merge
into thinking that any branch that was merged into anearlier round does not need to be merged again.)
Signed-off-by: Johannes Schindelin [email protected]](e3afc4e) by jamill
🛠️ [Merge 'readme' into HEAD
Add a README.md for GitHub goodness.
Signed-off-by: Johannes Schindelin [email protected]](01d9499) by dscho
🛠️ [Merge branch 'fix-terminal-prompt'
This fixes the issue identified in
where Git would not fall back to reading credentials from a Win32
Console when the credentials could not be read from the terminal via the
Bash hack (that is necessary to support running in a MinTTY).
Tested in a Powershell window.
Signed-off-by: Johannes Schindelin [email protected]](811a963) by dscho
🛠️ [Merge branch 'busybox-w32'
This topic branch brings slightly experimental changes supporting Git
for Windows to use BusyBox-w32 to execute its shell scripts as well as
its test suite.
The test suite can be run by installing the test artifacts into a MinGit
that has busybox.exe (and using Git for Windows' SDK's Perl for now, as
the test suite requires Perl even when NO_PERL is set, go figure) by
using the
install-mingit-test-artifacts
Makefile target with theDESTDIR variable pointing to the top-level directory of the MinGit
installation.
To facilitate running the test suite (without having
make
available,as
make.exe
is not part of MinGit), this branch brings an experimentalpatch to the
test-run-command
helper to run Git's test suite. It isstill very experimental, though: in this developer's tests it seemed
that the
poll()
emulation required forrun_parallel_processes()
towork sometimes hiccups on Windows, causing infinite "hangs". It is also
possible that BusyBox itself has problems writing to the pipes opened by
test-run-command
(and merging this branch will help investigatefurther). Caveat emptor.
Signed-off-by: Johannes Schindelin [email protected]](8195f9a) by dscho
🛠️ [Merge branch 'inherit-only-stdhandles'
When spawning child processes, we do want them to inherit the standard
handles so that we can talk to them. We do not want them to inherit
any other handle, as that would hold a lock to the respective files
(preventing them from being renamed, modified or deleted), and the child
process would not know how to access that handle anyway.
Happily, there is an API to make that happen. It is supported in Windows
Vista and later, which is exactly what we promise to support in Git for
Windows for the time being.
This also means that we lift, at long last, the target Windows version
from Windows XP to Windows Vista.
Signed-off-by: Johannes Schindelin [email protected]](b36526f) by dscho
🛠️ [Merge pull request #1170 from dscho/mingw-kill-process
Handle Ctrl+C in Git Bash nicely
Signed-off-by: Johannes Schindelin [email protected]](6420432) by dscho
🛠️ [Merge branch 'fsync-object-files-always'
Signed-off-by: Johannes Schindelin [email protected]](b70f81d) by dscho
RELEASES
This week, 3 releases were published. These are:
🚀 v2.20.0-rc1.windows.1 v2.20.0-rc1.windows.1
Pre-release: Git v2.20.0-rc1.windows.1
🚀 v2.19.2.windows.1 Git for Windows 2.19.2
Changes since Git for Windows v2.19.1 (Oct 5th 2018)
Please note: Git CMD is deprecated as of this Git for Windows version. The default is to have
git.exe
in thePATH
anyway, so there is no noticeable difference between CMD and Git CMD. It is impossible to turn off CMD's behavior where it picks up anygit.exe
in the current directory, so let's discourage the use of Git CMD. Users who dislike Git Bash should switch to Powershell instead.New Features
core.editor
..gitattributes
.git status
faster in large repositories.Bug Fixes
pack.packSizeLimit
.That's all for this week, please watch 👀 and star ⭐ git-for-windows/git to receive next weekly updates. 😃
The text was updated successfully, but these errors were encountered: