<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/libgit2.git/src/pack.h, branch ethomson/patch_id</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>indexer: introduce `git_packfile_close`</title>
<updated>2017-01-21T20:21:29+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@github.com</email>
</author>
<published>2017-01-21T19:51:31+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=bf339ab0ef64754dcc8e7506dd0d23629815a65a'/>
<id>bf339ab0ef64754dcc8e7506dd0d23629815a65a</id>
<content type='text'>
Encapsulation!
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Encapsulation!
</pre>
</div>
</content>
</entry>
<entry>
<title>odb: only freshen pack files every 2 seconds</title>
<updated>2016-08-04T19:12:04+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@github.com</email>
</author>
<published>2016-07-22T17:34:19+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=27051d4e3134e53096b10089654a965064a77403'/>
<id>27051d4e3134e53096b10089654a965064a77403</id>
<content type='text'>
Since writing multiple objects may all already exist in a single
packfile, avoid freshening that packfile repeatedly in a tight loop.
Instead, only freshen pack files every 2 seconds.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since writing multiple objects may all already exist in a single
packfile, avoid freshening that packfile repeatedly in a tight loop.
Instead, only freshen pack files every 2 seconds.
</pre>
</div>
</content>
</entry>
<entry>
<title>Make packfile_unpack_compressed a private API</title>
<updated>2016-01-13T03:02:38+00:00</updated>
<author>
<name>P.S.V.R</name>
<email>pmq2001@gmail.com</email>
</author>
<published>2016-01-13T03:02:38+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=b644e223aa04c49f7cc33fa1a4a26b2dbaf7aaf7'/>
<id>b644e223aa04c49f7cc33fa1a4a26b2dbaf7aaf7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Reorder some khash declarations</title>
<updated>2015-03-11T01:36:11+00:00</updated>
<author>
<name>Carlos Martín Nieto</name>
<email>cmn@dwim.me</email>
</author>
<published>2014-10-12T09:42:31+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=b63b76e0b0b658dff328e0d9e109ce040830786c'/>
<id>b63b76e0b0b658dff328e0d9e109ce040830786c</id>
<content type='text'>
Keep the definitions in the headers, while putting the declarations in
the C files. Putting the function definitions in headers causes
them to be duplicated if you include two headers with them.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Keep the definitions in the headers, while putting the declarations in
the C files. Putting the function definitions in headers causes
them to be duplicated if you include two headers with them.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove extra semicolon outside of a function</title>
<updated>2015-02-15T20:07:05+00:00</updated>
<author>
<name>Stefan Widgren</name>
<email>stefan.widgren@gmail.com</email>
</author>
<published>2015-02-15T20:07:05+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=c8e02b8776875e6372fc5eba8fc61c51f14f3392'/>
<id>c8e02b8776875e6372fc5eba8fc61c51f14f3392</id>
<content type='text'>
Without this change, compiling with gcc and pedantic generates warning:
ISO C does not allow extra ‘;’ outside of a function.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Without this change, compiling with gcc and pedantic generates warning:
ISO C does not allow extra ‘;’ outside of a function.
</pre>
</div>
</content>
</entry>
<entry>
<title>Share packs across repository instances</title>
<updated>2014-06-23T19:50:36+00:00</updated>
<author>
<name>Carlos Martín Nieto</name>
<email>cmn@dwim.me</email>
</author>
<published>2014-06-18T15:13:12+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=b3b66c57930358467395fc3a5bca87edefd25cf4'/>
<id>b3b66c57930358467395fc3a5bca87edefd25cf4</id>
<content type='text'>
Opening the same repository multiple times will currently open the same
file multiple times, as well as map the same region of the file multiple
times. This is not necessary, as the packfile data is immutable.

Instead of opening and closing packfiles directly, introduce an
indirection and allocate packfiles globally. This does mean locking on
each packfile open, but we already use this lock for the global mwindow
list so it doesn't introduce a new contention point.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Opening the same repository multiple times will currently open the same
file multiple times, as well as map the same region of the file multiple
times. This is not necessary, as the packfile data is immutable.

Instead of opening and closing packfiles directly, introduce an
indirection and allocate packfiles globally. This does mean locking on
each packfile open, but we already use this lock for the global mwindow
list so it doesn't introduce a new contention point.
</pre>
</div>
</content>
</entry>
<entry>
<title>pack: expose a cached delta base directly</title>
<updated>2014-05-13T00:48:48+00:00</updated>
<author>
<name>Carlos Martín Nieto</name>
<email>cmn@dwim.me</email>
</author>
<published>2014-05-11T01:50:34+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=a3ffbf230e454309c96961a182520a53f555d356'/>
<id>a3ffbf230e454309c96961a182520a53f555d356</id>
<content type='text'>
Instead of going through a special entry in the chain, let's pass it as
an output parameter.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instead of going through a special entry in the chain, let's pass it as
an output parameter.
</pre>
</div>
</content>
</entry>
<entry>
<title>pack: use a cache for delta bases when unpacking</title>
<updated>2014-05-09T07:40:29+00:00</updated>
<author>
<name>Carlos Martín Nieto</name>
<email>cmn@dwim.me</email>
</author>
<published>2014-05-06T21:37:28+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=a332e91c92524cc21818eadfbe723361d31dc187'/>
<id>a332e91c92524cc21818eadfbe723361d31dc187</id>
<content type='text'>
Bring back the use of the delta base cache for unpacking objects. When
generating the delta chain, we stop when we find a delta base in the
pack's cache and use that as the starting point.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Bring back the use of the delta base cache for unpacking objects. When
generating the delta chain, we stop when we find a delta base in the
pack's cache and use that as the starting point.
</pre>
</div>
</content>
</entry>
<entry>
<title>pack: unpack using a loop</title>
<updated>2014-05-09T07:40:29+00:00</updated>
<author>
<name>Carlos Martín Nieto</name>
<email>cmn@dwim.me</email>
</author>
<published>2014-05-06T17:20:33+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=2acdf4b854bf55ba2630c7342d09b136d919d6ad'/>
<id>2acdf4b854bf55ba2630c7342d09b136d919d6ad</id>
<content type='text'>
We currently make use of recursive function calls to unpack an object,
resolving the deltas as we come back down the chain. This means that we
have unbounded stack growth as we look up objects in a pack.

This is now done in two steps: first we figure out what the dependency
chain is by looking up the delta bases until we reach a non-delta
object, pushing the information we need onto a stack and then we pop
from that stack and apply the deltas until there are no more left.

This version of the code does not make use of the delta base cache so it
is slower than what's in the mainline. A later commit will reintroduce
it.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We currently make use of recursive function calls to unpack an object,
resolving the deltas as we come back down the chain. This means that we
have unbounded stack growth as we look up objects in a pack.

This is now done in two steps: first we figure out what the dependency
chain is by looking up the delta bases until we reach a non-delta
object, pushing the information we need onto a stack and then we pop
from that stack and apply the deltas until there are no more left.

This version of the code does not make use of the delta base cache so it
is slower than what's in the mainline. A later commit will reintroduce
it.
</pre>
</div>
</content>
</entry>
<entry>
<title>Drop parsing pack filename SHA1 part, no one cares the filename</title>
<updated>2014-01-23T15:28:28+00:00</updated>
<author>
<name>Linquize</name>
<email>linquize@yahoo.com.hk</email>
</author>
<published>2014-01-23T15:28:28+00:00</published>
<link rel='alternate' type='text/html' href='http://91.123.203.49/cgit/delta/libgit2.git/commit/?id=8610487cd321052d156202b7dd213add29fe6b21'/>
<id>8610487cd321052d156202b7dd213add29fe6b21</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
