<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/gitano/libgit2.git/src/checkout.c, branch replace-luagit2</title>
<subtitle>git.gitano.org.uk: libgit2.git
</subtitle>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/gitano/libgit2.git/'/>
<entry>
<title>Add filter options and ALLOW_UNSAFE</title>
<updated>2014-05-06T23:01:49+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-05-06T23:01:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/gitano/libgit2.git/commit/?id=5269008cf632efcd6a16f6160ec44244ce442400'/>
<id>5269008cf632efcd6a16f6160ec44244ce442400</id>
<content type='text'>
Diff and status do not want core.safecrlf to actually raise an
error regardless of the setting, so this extends the filter API
with an additional options flags parameter and adds a flag so that
filters can be applied with GIT_FILTER_OPT_ALLOW_UNSAFE, indicating
that unsafe filter application should be downgraded from a failure
to a warning.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Diff and status do not want core.safecrlf to actually raise an
error regardless of the setting, so this extends the filter API
with an additional options flags parameter and adds a flag so that
filters can be applied with GIT_FILTER_OPT_ALLOW_UNSAFE, indicating
that unsafe filter application should be downgraded from a failure
to a warning.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix remaining init_options inconsistencies</title>
<updated>2014-05-02T16:21:33+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/gitano/libgit2.git/commit/?id=bc91347b5894c98964a12c6637d5ca91d9723b42'/>
<id>bc91347b5894c98964a12c6637d5ca91d9723b42</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>Add diff option to update index stat cache</title>
<updated>2014-05-02T16:21:33+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/gitano/libgit2.git/commit/?id=94fb4aadc80c927a59696dc01db03f3a0629dae7'/>
<id>94fb4aadc80c927a59696dc01db03f3a0629dae7</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-05-02T16:21:33+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/gitano/libgit2.git/commit/?id=0fc8e1f6bd9a5148d3a262142e9a70126f5c3a42'/>
<id>0fc8e1f6bd9a5148d3a262142e9a70126f5c3a42</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>Add build option for diff internal statistics</title>
<updated>2014-05-02T16:21:32+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-04-28T21:04:29+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/gitano/libgit2.git/commit/?id=240f4af321612a0fe4cf01aed75a8cb44173feb8'/>
<id>240f4af321612a0fe4cf01aed75a8cb44173feb8</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Treat ignored, empty, and untracked dirs different</title>
<updated>2014-04-23T23:28:45+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-04-23T23:28:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/gitano/libgit2.git/commit/?id=219c89d19d7e18a336faa094b0c29cb7bb0d22c6'/>
<id>219c89d19d7e18a336faa094b0c29cb7bb0d22c6</id>
<content type='text'>
In the iterator, distinguish between ignores and empty directories
so that diff and status can ignore empty directories, but checkout
and stash can treat them as untracked items.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In the iterator, distinguish between ignores and empty directories
so that diff and status can ignore empty directories, but checkout
and stash can treat them as untracked items.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make checkout match diff for untracked/ignored dir</title>
<updated>2014-04-23T04:51:54+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-04-23T04:51:54+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/gitano/libgit2.git/commit/?id=37da368545b28157e625212e8009ec041cc4a4ea'/>
<id>37da368545b28157e625212e8009ec041cc4a4ea</id>
<content type='text'>
When diff finds an untracked directory, it emulates Git behavior
by looking inside the directory to see if there are any untracked
items inside it. If there are only ignored items inside the dir,
then diff considers it ignored, even if there is no direct ignore
rule for it.

Checkout was not copying this behavior - when it found an untracked
directory, it just treated it as untracked.  Unfortunately, when
combined with GIT_CHECKOUT_REMOVE_UNTRACKED, this made is seem that
checkout (and stash, which uses checkout) was removing ignored
items when you had only asked it to remove untracked ones.

This commit moves the logic for advancing past an untracked dir
while scanning for non-ignored items into an iterator helper fn,
and uses that for both diff and checkout.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When diff finds an untracked directory, it emulates Git behavior
by looking inside the directory to see if there are any untracked
items inside it. If there are only ignored items inside the dir,
then diff considers it ignored, even if there is no direct ignore
rule for it.

Checkout was not copying this behavior - when it found an untracked
directory, it just treated it as untracked.  Unfortunately, when
combined with GIT_CHECKOUT_REMOVE_UNTRACKED, this made is seem that
checkout (and stash, which uses checkout) was removing ignored
items when you had only asked it to remove untracked ones.

This commit moves the logic for advancing past an untracked dir
while scanning for non-ignored items into an iterator helper fn,
and uses that for both diff and checkout.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make stash and checkout ignore contained repos</title>
<updated>2014-04-22T22:23:43+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-04-02T19:07:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/gitano/libgit2.git/commit/?id=24d17de255caa57b01c0c758e6fc81aad493806e'/>
<id>24d17de255caa57b01c0c758e6fc81aad493806e</id>
<content type='text'>
To emulate git, stash should not remove untracked git repositories
inside the parent repo, and checkout's REMOVE_UNTRACKED should
also skip over these items.

`git stash` actually prints a warning message for these items.
That should be possible with a checkout notify callback if you
wanted to, although it would require a bit of extra logic as things
are at the moment.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
To emulate git, stash should not remove untracked git repositories
inside the parent repo, and checkout's REMOVE_UNTRACKED should
also skip over these items.

`git stash` actually prints a warning message for these items.
That should be possible with a checkout notify callback if you
wanted to, although it would require a bit of extra logic as things
are at the moment.
</pre>
</div>
</content>
</entry>
<entry>
<title>Clean up index snapshot function naming</title>
<updated>2014-04-17T21:43:46+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-03-14T20:53:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/gitano/libgit2.git/commit/?id=52bb0476a8ad462c56b1d2c68b6d5f20f947ee50'/>
<id>52bb0476a8ad462c56b1d2c68b6d5f20f947ee50</id>
<content type='text'>
Clear up some of the various "find" functions and the snapshot
API naming to be things I like more.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Clear up some of the various "find" functions and the snapshot
API naming to be things I like more.
</pre>
</div>
</content>
</entry>
<entry>
<title>Some index internals refactoring</title>
<updated>2014-04-17T21:43:45+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-02-07T22:10:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/gitano/libgit2.git/commit/?id=3dbee456564a9baf24631bfe219f81434d8fdfa6'/>
<id>3dbee456564a9baf24631bfe219f81434d8fdfa6</id>
<content type='text'>
Again, laying groundwork for some index iterator changes, this
contains a bunch of code refactorings for index internals that
should make it easier down the line to add locking around index
modifications.  Also this removes the redundant prefix_position
function and fixes some potential memory leaks.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Again, laying groundwork for some index iterator changes, this
contains a bunch of code refactorings for index internals that
should make it easier down the line to add locking around index
modifications.  Also this removes the redundant prefix_position
function and fixes some potential memory leaks.
</pre>
</div>
</content>
</entry>
</feed>
