Rebase to Git v2.28.0-rc0#2742
Merged
Merged
Conversation
"git difftool" has trouble dealing with paths added to the index with the intent-to-add bit. * js/diff-files-i-t-a-fix-for-difftool: difftool -d: ensure that intent-to-add files are handled correctly diff-files --raw: show correct post-image of intent-to-add files
"git fast-export --anonymize" learned to take customized mapping to allow its users to tweak its output more usable for debugging. * jk/fast-export-anonym-alt: fast-export: use local array to store anonymized oid fast-export: anonymize "master" refname fast-export: allow seeding the anonymized mapping fast-export: add a "data" callback parameter to anonymize_str() fast-export: move global "idents" anonymize hashmap into function fast-export: use a flex array to store anonymized entries fast-export: stop storing lengths in anonymized hashmaps fast-export: tighten anonymize_mem() interface to handle only strings fast-export: store anonymized oids as hex strings fast-export: use xmemdupz() for anonymizing oids t9351: derive anonymized tree checks from original repo
The effort to avoid using test_must_fail on non-git command continues. * dl/test-must-fail-fixes-5: lib-submodule-update: pass 'test_must_fail' as an argument lib-submodule-update: prepend "git" to $command lib-submodule-update: consolidate --recurse-submodules lib-submodule-update: add space after function name
Code cleanup. * es/worktree-code-cleanup: worktree: avoid dead-code in conditional
Signed-off-by: Junio C Hamano <gitster@pobox.com>
In symdiff_prepare(), we iterate over the set of parsed objects to pick
out any symmetric differences, including the left, right, and base
elements. We assign the results into pointers in a "struct symdiff", and
then complain if we didn't find a base, like so:
sym->left = rev->pending.objects[lpos].name;
sym->right = rev->pending.objects[rpos].name;
sym->base = rev->pending.objects[basepos].name;
if (basecount == 0)
die(_("%s...%s: no merge base"), sym->left, sym->right);
But the least lines are backwards. If basecount is 0, then basepos will
be -1, and we will access memory outside of the pending array. This
isn't usually that big a deal, since we don't do anything besides a
single pointer-sized read before exiting anyway, but it does violate the
C standard, and of course memory-checking tools like ASan complain.
Let's put the basecount check first. Note that we haveto split it from
the other assignments, since the die() relies on sym->left and
sym->right having been assigned (this isn't strictly necessary, but is
easier to read than dereferencing the pending array again).
Reported-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Since 37b9dca (shallow.c: use '{commit,rollback}_shallow_file', 2020-04-22), Git knows how to reset stat-validity checks for the $GIT_DIR/shallow file, allowing it to change between a shallow and non-shallow state in the same process (e.g., in the case of 'git fetch --unshallow'). However, when $GIT_DIR/shallow changes, Git does not alter or remove any grafts (nor substituted parents) in memory. This comes up in a "git fetch --unshallow" with fetch.writeCommitGraph set to true. Ordinarily in a shallow repository (and before 37b9dca, even in this case), commit_graph_compatible() would return false, indicating that the repository should not be used to write a commit-graphs (since commit-graph files cannot represent a shallow history). But since 37b9dca, in an --unshallow operation that check succeeds. Thus even though the repository isn't shallow any longer (that is, we have all of the objects), the in-core representation of those objects still has munged parents at the shallow boundaries. When the commit-graph write proceeds, we use the incorrect parentage, producing wrong results. There are two ways for a user to work around this: either (1) set 'fetch.writeCommitGraph' to 'false', or (2) drop the commit-graph after unshallowing. One way to fix this would be to reset the parsed object pool entirely (flushing the cache and thus preventing subsequent reads from modifying their parents) after unshallowing. That would produce a problem when callers have a now-stale reference to the old pool, and so this patch implements a different approach. Instead, attach a new bit to the pool, 'substituted_parent', which indicates if the repository *ever* stored a commit which had its parents modified (i.e., the shallow boundary prior to unshallowing). This bit needs to be sticky because all reads subsequent to modifying a commit's parents are unreliable when unshallowing. Modify the check in 'commit_graph_compatible' to take this bit into account, and correctly avoid generating commit-graphs in this case, thus solving the bug. Helped-by: Derrick Stolee <dstolee@microsoft.com> Helped-by: Jonathan Nieder <jrnieder@gmail.com> Reported-by: Jay Conrod <jayconrod@google.com> Reviewed-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
The fetch.writeCommitGraph feature makes fetches write out a commit graph file for the newly downloaded pack on fetch. This improves the performance of various commands that would perform a revision walk and eventually ought to be the default for everyone. To prepare for that future, it's enabled by default for users that set feature.experimental=true to experience such future defaults. Alas, for --unshallow fetches from a shallow clone it runs into a snag: by the time Git has fetched the new objects and is writing a commit graph, it has performed a revision walk and r->parsed_objects contains information about the shallow boundary from *before* the fetch. The commit graph writing code is careful to avoid writing a commit graph file in shallow repositories, but the new state is not shallow, and the result is that from that point on, commands like "git log" make use of a newly written commit graph file representing a fictional history with the old shallow boundary. We could fix this by making the commit graph writing code more careful to avoid writing a commit graph that could have used any grafts or shallow state, but it is possible that there are other pieces of mutated state that fetch's commit graph writing code may be relying on. So disable it in the feature.experimental configuration. Google developers have been running in this configuration (by setting fetch.writeCommitGraph=false in the system config) to work around this bug since it was discovered in April. Once the fix lands, we'll enable fetch.writeCommitGraph=true again to give it some early testing before rolling out to a wider audience. In other words: - this patch only affects behavior with feature.experimental=true - it makes feature.experimental match the configuration Google has been using for the last few months, meaning it would leave users in a better tested state than without it - this should improve testing for other features guarded by feature.experimental, by making feature.experimental safer to use Reported-by: Jay Conrod <jayconrod@google.com> Helped-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
In 11179eb ("entry.c: check if file exists after checkout", 2017-10-05) we started checking the result of the lstat() call done after writing a file, to avoid writing garbage to the corresponding cache entry. However, the code skips calling lstat() if it's possible to use fstat() when it still has the file descriptor open. And when calling fstat() we don't do the same error checking. To fix that, let the callers of fstat_output() know when fstat() fails. In this case, write_entry() will try to use lstat() and properly report an error if that fails as well. Signed-off-by: Matheus Tavares <matheus.bernardino@usp.br> Signed-off-by: Junio C Hamano <gitster@pobox.com>
We don't give a "::" for the list separator, but just a single ":". This ends up rendering literally, "--apply: Use applying strategies ...". As a follow-on error, the list continuation, "+", also ends up rendering literally (because we don't have a list). This was introduced in 52eb738 ("rebase: add an --am option", 2020-02-15) and survived the rename in 10cdb9f ("rebase: rename the two primary rebase backends", 2020-02-15). Signed-off-by: Martin Ågren <martin.agren@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Doc/usage update. * cc/cat-file-usage-update: cat-file: add missing [=<format>] to usage/synopsis
The command line completion support (in contrib/) used to be prepared to work with "set -u" but recent changes got a bit more sloppy. This has been corrected. * vs/completion-with-set-u: completion: nounset mode fixes
…master "git send-email --in-reply-to=<msg>" did not use the In-Reply-To: header with the value given from the command line, and let it be overridden by the value on In-Reply-To: header in the messages being sent out (if exists). * ra/send-email-in-reply-to-from-command-line-wins: send-email: restore --in-reply-to superseding behavior
"git log -Lx,y:path --before=date" lost track of where the range should be because it didn't take the changes made by the youngest commits that are omitted from the output into account. * rs/line-log-until: revision: disable min_age optimization with line-log
Recent update to "git diff" meant as a code clean-up introduced a bug in its error handling code, which has been corrected. * ct/diff-with-merge-base-clarification: diff: check for merge bases before assigning sym->base
When "fetch.writeCommitGraph" configuration is set in a shallow repository and a fetch moves the shallow boundary, we wrote out broken commit-graph files that do not match the reality, which has been corrected. * tb/fix-persistent-shallow: commit.c: don't persist substituted parents when unshallowing
…into master "fetch.writeCommitGraph" was enabled when "feature.experimental" is asked for, but it was found to be a bit too risky even for bold folks in its current shape. The configuration has been ejected, at least for now, from the "experimental" feature set. * jn/eject-fetch-write-commit-graph-out-of-experimental: experimental: default to fetch.writeCommitGraph=false
Typofix. * ma/rebase-doc-typofix: git-rebase.txt: fix description list separator
"git checkout" failed to catch an error from fstat() after updating a path in the working tree. * mt/entry-fstat-fallback-fix: entry: check for fstat() errors after checkout
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This happens only when the corresponding commits are not exported in the current fast-export run. This can happen either when the relevant commit is already marked, or when the commit is explicitly marked as UNINTERESTING with a negative ref by another argument. This breaks fast-export basec remote helpers. Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
[PT: ensure we add an additional element to the argv array] Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de> Signed-off-by: Sverre Rabbelier <srabbelier@gmail.com>
After importing anything with fast-import, we should always let the garbage collector do its job, since the objects are written to disk inefficiently. This brings down an initial import of http://selenic.com/hg from about 230 megabytes to about 14. In the future, we may want to make this configurable on a per-remote basis, or maybe teach fast-import about it in the first place. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
On Windows, there are several categories of absolute paths. One such category starts with a backslash and is implicitly relative to the drive associated with the current working directory. Example: c: git clone https://github.com/git-for-windows/git \G4W should clone into C:\G4W. There is currently a problem with that, in that mingw_mktemp() does not expect the _wmktemp() function to prefix the absolute path with the drive prefix, and as a consequence, the resulting path does not fit into the originally-passed string buffer. The symptom is a "Result too large" error. Reported by Juan Carlos Arevalo Baeza. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
MinGit for Windows comes without `gzip` bundled inside, git-archive uses `gzip -cn` to compress tar files but for this to work, gzip needs to be present on the host system. In the next commit, we will change the gzip compression so that we no longer spawn `gzip` but let zlib perform the compression in the same process instead. In preparation for this, we consolidate all the block writes into a single function. This closes git-for-windows#1970 Signed-off-by: Rohit Ashiwal <rohit.ashiwal265@gmail.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Teach register_rename_src() to see if new file pair can simply be appended to the rename_src[] array before performing the binary search to find the proper insertion point. This is a performance optimization. This routine is called during run_diff_files in status and the caller is iterating over the sorted index, so we should expect to be able to append in the normal case. The existing insert logic is preserved so we don't have to assume that, but simply take advantage of it if possible. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
When specifying an absolute path without a drive prefix, we convert that path internally. Let's make sure that we handle that case properly, too ;-) This fixes the command git clone https://github.com/git-for-windows/git \G4W Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
On Windows, an absolute POSIX path needs to be turned into a Windows one. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
…DirectoryFile-gfw fscache: teach fscache to use NtQueryDirectoryFile
When updating the skip-worktree bits in the index to align with new values in a sparse-checkout file, Git scans the entire working directory with lstat() calls. In a sparse-checkout, many of these lstat() calls are for paths that do not exist. Enable the fscache feature during this scan. In a local test of a repo with ~2.2 million paths, updating the index with `git read-tree -m -u HEAD` with a sparse-checkout file containing only `/.gitattributes` improved from 2-3 minutes to 15-20 seconds. More work could be done to stop running lstat() calls when recursing into directories that are known to not exist.
We already avoid traversing NTFS junction points in `git clean -dfx`. With this topic branch, we do that when the FSCache is enabled, too. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This was pull request git-for-windows#1645 from ZCube/master Support windows container. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
mingw: lstat: compute correct size for symlinks
Specify symlink type in .gitattributes
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Handle Ctrl+C in Git Bash nicely Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This branch allows third-party tools to call `git status --no-lock-index` to avoid lock contention with the interactive Git usage of the actual human user. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
…ored-directory-gracefully Phase out `--show-ignored-directory` gracefully
This topic branch re-adds the deprecated --stdin/-z options to `git reset`. Those patches were overridden by a different set of options in the upstream Git project before we could propose `--stdin`. We offered this in MinGit to applications that wanted a safer way to pass lots of pathspecs to Git, and these applications will need to be adjusted. Instead of `--stdin`, `--pathspec-from-file=-` should be used, and instead of `-z`, `--pathspec-file-nul`. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Add a README.md for GitHub goodness. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
In git-for-windows#2637, we fixed a bug where symbolic links' target path sizes were recorded incorrectly in the index. The downside of this fix was that every user with tracked symbolic links in their checkouts would see them as modified in `git status`, but not in `git diff`, and only a `git add <path>` (or `git add -u`) would "fix" this. Let's do better than that: we can detect that situation and simply pretend that a symbolic link with a known bad size (or a size that just happens to be that bad size, a _very_ unlikely scenario because it would overflow our buffers due to the trailing NUL byte) means that it needs to be re-checked as if we had just checked it out. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
In git-for-windows#2637, we fixed a bug where symbolic links' target path sizes were recorded incorrectly in the index. However, we did so only in `mingw_lstat()` but not in `fscache_lstat()`. Meaning: in code paths where the FSCache feature is enabled, Git _still_ got the wrong idea if the symbolic link target's length. Let's fix this. Note: as the FSCache feature reads in whole swaths of directory entries in batch mode, even if metadata for only one of them might be required, we save the expensive `CreateFile()` call that is required to compute the symbolic link target's length to the `fscache_lstat()` call. This fixes git-for-windows#2653. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
…-for-#2637 mingw: special-case index entries for symlinks with buggy size
…e-addon-for-#2637 Fix `lstat()`'s `st_size` computation for symbolic links when FSCache is in effect
As of Git for Windows v2.27.0, there is an option to use Windows' newly-introduced Pseudo Console support. When running an interactive add operation with this support enabled, Git will receive CR/LF line endings. Therefore, let's not pretend that we are expecting Unix line endings. This fixes git-for-windows#2729 Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
In preparation for eventually switching over to `main`, let's synchronize the historical and the designated future main branch. This follows the excellent advice from https://github.com/chancancode/branch-rename/#gradual-migration Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
This change enhances `git commit --cleanup=scissors` by detecting scissors lines ending in either LF (UNIX-style) or CR/LF (DOS-style). Regression tests are included to specifically test for trailing comments after a CR/LF-terminated scissors line. Signed-off-by: Luke Bonanomi <lbonanomi@gmail.com> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
git often requests `strbuf_realpath(path + "/.git")`, where "./git" does not yet exist on disk. This causes the following to happen: 1. `mingw_strbuf_realpath()` fails 2. Non-mingw `strbuf_realpath()` does the work 3. Result of `strbuf_realpath()` is slightly different, for example it will not normalize the case of disk/folder names 4. `needs_work_tree_config()` becomes confused by these differences 5. clone adds `core.worktree` setting This in turn causes various problems, for example: 1. Repository folder can no longer be renamed/moved without breaking it 2. Using the repository on WSL (Windows Subsystem for Linux) doesn't work, because it has windows-style path saved This fixes git-for-windows#2569 Co-Authored-By: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>
git add -i: handle CR/LF line endings in the interactive input
Rationalize line endings for scissors-cleanup
…win)_clone_adds_worktree Fix problem where clone adds core.worktree due to path case differences
Member
Author
|
Range-diff: 1: e4f64f598b9b = 1: 1e7353e4ee06 t9350: point out that refs are not updated correctly
2: 46a42b84d77f = 2: a4194111cb23 transport-helper: add trailing --
3: e0f7a7bbdd23 = 3: 545fd88d920e remote-helper: check helper status after import/export
9: ac8397fc6143 = 4: 16754ca5e858 Always auto-gc after calling a fast-import transport
4: 2c3e49b9efbe = 5: acd556ca88fc mingw: demonstrate a problem with certain absolute paths
5: eb711c55bb91 = 6: 30aa0704a031 archive: replace write_or_die() calls with write_block_or_die()
10: 0ac22cffe96a = 7: e45751270cbc diffcore-rename: speed up register_rename_src
11: fcc2bd33baba = 8: f57a021b6cb9 mingw: allow absolute paths without drive prefix
12: 09cde77e4785 = 9: c30d697901a4 mingw: handle absolute paths in expand_user_path()
13: 83257ebda261 = 10: 564c95caa546 archive: avoid spawning `gzip`
14: 77c257d814bf = 11: 63d0657cd6c5 mingw: change core.fsyncObjectFiles = 1 by default
6: c869c2840a5a = 12: 6240e70f3914 gitk: prevent overly long command lines
7: 1cc0e031df24 = 13: 1eb16874ce3d clean: do not traverse mount points
15: e690af3b3b92 = 14: b0d386988740 gitk: Escape file paths before piping to git log
16: f42ffd79c61f = 15: 5532a9be8ebc clean: remove mount points when possible
17: dc9a66b26cb3 = 16: 57f43a5559c6 config.mak.uname: PCRE1 cleanup
19: 976677ac677a = 17: 6033e518572b mingw: move Git for Windows' system config where users expect it
8: b11f94ba22e4 = 18: ffc1722abcaa vcpkg_install: detect lack of Git
22: 938bd1d15361 = 19: ed8268d2ee32 config: normalize the path of the system gitconfig
18: dad1b69548e9 = 20: aadf81b4f89d vcpkg_install: add comment regarding slow network connections
25: 43f50ec43cfb = 21: 05cacbafd704 mingw: include the Python parts in the build
26: 45b8dfebb82a = 22: 00ad703153bf Config option to disable side-band-64k for transport
27: ddc5443eae18 = 23: 237c01d16173 mingw: make sure `errno` is set correctly when socket operations fail
20: 49efbd7fd7bc = 24: de99081116c3 mingw: demonstrate a `git add` issue with NTFS junctions
21: 6bc4a0dd6e28 = 25: ee8274f353bd mingw: ensure valid CTYPE
23: b1653d23d4c5 = 26: 66be58452988 strbuf_realpath(): use platform-dependent API if available
24: 36591346afdd = 27: 8f1d8a3f0718 mingw: allow `git.exe` to be used instead of the "Git wrapper"
28: 7b7f0f383548 = 28: 6d35088d04f8 mingw: do resolve symlinks in `getcwd()`
29: 917095c3a53d = 29: a50d8fc143f7 mingw: fix fatal error working on mapped network drives on Windows
30: c7afd5be4d93 = 30: c5b0e45a18ed clink.pl: fix MSVC compile script to handle libcurl-d.lib
31: b2da22b46dc9 = 31: f6cb84546bcc mingw: implement a platform-specific `strbuf_realpath()`
37: 0171b2940ffc = 32: 90c907270c59 vcxproj: unclash project directories with build outputs
38: b4ab070facca = 33: 307d6424d471 t5505/t5516: allow running without `.git/branches/` in the templates
32: a20ba9a6236c = 34: 2a750d799ffe tests: exercise the RUNTIME_PREFIX feature
33: cf5f95159736 = 35: 853878b5a925 credential.c: fix credential reading with regards to CR/LF
34: 48fd3d8bd71b = 36: 800f2816e914 http: use new "best effort" strategy for Secure Channel revoke checking
35: b5c4b1ab2e23 = 37: 4e365f78734f [fix] Gitk fails to open on a bare Git repository on Windows
36: e26c53bf6eee = 38: 37827d395d95 mingw: improve performance of mingw_unlink()
39: 642ba620469c = 39: 188f2244e50f t5505/t5516: fix white-space around redirectors
40: 98016f602640 = 40: b65aededef7e git-gui: provide question helper for retry fallback on Windows
41: a3b1444e576f = 41: 6ecf4d0c2360 git gui: set GIT_ASKPASS=git-gui--askpass if not set yet
47: ede0443ab3bc = 42: f58fd40ec258 respect core.hooksPath, falling back to .git/hooks
42: e6dbf15b2ddf = 43: fcb44872bf68 gitk: Unicode file name support
43: c3d0c25214ff = 44: 28b4b7027bd6 git-gui--askyesno: fix funny text wrapping
44: 4d3293b6e9bc = 45: 68c9c0522b46 gitk: Use an external icon file on Windows
45: 65e86bf53e9e = 46: 0945c77a8a74 git-gui--askyesno: allow overriding the window title
46: 9f0210662371 = 47: 3dd1c7c8363c gitk: fix arrow keys in input fields with Tcl/Tk >= 8.6
48: d0d2626367e1 = 48: a2c16f01384e git-gui--askyesno (mingw): use Git for Windows' icon, if available
49: e81e14d23752 = 49: e5b9e0df7bc3 gitk: make the "list references" default window width wider
59: 4c0efee9aace = 50: f758db7d9428 Allow `add -p` and `add -i` with a large number of files
61: f046dcd1788b = 51: 1e91fc405baf t3701: verify that we can add *lots* of files interactively
50: ee104b96bb83 = 52: 42f2c23ab856 Win32: make FILETIME conversion functions public
51: 8524b8279cb0 = 53: 34e5a8c37de7 Win32: dirent.c: Move opendir down
52: 07a8c0a22eb5 = 54: 5ac639096058 mingw: make the dirent implementation pluggable
53: 85390a5bb6c0 = 55: 9c5f3fe8a02e Win32: make the lstat implementation pluggable
54: aca8b17a1e7d = 56: e2c9916e792f add infrastructure for read-only file system level caches
55: 0e99f43590b2 = 57: 1f19fe1202ec mingw: add a cache below mingw's lstat and dirent implementations
56: d128dd4b0b8e = 58: 20da315e2b07 fscache: load directories only once
57: 4c731c940065 = 59: cb8185c5f3ff fscache: add key for GIT_TRACE_FSCACHE
58: a22c50cf920b = 60: 7e56403ff27b fscache: remember not-found directories
60: 8fa7520368b7 = 61: 6ec8028bd486 fscache: add a test for the dir-not-found optimization
62: 87b585816a92 = 62: cda9e9dbce6e add: use preload-index and fscache for performance
63: fe318db27d3c = 63: bd1ded03b330 dir.c: make add_excludes aware of fscache during status
64: 9c5bb0dde13f = 64: d6c5b0d4eea6 fscache: make fscache_enabled() public
65: 69cd473dc0fa = 65: a5591cd81c68 dir.c: regression fix for add_excludes with fscache
66: 3b77336696fe = 66: 6fdc593fa6b7 fetch-pack.c: enable fscache for stats under .git/objects
67: d8f4dee9f425 = 67: 4630b80af0e2 checkout.c: enable fscache for checkout again
68: 71a73b575d79 = 68: edb4041ba62d Enable the filesystem cache (fscache) in refresh_index().
69: 60990e36c18c = 69: 7ebc7bbf15ce fscache: use FindFirstFileExW to avoid retrieving the short name
70: 7f622c6f49a5 = 70: 9e4736e4989f status: disable and free fscache at the end of the status command
71: 569d59d4940b = 71: 2bc4ac0f5222 fscache: add GIT_TEST_FSCACHE support
72: 296be8bdc99e = 72: 952973e3f7e2 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.
73: 2ad2bb93baba = 73: 241ffbbcce9d fscache: add fscache hit statistics
74: ae6d1fadeaa8 = 74: e57c68039039 mem_pool: add GIT_TRACE_MEMPOOL support
75: 6377e551d210 = 75: 616c41a429c5 fscache: fscache takes an initial size
76: 2179d8ebab0e = 76: 0788ce0facb6 fscache: update fscache to be thread specific instead of global
77: 5b530192d56e = 77: c028f01d0371 fscache: teach fscache to use mempool
78: 6a5f1b1f7b90 = 78: 4cc18cd6f71c fscache: make fscache_enable() thread safe
79: 26e92b74fa82 = 79: 4d2da9071a31 fscache: teach fscache to use NtQueryDirectoryFile
80: a6ad314bca0c = 80: 3252f22be788 unpack-trees: enable fscache for sparse-checkout
81: 7bf567628be7 = 81: d96b9645c91c fscache: remember the reparse tag for each entry
82: e8262a3880d2 = 82: d27fce1345e2 fscache: implement an FSCache-aware is_mount_point()
83: c62d6ef52ce9 ! 83: b902048e9d67 clean: make use of FSCache
@@ builtin/clean.c: int cmd_clean(int argc, const char **argv, const char *prefix)
die(_("index file corrupt"));
+ enable_fscache(active_nr);
- if (!ignored)
- setup_standard_excludes(&dir);
+ pl = add_pattern_list(&dir, EXC_CMDL, "--exclude option");
+ for (i = 0; i < exclude_list.nr; i++)
@@ builtin/clean.c: int cmd_clean(int argc, const char **argv, const char *prefix)
}
}
84: 54f66b9d05fe = 84: e129a290b2cf pack-objects (mingw): demonstrate a segmentation fault with large deltas
85: ebf92b7448bb = 85: 4407376c5ae6 mingw: support long paths
86: 9d7faffe34b9 = 86: 0def528f203d Win32: fix 'lstat("dir/")' with long paths
87: 764bc4e8d378 ! 87: ecf3a34629e3 mingw: ensure that core.longPaths is handled *always*
@@ builtin/rev-parse.c: static int cmd_parseopt(int argc, const char **argv, const
## builtin/show-index.c ##
@@
- #include "builtin.h"
#include "cache.h"
#include "pack.h"
+ #include "parse-options.h"
+#include "config.h"
- static const char show_index_usage[] =
- "git show-index";
+ static const char *const show_index_usage[] = {
+ "git show-index [--object-format=<hash-algorithm>]",
@@ builtin/show-index.c: int cmd_show_index(int argc, const char **argv, const char *prefix)
+ OPT_END()
+ };
- if (argc != 1)
- usage(show_index_usage);
+ git_config(git_default_config, NULL);
- if (fread(top_index, 2 * 4, 1, stdin) != 1)
- die("unable to read header");
- if (top_index[0] == htonl(PACK_IDX_SIGNATURE)) {
+ argc = parse_options(argc, argv, prefix, show_index_options, show_index_usage, 0);
+
+ if (hash_name) {
## builtin/show-ref.c ##
@@
88: 56a6fb7f5b0d = 88: cdebb76751df mingw: Support `git_terminal_prompt` with more terminals
89: f8128062816e = 89: 72d5d3d837de compat/terminal.c: only use the Windows console if bash 'read -r' fails
90: 0ad4bcb88ef4 = 90: 611ebc7029fd mingw (git_terminal_prompt): do fall back to CONIN$/CONOUT$ method
91: a1be23ca72e6 = 91: 98930a83b1b4 Unbreak interactive GPG prompt upon signing
92: 045b952e5c4f = 92: c3a4f79fa69c mingw: disable t9020
93: 49745f77285b = 93: 68f62ec44bbb strbuf_readlink: don't call readlink twice if hint is the exact link size
94: 7f3c53a31309 ! 94: 4bfb89c21698 strbuf_readlink: support link targets that exceed PATH_MAX
@@ Commit message
Signed-off-by: Karsten Blees <blees@dcon.de>
## strbuf.c ##
-@@ strbuf.c: ssize_t strbuf_write_fd(struct strbuf *sb, int fd)
- return sb->len ? write(fd, sb->buf, sb->len) : 0;
+@@ strbuf.c: ssize_t strbuf_write(struct strbuf *sb, FILE *f)
+ return sb->len ? fwrite(sb->buf, 1, sb->len, f) : 0;
}
-#define STRBUF_MAXLINK (2*PATH_MAX)
95: c8e3ceab6971 = 95: cf718164e56f lockfile.c: use is_dir_sep() instead of hardcoded '/' checks
96: 31a833134b3b = 96: d4dd9ccd0420 Win32: don't call GetFileAttributes twice in mingw_lstat()
97: 13509868ee55 = 97: e17275172d91 Win32: implement stat() with symlink support
98: 3ee05ca26a8b = 98: 9f541505ead4 Win32: remove separate do_lstat() function
99: 9237487450f1 = 99: 1dbcc91f9da5 Win32: let mingw_lstat() error early upon problems with reparse points
100: efe9bc0cf5a5 = 100: 11841cbea88e mingw: teach fscache and dirent about symlinks
101: 181e463cc1fa = 101: 64124e1140f6 Win32: lstat(): return adequate stat.st_size for symlinks
102: a4f5623191f0 = 102: 2983f3998c90 Win32: factor out retry logic
103: 378fe88560b4 = 103: 054bbb6223ac Win32: change default of 'core.symlinks' to false
104: 207dd780846c = 104: 073cb99d5812 Win32: add symlink-specific error codes
105: 3b27e1f18567 = 105: 010f7af90934 Win32: mingw_unlink: support symlinks to directories
106: 8149ebe34a6a = 106: cf5d422c83ac Win32: mingw_rename: support renaming symlinks
107: 98b6b87b8fc2 = 107: cbd792d3b6e4 Win32: mingw_chdir: change to symlink-resolved directory
108: a1ce9f4d077c = 108: 5b75583afc71 Win32: implement readlink()
109: dd57ef167f05 = 109: 1cc99533c152 Win32: implement basic symlink() functionality (file symlinks only)
110: eb984b007560 = 110: 005176f15119 Win32: symlink: add support for symlinks to directories
111: f33384710ff9 = 111: d52c7c08b4e0 mingw: try to create symlinks without elevated permissions
112: 1c64572d1af5 = 112: 5d2654b2a50e mingw: emulate stat() a little more faithfully
126: 8d0567f4aa58 = 113: eec5a2e29692 mingw: introduce code to detect whether we're inside a Windows container
128: b4ac051b30e6 = 114: b6e8f6b6dc56 mingw: when running in a Windows container, try to rename() harder
130: 392744a90134 = 115: 42940e4c2db7 mingw: move the file_attr_to_st_mode() function definition
132: a98ad18cd617 = 116: 65018e30614b mingw: Windows Docker volumes are *not* symbolic links
113: 393ff5031d14 = 117: 9210a4ed07fa Win32: symlink: move phantom symlink creation to a separate function
114: 85b5b3b1b03a = 118: 6c66065dd5e6 Introduce helper to create symlinks that knows about index_state
115: d248026a06bc = 119: 90a669f9b00e mingw: allow to specify the symlink type in .gitattributes
116: d4073163eefd = 120: b2e2db2d58af Win32: symlink: add test for `symlink` attribute
117: 445006954a4a = 121: 863a7d8a67d2 transport-helper: prefer Git's builtins over dashed form
118: 13ac636c298a = 122: 66b14225d66b mingw: explicitly specify with which cmd to prefix the cmdline
119: bb733c8363d3 = 123: e1250d621fbb mingw: when path_lookup() failed, try BusyBox
154: 3681d27b6fc4 = 124: 5e78e92addd5 mingw: lstat: compute correct size for symlinks
120: 2e339a327d8b = 125: c2a7c0ff9900 test-lib: avoid unnecessary Perl invocation
121: fc5d0f09e981 = 126: 16b5713637e3 tests: replace mingw_test_cmp with a helper in C
122: b89a83909c77 = 127: 1cf726541660 test-tool: learn to act as a drop-in replacement for `iconv`
123: d01c0b0cdfc6 = 128: bd47a32545d9 tests(mingw): if `iconv` is unavailable, use `test-helper --iconv`
124: 505f7e6f628b = 129: 0c255e6d6137 tests: use t/diff-lib/* consistently
125: a4edfa1b8cd8 = 130: 91b22f7527c1 gitattributes: mark .png files as binary
127: 1d5e2f1f7254 = 131: 044b867a5275 tests: move test PNGs into t/diff-lib/
129: 1301d6f22718 = 132: a04663f1381b tests: only override sort & find if there are usable ones in /usr/bin/
131: 26b5bdf2e120 = 133: 1d3a3bea5ec1 tests: use the correct path separator with BusyBox
133: c3fcdaa85b96 = 134: 1dd4aaa5ecf9 mingw: only use Bash-ism `builtin pwd -W` when available
134: 73662d163658 = 135: c28386af7e7a tests (mingw): remove Bash-specific pwd option
135: 3f0e49ce7efe = 136: 6b8baa9eb978 test-lib: add BUSYBOX prerequisite
136: e4dcbcbaa485 = 137: 9bffc03c895c t0021: use Windows path when appropriate
137: bfa1d0a1d8b2 = 138: 809072a503d2 t5003: use binary file from t/diff-lib/
138: c0ed785cea9b = 139: 67444773cc23 t5532: workaround for BusyBox on Windows
139: 1f499ef97987 = 140: c8728e124277 t5605: special-case hardlink test for BusyBox-w32
140: 8c8493c61c42 = 141: aa5f27b65ad4 t5813: allow for $PWD to be a Windows path
142: 7c2d4b386a02 = 142: cc8160c8244b t9200: skip tests when $PWD contains a colon
145: 8437430f0c60 = 143: c05eec6e664d mingw: add a Makefile target to copy test artifacts
141: fb13cac38cdb = 144: 485dfcc9572e status: carry the --no-lock-index option for backwards-compatibility
143: d81816e40c15 = 145: d58fe8527f83 mingw: kill child processes in a gentler way
144: e42d68bd2d8d = 146: 95d4082e95df status: reinstate --show-ignored-directory as a deprecated option
146: 7310cd90bd81 = 147: cb26c8904ac2 mingw: really handle SIGINT
155: 6ddf97a43fd6 = 148: 44f29e4fc5cc status: verify that --show-ignored-directory prints a warning
156: 872bff637ed1 = 149: 5438f8d8c62f reset: reinstate support for the deprecated --stdin option
147: 7e9decd0a44c = 150: c92a716d01da Modify the Code of Conduct for Git for Windows
148: 9c99fb213e75 = 151: adfdb7bef014 CONTRIBUTING.md: add guide for first-time contributors
149: 91beb154f6a4 = 152: 981b9c05a9c0 README.md: Add a Windows-specific preamble
150: 38d0f6ab8b74 = 153: 299b99742676 Add an issue template
151: d2b75ac64be9 = 154: 6facc8541381 Modify the GitHub Pull Request template (to reflect Git for Windows)
152: 0a32b325427d = 155: 6375bb68a808 .github: Add configuration for the Sentiment Bot
153: 9da5406dc90d = 156: 5d08827dcb47 Document how $HOME is set on Windows
157: cb25a3c36d8a = 157: 70e339083cf7 SECURITY.md: document Git for Windows' policies
-158: 8422b5e2070c (upstream: bb0e43d8a1ae) < -: ------------ msvc: fix "REG_STARTEND" issue
159: b24ae6b81991 = 158: d393fecfef69 mingw: special-case index entries for symlinks with buggy size
160: aeb92543162d = 159: 11b58b714027 fscache: compute correct symlink size in `lstat()`
161: 3c88881ab77a ! 160: 9c87b90d1a82 Mirror master and main
@@ .github/workflows/mirror-master-and-main.yml (new)
+ runs-on: ubuntu-latest
+ steps:
+ - name: Partial clone
-+ run: git clone --bare --depth=100 --single-branch --filter=blob:none ${{ github.event.repository.html_url }} .
++ env:
++ ref: ${{ github.event.ref }}
++ run: git clone --bare --depth=100 --single-branch --branch ${ref#refs/heads/} --filter=blob:none ${{ github.event.repository.html_url }} .
+ - name: Push
+ run: |
+ git config http.https://github.com/.extraheader "Authorization: Basic $(echo -n x-access-token:${{ github.token }} | base64 --wrap=0)"
-162: a98b073ae2b9 < -: ------------ fixup! Mirror master and main
163: 912269f2229a = 161: 0b2682c33f08 git add -i: handle CR/LF line endings in the interactive input
164: d508f45ebfed = 162: c1021da8d255 commit: accept "scissors" with CR/LF line endings
165: 7598cfd0cc1b = 163: 37f9146345a4 mingw_strbuf_realpath(): handle case of non existent last path component
-166: fed6a08a5aad (upstream: feea6946a5b7) < -: ------------ diff-files: treat "i-t-a" files as "not-in-index"
-167: bc65d8424a4e (upstream: 85953a318734) < -: ------------ diff-files --raw: show correct post-image of intent-to-add files
-168: 0c87084539f5 (upstream: 3080c5098049) < -: ------------ difftool -d: ensure that intent-to-add files are handled correctly |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The usual pre-release PR to benefit from the PR builds.