<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/read-cache.c, branch main</title>
<subtitle>Fork of git SCM with my patches.</subtitle>
<id>http://git.kilabit.info/git/atom?h=main</id>
<link rel='self' href='http://git.kilabit.info/git/atom?h=main'/>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/'/>
<updated>2026-04-08T17:19:18Z</updated>
<entry>
<title>Merge branch 'ng/add-files-to-cache-wo-rename'</title>
<updated>2026-04-08T17:19:18Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-04-08T17:19:17Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=d8c553bbed21761a8af3fa40a20518e210e78a0d'/>
<id>urn:sha1:d8c553bbed21761a8af3fa40a20518e210e78a0d</id>
<content type='text'>
add_files_to_cache() used diff_files() to detect only the paths that
are different between the index and the working tree and add them,
which does not need rename detection, which interfered with unnecessary
conflicts.

* ng/add-files-to-cache-wo-rename:
  read-cache: disable renames in add_files_to_cache
</content>
</entry>
<entry>
<title>read-cache: disable renames in add_files_to_cache</title>
<updated>2026-04-01T19:45:06Z</updated>
<author>
<name>Nick Golden</name>
<email>blindmansion@gmail.com</email>
</author>
<published>2026-04-01T19:00:33Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=c0ce43376b178d876bce2073b81737ce49657def'/>
<id>urn:sha1:c0ce43376b178d876bce2073b81737ce49657def</id>
<content type='text'>
add_files_to_cache() refreshes the index from worktree changes and does
not need rename detection. When unmerged entries and a deleted stage-0
path are present together, rename detection can pair them and rewrite an
unmerged diff pair to point at the deleted path.

That later makes "git commit -a" and "git add -u" try to stat the
deleted path and die with "unable to stat". Disable rename detection in
this callback-driven staging path and add a regression test covering the
crash.

Signed-off-by: Nick Golden &lt;blindmansion@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>read-cache: use istate-&gt;repo for trace2 logging</title>
<updated>2026-03-30T20:02:29Z</updated>
<author>
<name>Jayesh Daga</name>
<email>jayeshdaga99@gmail.com</email>
</author>
<published>2026-03-30T18:38:06Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=a7aca156779f6c40d454f04ed151d2f482396f0f'/>
<id>urn:sha1:a7aca156779f6c40d454f04ed151d2f482396f0f</id>
<content type='text'>
trace2 calls in read-cache.c use the global 'the_repository',
even though the relevant index_state provides an explicit
repository pointer via 'istate-&gt;repo'.

Using the global repository can result in incorrect trace2
output when multiple repository instances are in use, as
events may be attributed to the wrong repository.

Use 'istate-&gt;repo' instead to ensure correct repository
attribution.

Signed-off-by: Jayesh Daga &lt;jayeshdaga99@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'cs/add-skip-submodule-ignore-all'</title>
<updated>2026-03-09T21:36:55Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-03-09T21:36:55Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=3fe08b8fd1f7731edabeab8138547ec88d6407de'/>
<id>urn:sha1:3fe08b8fd1f7731edabeab8138547ec88d6407de</id>
<content type='text'>
"git add &lt;submodule&gt;" has been taught to honor
submodule.&lt;name&gt;.ignore that is set to "all" (and requires "git add
-f" to override it).

* cs/add-skip-submodule-ignore-all:
  Documentation: update add --force option + ignore=all config
  tests: fix existing tests when add an ignore=all submodule
  tests: t2206-add-submodule-ignored: ignore=all and add --force tests
  read-cache: submodule add need --force given ignore=all configuration
  read-cache: update add_files_to_cache take param ignored_too
</content>
</entry>
<entry>
<title>read-cache: submodule add need --force given ignore=all configuration</title>
<updated>2026-02-06T17:43:26Z</updated>
<author>
<name>Claus Schneider(Eficode)</name>
<email>claus.schneider@eficode.com</email>
</author>
<published>2026-02-06T13:22:57Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=a16c4a245acb2420bafcbd572ba9fb94b1ba5146'/>
<id>urn:sha1:a16c4a245acb2420bafcbd572ba9fb94b1ba5146</id>
<content type='text'>
Submodules configured with ignore=all are now skipped during add operations
unless overridden by --force and the submodule path is explicitly specified.

A message is printed (like ignored files) guiding the user to use the
--force flag if the user explicitly wants to update the submodule reference.

The reason for the change is to support branch tracking in submodules
with configuration `submdule.&lt;name&gt;.branch` or similar workflows where the
user is not interested in tracking each update of the sha1 in the submdule.
You can additionally set `submodule.&lt;name&gt;.ignore=all` and the `git status`
will state nothing and, with this patch, the `git add` does not either - as
the default behaviour. This patch changes the workflow to a more logical
behaviour and similar to workflow for ignored files.

The patch gives more scenarios for submodules to be used effectively with
less friction similar to the "repo" tool. A submodule can be added for many
different reasons than a hard dependency. It can be added as loosely
coupled dependencies whereas the user wants the latest based on the
configuration `submoule.&lt;name&gt;.branch`, but are not interested to track
each commit in the `super-repo`. Currently it gives friction of handling
conflicts between branches even the sha1's are fast-forward and the user
just wants the latest in any way. The user can still add a sha1 explicitly
to track updates.

Signed-off-by: Claus Schneider(Eficode) &lt;claus.schneider@eficode.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>read-cache: update add_files_to_cache take param ignored_too</title>
<updated>2026-02-06T17:43:26Z</updated>
<author>
<name>Claus Schneider(Eficode)</name>
<email>claus.schneider@eficode.com</email>
</author>
<published>2026-02-06T13:22:56Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=37196d8995ee60e08230c5d05dfd26204d604580'/>
<id>urn:sha1:37196d8995ee60e08230c5d05dfd26204d604580</id>
<content type='text'>
The ignored_too parameter is added to the function
add_files_to_cache for usage of explicit updating the index for the updated
submodule using the explicit patchspec to the submodule.

Signed-off-by: Claus Schneider(Eficode) &lt;claus.schneider@eficode.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'js/symlink-windows'</title>
<updated>2026-01-23T21:34:37Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2026-01-23T21:34:36Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=26f50ef98f78f3fb86cd4c94cd85fa09bf1221d0'/>
<id>urn:sha1:26f50ef98f78f3fb86cd4c94cd85fa09bf1221d0</id>
<content type='text'>
Upstream symbolic link support on Windows from Git-for-Windows.

* js/symlink-windows:
  mingw: special-case index entries for symlinks with buggy size
  mingw: emulate `stat()` a little more faithfully
  mingw: try to create symlinks without elevated permissions
  mingw: add support for symlinks to directories
  mingw: implement basic `symlink()` functionality (file symlinks only)
  mingw: implement `readlink()`
  mingw: allow `mingw_chdir()` to change to symlink-resolved directories
  mingw: support renaming symlinks
  mingw: handle symlinks to directories in `mingw_unlink()`
  mingw: add symlink-specific error codes
  mingw: change default of `core.symlinks` to false
  mingw: factor out the retry logic
  mingw: compute the correct size for symlinks in `mingw_lstat()`
  mingw: teach dirent about symlinks
  mingw: let `mingw_lstat()` error early upon problems with reparse points
  mingw: drop the separate `do_lstat()` function
  mingw: implement `stat()` with symlink support
  mingw: don't call `GetFileAttributes()` twice in `mingw_lstat()`
</content>
</entry>
<entry>
<title>cocci: convert parse_tree functions to repo_ variants</title>
<updated>2026-01-10T02:36:18Z</updated>
<author>
<name>René Scharfe</name>
<email>l.s.r@web.de</email>
</author>
<published>2026-01-09T21:30:21Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=ec7a16b14551fed736ecfe0a9d4f6d6f9e03be79'/>
<id>urn:sha1:ec7a16b14551fed736ecfe0a9d4f6d6f9e03be79</id>
<content type='text'>
Add and apply a semantic patch to convert calls to parse_tree() and
friends to the corresponding variant that takes a repository argument,
to allow the functions that implicitly use the_repository to be retired
once all potential in-flight topics are settled and converted as well.

The changes in .c files were generated by Coccinelle, but I fixed a
whitespace bug it would have introduced to builtin/commit.c.

Signed-off-by: René Scharfe &lt;l.s.r@web.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>mingw: special-case index entries for symlinks with buggy size</title>
<updated>2026-01-10T02:32:55Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2026-01-09T20:05:15Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=44af34bde7db9430b31a5891c3d1e6d34fefae76'/>
<id>urn:sha1:44af34bde7db9430b31a5891c3d1e6d34fefae76</id>
<content type='text'>
In https://github.com/git-for-windows/git/pull/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 &lt;path&gt;` (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 &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'bc/submodule-force-same-hash'</title>
<updated>2025-11-24T23:46:40Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2025-11-24T23:46:39Z</published>
<link rel='alternate' type='text/html' href='http://git.kilabit.info/git/commit/?id=d91d79f26d5f2fb0468f42bf5d44356dce15a414'/>
<id>urn:sha1:d91d79f26d5f2fb0468f42bf5d44356dce15a414</id>
<content type='text'>
Adding a repository that uses a different hash function is a no-no,
but "git submodule add" did nt prevent it, which has been corrected.

* bc/submodule-force-same-hash:
  read-cache: drop submodule check from add_to_cache()
  object-file: disallow adding submodules of different hash algo
</content>
</entry>
</feed>
