<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/libgit2.git/src/vector.c, branch attr-export</title>
<subtitle>github.com: libgit2/libgit2.git
</subtitle>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/'/>
<entry>
<title>Ranged iterators and rewritten git_status_file</title>
<updated>2012-05-15T21:34:15+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2012-05-15T21:17:39+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=41a82592ef56a216f96558942d717af15589071d'/>
<id>41a82592ef56a216f96558942d717af15589071d</id>
<content type='text'>
The goal of this work is to rewrite git_status_file to use the
same underlying code as git_status_foreach.

This is done in 3 phases:

1. Extend iterators to allow ranged iteration with start and
   end prefixes for the range of file names to be covered.
2. Improve diff so that when there is a pathspec and there is
   a common non-wildcard prefix of the pathspec, it will use
   ranged iterators to minimize excess iteration.
3. Rewrite git_status_file to call git_status_foreach_ext
   with a pathspec that covers just the one file being checked.

Since ranged iterators underlie the status &amp; diff implementation,
this is actually fairly efficient.  The workdir iterator does
end up loading the contents of all the directories down to the
single file, which should ideally be avoided, but it is pretty
good.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The goal of this work is to rewrite git_status_file to use the
same underlying code as git_status_foreach.

This is done in 3 phases:

1. Extend iterators to allow ranged iteration with start and
   end prefixes for the range of file names to be covered.
2. Improve diff so that when there is a pathspec and there is
   a common non-wildcard prefix of the pathspec, it will use
   ranged iterators to minimize excess iteration.
3. Rewrite git_status_file to call git_status_foreach_ext
   with a pathspec that covers just the one file being checked.

Since ranged iterators underlie the status &amp; diff implementation,
this is actually fairly efficient.  The workdir iterator does
end up loading the contents of all the directories down to the
single file, which should ideally be avoided, but it is pretty
good.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix warnings on 64-bit windows builds</title>
<updated>2012-04-17T17:47:39+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>rb@github.com</email>
</author>
<published>2012-04-13T20:00:10+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=44ef8b1b300f0cd3d8572fa1b40d257462f28240'/>
<id>44ef8b1b300f0cd3d8572fa1b40d257462f28240</id>
<content type='text'>
This fixes all the warnings on win64 except those in deps, which
come from the regex code.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This fixes all the warnings on win64 except those in deps, which
come from the regex code.
</pre>
</div>
</content>
</entry>
<entry>
<title>Migrating diff to new error handling</title>
<updated>2012-03-07T00:27:13+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>arrbee@arrbee.com</email>
</author>
<published>2012-03-07T00:14:31+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=ae9e29fde7e7d1c0c3e95bdabbb5c96fc71b1c71'/>
<id>ae9e29fde7e7d1c0c3e95bdabbb5c96fc71b1c71</id>
<content type='text'>
Ended up migrating a bunch of upstream functions as well
including vector, attr_file, and odb in order to get this
to work right.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Ended up migrating a bunch of upstream functions as well
including vector, attr_file, and odb in order to get this
to work right.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update diff to use iterators</title>
<updated>2012-03-02T23:49:29+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>arrbee@arrbee.com</email>
</author>
<published>2012-02-29T00:14:47+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=74fa4bfae37e9d7c9e35550c881b114d7a83c4fa'/>
<id>74fa4bfae37e9d7c9e35550c881b114d7a83c4fa</id>
<content type='text'>
This is a major reorganization of the diff code.  This changes
the diff functions to use the iterators for traversing the
content.  This allowed a lot of code to be simplified.  Also,
this moved the functions relating to outputting a diff into a
new file (diff_output.c).

This includes a number of other changes - adding utility
functions, extending iterators, etc. plus more tests for the
diff code.  This also takes the example diff.c program much
further in terms of emulating git-diff command line options.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is a major reorganization of the diff code.  This changes
the diff functions to use the iterators for traversing the
content.  This allowed a lot of code to be simplified.  Also,
this moved the functions relating to outputting a diff into a
new file (diff_output.c).

This includes a number of other changes - adding utility
functions, extending iterators, etc. plus more tests for the
diff code.  This also takes the example diff.c program much
further in terms of emulating git-diff command line options.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix iterators based on pull request feedback</title>
<updated>2012-02-22T23:15:35+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>arrbee@arrbee.com</email>
</author>
<published>2012-02-22T23:15:35+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=0534641dfec001794ae9a83cfd1cfc7acaef97b7'/>
<id>0534641dfec001794ae9a83cfd1cfc7acaef97b7</id>
<content type='text'>
This update addresses all of the feedback in pull request #570.

The biggest change was to create actual linked list stacks for
storing the tree and workdir iterator state.  This cleaned up
the code a ton.  Additionally, all of the static functions had
their 'git_' prefix removed, and a lot of other unnecessary
changes were removed from the original patch.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This update addresses all of the feedback in pull request #570.

The biggest change was to create actual linked list stacks for
storing the tree and workdir iterator state.  This cleaned up
the code a ton.  Additionally, all of the static functions had
their 'git_' prefix removed, and a lot of other unnecessary
changes were removed from the original patch.
</pre>
</div>
</content>
</entry>
<entry>
<title>Uniform iterators for trees, index, and workdir</title>
<updated>2012-02-21T22:46:24+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>arrbee@arrbee.com</email>
</author>
<published>2012-02-21T22:46:24+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=b6c93aef4276051f9c4536ecbed48f4cd093bd1b'/>
<id>b6c93aef4276051f9c4536ecbed48f4cd093bd1b</id>
<content type='text'>
This create a new git_iterator type of object that provides a
uniform interface for iterating over the index, an arbitrary
tree, or the working directory of a repository.

As part of this, git ignore support was extended to support
push and pop of directory-based ignore files as the working
directory is being traversed (so the array of ignores does
not have to be recreated at each directory during traveral).

There are a number of other small utility functions in buffer,
path, vector, and fileops that are included in this patch
that made the iterator implementation cleaner.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This create a new git_iterator type of object that provides a
uniform interface for iterating over the index, an arbitrary
tree, or the working directory of a repository.

As part of this, git ignore support was extended to support
push and pop of directory-based ignore files as the working
directory is being traversed (so the array of ignores does
not have to be recreated at each directory during traveral).

There are a number of other small utility functions in buffer,
path, vector, and fileops that are included in this patch
that made the iterator implementation cleaner.
</pre>
</div>
</content>
</entry>
<entry>
<title>Update Copyright header</title>
<updated>2012-02-13T16:11:09+00:00</updated>
<author>
<name>schu</name>
<email>schu-github@schulog.org</email>
</author>
<published>2012-02-13T16:10:24+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=5e0de328181c6ddb55a58d4aa7c79271c5298789'/>
<id>5e0de328181c6ddb55a58d4aa7c79271c5298789</id>
<content type='text'>
Signed-off-by: schu &lt;schu-github@schulog.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: schu &lt;schu-github@schulog.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Improved gitattributes macro implementation</title>
<updated>2011-12-30T23:00:14+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>arrbee@arrbee.com</email>
</author>
<published>2011-12-30T23:00:14+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=bd370b14fefdba3844a9bf0bbf87171ca48f49be'/>
<id>bd370b14fefdba3844a9bf0bbf87171ca48f49be</id>
<content type='text'>
This updates to implementation of gitattribute macros to be much more
similar to core git (albeit not 100%) and to handle expansion of
macros within macros, etc.  It also cleans up the refcounting usage
with macros to be much cleaner.

Also, this adds a new vector function `git_vector_insert_sorted()`
which allows you to maintain a sorted list as you go.  In order to
write that function, this changes the function `git__bsearch()` to
take a somewhat different set of parameters, although the core
functionality is still the same.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This updates to implementation of gitattribute macros to be much more
similar to core git (albeit not 100%) and to handle expansion of
macros within macros, etc.  It also cleans up the refcounting usage
with macros to be much cleaner.

Also, this adds a new vector function `git_vector_insert_sorted()`
which allows you to maintain a sorted list as you go.  In order to
write that function, this changes the function `git__bsearch()` to
take a somewhat different set of parameters, although the core
functionality is still the same.
</pre>
</div>
</content>
</entry>
<entry>
<title>Add APIs for git attributes</title>
<updated>2011-12-21T00:32:58+00:00</updated>
<author>
<name>Russell Belfer</name>
<email>arrbee@arrbee.com</email>
</author>
<published>2011-12-16T18:56:43+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=ee1f0b1aed7798908d9e038b006b66f868613fc3'/>
<id>ee1f0b1aed7798908d9e038b006b66f868613fc3</id>
<content type='text'>
This adds APIs for querying git attributes.  In addition to
the new API in include/git2/attr.h, most of the action is in
src/attr_file.[hc] which contains utilities for dealing with
a single attributes file, and src/attr.[hc] which contains
the implementation of the APIs that merge all applicable
attributes files.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This adds APIs for querying git attributes.  In addition to
the new API in include/git2/attr.h, most of the action is in
src/attr_file.[hc] which contains utilities for dealing with
a single attributes file, and src/attr.[hc] which contains
the implementation of the APIs that merge all applicable
attributes files.
</pre>
</div>
</content>
</entry>
<entry>
<title>global: Properly use `git__` memory wrappers</title>
<updated>2011-10-29T02:02:36+00:00</updated>
<author>
<name>Vicent Marti</name>
<email>tanoku@gmail.com</email>
</author>
<published>2011-10-28T21:51:13+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=3286c408eccb18c525ca123383f3ebf5097441bc'/>
<id>3286c408eccb18c525ca123383f3ebf5097441bc</id>
<content type='text'>
Ensure that all memory related functions (malloc, calloc, strdup, free,
etc) are using their respective `git__` wrappers.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Ensure that all memory related functions (malloc, calloc, strdup, free,
etc) are using their respective `git__` wrappers.
</pre>
</div>
</content>
</entry>
</feed>
