<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/libgit2.git, branch rb/diff-update-index-stat-cache</title>
<subtitle>github.com: libgit2/libgit2.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/'/>
<entry>
<title>Fix remaining init_options inconsistencies</title>
<updated>2014-04-30T18:16:31+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-04-30T18:16:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=8655a8985bcf2891390d464401b198d629edbfc3'/>
<id>8655a8985bcf2891390d464401b198d629edbfc3</id>
<content type='text'>
There were a couple of "init_opts()" functions a few more cases
of structure initialization that I somehow missed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There were a couple of "init_opts()" functions a few more cases
of structure initialization that I somehow missed.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make init_options fns use unsigned ints and macro</title>
<updated>2014-04-30T17:57:42+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-04-30T17:57:42+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=a4f9e1f0d41a9c78b304d3c1b8ef5270c30b208f'/>
<id>a4f9e1f0d41a9c78b304d3c1b8ef5270c30b208f</id>
<content type='text'>
Use an unsigned int for the version and add a helper macro so the
code is simplified (and so the error message is a common string).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use an unsigned int for the version and add a helper macro so the
code is simplified (and so the error message is a common string).
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove trace / add git_diff_perfdata struct + api</title>
<updated>2014-04-29T22:05:58+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-04-29T22:05:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=0064ae13ee2d432c3b15bec8284f8ab1fe4f386b'/>
<id>0064ae13ee2d432c3b15bec8284f8ab1fe4f386b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Get rid of redundant git_diff_options_init fn</title>
<updated>2014-04-29T21:30:15+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-04-29T21:30:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=9dff068ae157db37ef649d33f0a07514541dd04b'/>
<id>9dff068ae157db37ef649d33f0a07514541dd04b</id>
<content type='text'>
Since git_diff_init_options was introduced, remove this old fn.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since git_diff_init_options was introduced, remove this old fn.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add payloads, bitmaps to trace API</title>
<updated>2014-04-29T18:29:49+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-04-29T18:29:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=6f52f1ef44522fec73be3920563a1619c97543c3'/>
<id>6f52f1ef44522fec73be3920563a1619c97543c3</id>
<content type='text'>
This is a proposed adjustment to the trace APIs.  This makes the
trace levels into a bitmask so that they can be selectively enabled
and adds a callback-level payload, plus a message-level payload.

This makes it easier for me to a GIT_TRACE_PERF callbacks that
are simply bypassed if the PERF level is not set.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a proposed adjustment to the trace APIs.  This makes the
trace levels into a bitmask so that they can be selectively enabled
and adds a callback-level payload, plus a message-level payload.

This makes it easier for me to a GIT_TRACE_PERF callbacks that
are simply bypassed if the PERF level is not set.
</pre>
</div>
</content>
</entry>
<entry>
<title>Don't use trace if GIT_TRACE not defined</title>
<updated>2014-04-28T23:47:39+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-04-28T23:47:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=03bd907cd4c0a715a9c9df0de529c775fcec2ba0'/>
<id>03bd907cd4c0a715a9c9df0de529c775fcec2ba0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Add GIT_STATUS_OPT_UPDATE_INDEX and use trace API</title>
<updated>2014-04-28T23:39:53+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-04-28T23:39:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=e6336386338f0f6c49c0ad6df24661a56cd8be05'/>
<id>e6336386338f0f6c49c0ad6df24661a56cd8be05</id>
<content type='text'>
This adds an option to refresh the stat cache while generating
status.  It also rips out the GIT_PERF stuff I had an makes use
of the trace API to keep statistics about what happens during diff.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This adds an option to refresh the stat cache while generating
status.  It also rips out the GIT_PERF stuff I had an makes use
of the trace API to keep statistics about what happens during diff.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add diff option to update index stat cache</title>
<updated>2014-04-28T21:50:49+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-04-28T21:48:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=0b0f9c4a62805bf99da5e523d7c4a2c59afc2b26'/>
<id>0b0f9c4a62805bf99da5e523d7c4a2c59afc2b26</id>
<content type='text'>
When diff is scanning the working directory, if it finds a file
where it is not sure if the index entry matches the working dir,
it will recalculate the OID (which is pretty expensive).  This
adds a new flag to diff so that if the OID calculation finds that
the file actually has not changed (i.e. just the modified time was
altered or such), then it will refresh the stat cache in the index
so that future calls to diff will not have to check the oid again.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When diff is scanning the working directory, if it finds a file
where it is not sure if the index entry matches the working dir,
it will recalculate the OID (which is pretty expensive).  This
adds a new flag to diff so that if the OID calculation finds that
the file actually has not changed (i.e. just the modified time was
altered or such), then it will refresh the stat cache in the index
so that future calls to diff will not have to check the oid again.
</pre>
</div>
</content>
</entry>
<entry>
<title>Lay groundwork for updating stat cache in diff</title>
<updated>2014-04-28T21:50:49+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-04-28T21:34:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=b4ed1614b2e6ae934c18d1f25f5c3569ea0dc8e5'/>
<id>b4ed1614b2e6ae934c18d1f25f5c3569ea0dc8e5</id>
<content type='text'>
This reorganized the diff OID calculation to make it easier to
correctly update the stat cache during a diff once the flags to
do so are enabled.

This includes marking the path of a git_index_entry as const so
we can make a "fake" git_index_entry with a "const char *" path
and not get warnings.  I was a little surprised at how unobtrusive
this change was, but I think it's probably a good thing.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reorganized the diff OID calculation to make it easier to
correctly update the stat cache during a diff once the flags to
do so are enabled.

This includes marking the path of a git_index_entry as const so
we can make a "fake" git_index_entry with a "const char *" path
and not get warnings.  I was a little surprised at how unobtrusive
this change was, but I think it's probably a good thing.
</pre>
</div>
</content>
</entry>
<entry>
<title>Skip diff oid calc when size definitely changed</title>
<updated>2014-04-28T21:50:49+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-04-28T21:16:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=e94d166e79a1cffb8e7616ecc8abcb1fab2c6950'/>
<id>e94d166e79a1cffb8e7616ecc8abcb1fab2c6950</id>
<content type='text'>
When we think the stat cache in the index seems valid and the size
or mode of a file has definitely changed, then don't bother trying
to recalculate the OID of the workdir bits to confirm that it is
modified - just accept that it is modified.

This can result in files that show as modified with no actual diff,
but the behavior actually appears to match Git on the command line.

This also includes a minor optimization to not perform a submodule
lookup on the ".git" directory itself.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When we think the stat cache in the index seems valid and the size
or mode of a file has definitely changed, then don't bother trying
to recalculate the OID of the workdir bits to confirm that it is
modified - just accept that it is modified.

This can result in files that show as modified with no actual diff,
but the behavior actually appears to match Git on the command line.

This also includes a minor optimization to not perform a submodule
lookup on the ".git" directory itself.
</pre>
</div>
</content>
</entry>
</feed>
