<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/cache.h, branch v2.20.2</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.20.2</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.20.2'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2018-11-13T13:37:26Z</updated>
<entry>
<title>Merge branch 'bp/refresh-index-using-preload'</title>
<updated>2018-11-13T13:37:26Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-11-13T13:37:25Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=11aa560de964e800aabce446d600ab0fb4c90c20'/>
<id>urn:sha1:11aa560de964e800aabce446d600ab0fb4c90c20</id>
<content type='text'>
The helper function to refresh the cached stat information in the
in-core index has learned to perform the lstat() part of the
operation in parallel on multi-core platforms.

* bp/refresh-index-using-preload:
  refresh_index: remove unnecessary calls to preload_index()
  speed up refresh_index() by utilizing preload_index()
</content>
</entry>
<entry>
<title>Merge branch 'ao/submodule-wo-gitmodules-checked-out'</title>
<updated>2018-11-13T13:37:22Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-11-13T13:37:22Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=abb4824d13a44f68d1bbaf6726945983230771f9'/>
<id>urn:sha1:abb4824d13a44f68d1bbaf6726945983230771f9</id>
<content type='text'>
The submodule support has been updated to read from the blob at
HEAD:.gitmodules when the .gitmodules file is missing from the
working tree.

* ao/submodule-wo-gitmodules-checked-out:
  t/helper: add test-submodule-nested-repo-config
  submodule: support reading .gitmodules when it's not in the working tree
  submodule: add a helper to check if it is safe to write to .gitmodules
  t7506: clean up .gitmodules properly before setting up new scenario
  submodule: use the 'submodule--helper config' command
  submodule--helper: add a new 'config' subcommand
  t7411: be nicer to future tests and really clean things up
  t7411: merge tests 5 and 6
  submodule: factor out a config_set_in_gitmodules_file_gently function
  submodule: add a print_config_from_gitmodules() helper
</content>
</entry>
<entry>
<title>Merge branch 'js/mingw-perl5lib'</title>
<updated>2018-11-13T13:37:20Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-11-13T13:37:20Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=6c268fdda9dcc421e2bee1ce76496d3e9f96397f'/>
<id>urn:sha1:6c268fdda9dcc421e2bee1ce76496d3e9f96397f</id>
<content type='text'>
Windows fix.

* js/mingw-perl5lib:
  mingw: unset PERL5LIB by default
  config: move Windows-specific config settings into compat/mingw.c
  config: allow for platform-specific core.* config settings
  config: rename `dummy` parameter to `cb` in git_default_config()
</content>
</entry>
<entry>
<title>Merge branch 'nd/per-worktree-config'</title>
<updated>2018-11-13T13:37:18Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-11-13T13:37:18Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=8c758f9a67a265ae51beddfd9895d48a42c2af13'/>
<id>urn:sha1:8c758f9a67a265ae51beddfd9895d48a42c2af13</id>
<content type='text'>
A fourth class of configuration files (in addition to the
traditional "system wide", "per user in the $HOME directory" and
"per repository in the $GIT_DIR/config") has been introduced so
that different worktrees that share the same repository (hence the
same $GIT_DIR/config file) can use different customization.

* nd/per-worktree-config:
  worktree: add per-worktree config files
  t1300: extract and use test_cmp_config()
</content>
</entry>
<entry>
<title>Merge branch 'ag/rebase-i-in-c'</title>
<updated>2018-11-02T02:04:53Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-11-02T02:04:53Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=b49ef560ed66449d24a3fdfe25972c390bb44951'/>
<id>urn:sha1:b49ef560ed66449d24a3fdfe25972c390bb44951</id>
<content type='text'>
Rewrite of the remaining "rebase -i" machinery in C.

* ag/rebase-i-in-c:
  rebase -i: move rebase--helper modes to rebase--interactive
  rebase -i: remove git-rebase--interactive.sh
  rebase--interactive2: rewrite the submodes of interactive rebase in C
  rebase -i: implement the main part of interactive rebase as a builtin
  rebase -i: rewrite init_basic_state() in C
  rebase -i: rewrite write_basic_state() in C
  rebase -i: rewrite the rest of init_revisions_and_shortrevisions() in C
  rebase -i: implement the logic to initialize $revisions in C
  rebase -i: remove unused modes and functions
  rebase -i: rewrite complete_action() in C
  t3404: todo list with commented-out commands only aborts
  sequencer: change the way skip_unnecessary_picks() returns its result
  sequencer: refactor append_todo_help() to write its message to a buffer
  rebase -i: rewrite checkout_onto() in C
  rebase -i: rewrite setup_reflog_action() in C
  sequencer: add a new function to silence a command, except if it fails
  rebase -i: rewrite the edit-todo functionality in C
  editor: add a function to launch the sequence editor
  rebase -i: rewrite append_todo_help() in C
  sequencer: make three functions and an enum from sequencer.c public
</content>
</entry>
<entry>
<title>config: move Windows-specific config settings into compat/mingw.c</title>
<updated>2018-10-31T03:46:27Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2018-10-30T18:40:06Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=bdfbb0ea932d1ec479474cc7928ec9d47ea89e7b'/>
<id>urn:sha1:bdfbb0ea932d1ec479474cc7928ec9d47ea89e7b</id>
<content type='text'>
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>speed up refresh_index() by utilizing preload_index()</title>
<updated>2018-10-30T02:28:39Z</updated>
<author>
<name>Ben Peart</name>
<email>benpeart@microsoft.com</email>
</author>
<published>2018-10-29T20:41:59Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=99ce720c338ebeb37331bd98f724569837c74d0d'/>
<id>urn:sha1:99ce720c338ebeb37331bd98f724569837c74d0d</id>
<content type='text'>
Speed up refresh_index() by utilizing preload_index() to do most of the work
spread across multiple threads.  This works because most cache entries will
get marked CE_UPTODATE so that refresh_cache_ent() can bail out early when
called from within refresh_index().

On a Windows repo with ~200K files, this drops refresh times from 6.64
seconds to 2.87 seconds for a savings of 57%.

Signed-off-by: Ben Peart &lt;benpeart@microsoft.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'sg/split-index-racefix'</title>
<updated>2018-10-26T05:22:10Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-10-26T05:22:10Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=7a43ab6fb25924ca018073ef7ef46e16b3156bd0'/>
<id>urn:sha1:7a43ab6fb25924ca018073ef7ef46e16b3156bd0</id>
<content type='text'>
The codepath to support the experimental split-index mode had
remaining "racily clean" issues fixed.

* sg/split-index-racefix:
  split-index: BUG() when cache entry refers to non-existing shared entry
  split-index: smudge and add racily clean cache entries to split index
  split-index: don't compare cached data of entries already marked for split index
  split-index: count the number of deleted entries
  t1700-split-index: date back files to avoid racy situations
  split-index: add tests to demonstrate the racy split index problem
  t1700-split-index: document why FSMONITOR is disabled in this test script
</content>
</entry>
<entry>
<title>worktree: add per-worktree config files</title>
<updated>2018-10-22T04:17:04Z</updated>
<author>
<name>Nguyễn Thái Ngọc Duy</name>
<email>pclouds@gmail.com</email>
</author>
<published>2018-10-21T14:02:28Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=58b284a2e9123588eedc8c5ee17e8b069d9454f8'/>
<id>urn:sha1:58b284a2e9123588eedc8c5ee17e8b069d9454f8</id>
<content type='text'>
A new repo extension is added, worktreeConfig. When it is present:

 - Repository config reading by default includes $GIT_DIR/config _and_
   $GIT_DIR/config.worktree. "config" file remains shared in multiple
   worktree setup.

 - The special treatment for core.bare and core.worktree, to stay
   effective only in main worktree, is gone. These config settings are
   supposed to be in config.worktree.

This extension is most useful in multiple worktree setup because you
now have an option to store per-worktree config (which is either
.git/config.worktree for main worktree, or
.git/worktrees/xx/config.worktree for linked ones).

This extension can be used in single worktree mode, even though it's
pretty much useless (but this can happen after you remove all linked
worktrees and move back to single worktree).

"git config" reads from both "config" and "config.worktree" by default
(i.e. without either --user, --file...) when this extension is
present. Default writes still go to "config", not "config.worktree". A
new option --worktree is added for that (*).

Since a new repo extension is introduced, existing git binaries should
refuse to access to the repo (both from main and linked worktrees). So
they will not misread the config file (i.e. skip the config.worktree
part). They may still accidentally write to the config file anyway if
they use with "git config --file &lt;path&gt;".

This design places a bet on the assumption that the majority of config
variables are shared so it is the default mode. A safer move would be
default writes go to per-worktree file, so that accidental changes are
isolated.

(*) "git config --worktree" points back to "config" file when this
    extension is not present and there is only one worktree so that it
    works in any both single and multiple worktree setups.

Signed-off-by: Nguyễn Thái Ngọc Duy &lt;pclouds@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'nd/status-refresh-progress'</title>
<updated>2018-10-19T04:34:03Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2018-10-19T04:34:03Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=4d87b38e6c1a73dbe744a30b9b3cdf88e69de7b4'/>
<id>urn:sha1:4d87b38e6c1a73dbe744a30b9b3cdf88e69de7b4</id>
<content type='text'>
"git status" learns to show progress bar when refreshing the index
takes a long time.

* nd/status-refresh-progress:
  status: show progress bar if refreshing the index takes too long
</content>
</entry>
</feed>
