<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/gitano/libgit2.git/src/index.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>index: check for valid filemodes on add</title>
<updated>2014-05-22T14:01:02+00:00</updated>
<author>
<name>Carlos Martín Nieto</name>
<email>cmn@dwim.me</email>
</author>
<published>2014-05-22T14:01:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/gitano/libgit2.git/commit/?id=052a2ffde4d8cf0d2b07c70956631d97875ad5ec'/>
<id>052a2ffde4d8cf0d2b07c70956631d97875ad5ec</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</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>Fix some coverity-found issues</title>
<updated>2014-04-21T18:55:57+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-04-21T18:55:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/gitano/libgit2.git/commit/?id=17ef678ca543d8b56035e36039ee319c12d0d249'/>
<id>17ef678ca543d8b56035e36039ee319c12d0d249</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix race checking for existing index items</title>
<updated>2014-04-17T21:56:41+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-04-14T19:29:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/gitano/libgit2.git/commit/?id=ea642d61f9b3dd3d9e1670621198483541cf4f0d'/>
<id>ea642d61f9b3dd3d9e1670621198483541cf4f0d</id>
<content type='text'>
In the threading tests, I was still seeing a race condition where
the same item could end up being inserted multiple times into the
index.  Preserving the sorted-ness of the index outside of the
`index_insert` call fixes the issue.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In the threading tests, I was still seeing a race condition where
the same item could end up being inserted multiple times into the
index.  Preserving the sorted-ness of the index outside of the
`index_insert` call fixes the issue.
</pre>
</div>
</content>
</entry>
<entry>
<title>Attribute file cache refactor</title>
<updated>2014-04-17T21:56:41+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-04-11T05:31:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/gitano/libgit2.git/commit/?id=7d4908724fd7d4d8e096b4faf2c652ba5b77644e'/>
<id>7d4908724fd7d4d8e096b4faf2c652ba5b77644e</id>
<content type='text'>
This is a big refactoring of the attribute file cache to be a bit
simpler which in turn makes it easier to enforce a lock around any
updates to the cache so that it can be used in a threaded env.
Tons of changes to the attributes and ignores code.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a big refactoring of the attribute file cache to be a bit
simpler which in turn makes it easier to enforce a lock around any
updates to the cache so that it can be used in a threaded env.
Tons of changes to the attributes and ignores code.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix leak in git_index_conflict_cleanup</title>
<updated>2014-04-17T21:43:46+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-03-15T04:59:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/gitano/libgit2.git/commit/?id=aba6b5edbd1d1f999086669eb8e2f553af0ac300'/>
<id>aba6b5edbd1d1f999086669eb8e2f553af0ac300</id>
<content type='text'>
I introduced a leak into conflict cleanup by removing items from
inside the git_vector_remove_matching call.  This simplifies the
code to just use one common way for the two conflict cleanup APIs.

When an index has an active snapshot, removing an item can cause
an error (inserting into the deferred deletion vector), so I made
the git_index_conflict_cleanup API return an error code.  I felt
like this wasn't so bad since it is just like the other APIs.

I fixed up a couple of comments while I was changing the header.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I introduced a leak into conflict cleanup by removing items from
inside the git_vector_remove_matching call.  This simplifies the
code to just use one common way for the two conflict cleanup APIs.

When an index has an active snapshot, removing an item can cause
an error (inserting into the deferred deletion vector), so I made
the git_index_conflict_cleanup API return an error code.  I felt
like this wasn't so bad since it is just like the other APIs.

I fixed up a couple of comments while I was changing the header.
</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>Index locking and entry allocation changes</title>
<updated>2014-04-17T21:43:45+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-03-14T20:20:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/gitano/libgit2.git/commit/?id=8a2834d34173220c56bd1898397c0e6d200f327d'/>
<id>8a2834d34173220c56bd1898397c0e6d200f327d</id>
<content type='text'>
This makes the lock management on the index a little bit broader,
having a number of routines hold the lock across looking up the
item to be modified and actually making the modification.  Still
not true thread safety, but more pure index modifications are now
safe which allows the simple cases (such as starting up a diff
while index modifications are underway) safe enough to get the
snapshot without hitting allocation problems.

As part of this, I simplified the allocation of index entries to
use a flex array and just put the path at the end of the index
entry.  This makes every entry self-contained and makes it a
little easier to feel sure that pointers to strings aren't
being accidentally copied and freed while other references are
still being held.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This makes the lock management on the index a little bit broader,
having a number of routines hold the lock across looking up the
item to be modified and actually making the modification.  Still
not true thread safety, but more pure index modifications are now
safe which allows the simple cases (such as starting up a diff
while index modifications are underway) safe enough to get the
snapshot without hitting allocation problems.

As part of this, I simplified the allocation of index entries to
use a flex array and just put the path at the end of the index
entry.  This makes every entry self-contained and makes it a
little easier to feel sure that pointers to strings aren't
being accidentally copied and freed while other references are
still being held.
</pre>
</div>
</content>
</entry>
<entry>
<title>Decouple index iterator sort from index</title>
<updated>2014-04-17T21:43:45+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-02-10T21:20:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/gitano/libgit2.git/commit/?id=3b4c401a38ce912d5be8c9bf4ab1c4912a4f08bd'/>
<id>3b4c401a38ce912d5be8c9bf4ab1c4912a4f08bd</id>
<content type='text'>
This makes the index iterator honor the GIT_ITERATOR_IGNORE_CASE
and GIT_ITERATOR_DONT_IGNORE_CASE flags without modifying the
index data itself.  To take advantage of this, I had to export a
number of the internal index entry comparison functions.  I also
wrote some new tests to exercise the capability.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This makes the index iterator honor the GIT_ITERATOR_IGNORE_CASE
and GIT_ITERATOR_DONT_IGNORE_CASE flags without modifying the
index data itself.  To take advantage of this, I had to export a
number of the internal index entry comparison functions.  I also
wrote some new tests to exercise the capability.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add mutex around index entries changes</title>
<updated>2014-04-17T21:43:45+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2014-02-09T00:42:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/gitano/libgit2.git/commit/?id=dac160489bbf8de90d2f1ae152df68ded2603598'/>
<id>dac160489bbf8de90d2f1ae152df68ded2603598</id>
<content type='text'>
This surrounds any function that mutates the entries vector with
a mutex so it can be safely snapshotted.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This surrounds any function that mutates the entries vector with
a mutex so it can be safely snapshotted.
</pre>
</div>
</content>
</entry>
</feed>
