<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/libgit2.git/src, branch ethomson/racy-diff</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>checkout: allow workdir to contain checkout target</title>
<updated>2015-06-16T21:23:12+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@microsoft.com</email>
</author>
<published>2015-06-16T21:23:12+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=892abf93157ea576fc3f2ccac118045a6a47247c'/>
<id>892abf93157ea576fc3f2ccac118045a6a47247c</id>
<content type='text'>
When checking out some file 'foo' that has been modified in the
working directory, allow the checkout to proceed (do not conflict)
if 'foo' is identical to the target of the checkout.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When checking out some file 'foo' that has been modified in the
working directory, allow the checkout to proceed (do not conflict)
if 'foo' is identical to the target of the checkout.
</pre>
</div>
</content>
</entry>
<entry>
<title>Introduce p_utimes and p_futimes</title>
<updated>2015-06-16T19:32:02+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@microsoft.com</email>
</author>
<published>2015-06-16T19:18:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=121c3171e5b4918337910250487691efa8dbbd49'/>
<id>121c3171e5b4918337910250487691efa8dbbd49</id>
<content type='text'>
Provide functionality to set the time on a filesystem entry,
using utimes or futimes on POSIX type systems or SetFileTime
on Win32.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Provide functionality to set the time on a filesystem entry,
using utimes or futimes on POSIX type systems or SetFileTime
on Win32.
</pre>
</div>
</content>
</entry>
<entry>
<title>crlf: tick the index forward to work around racy-git behaviour</title>
<updated>2015-06-16T06:40:45+00:00</updated>
<author>
<name>Carlos Martín Nieto</name>
<email>cmn@dwim.me</email>
</author>
<published>2015-06-15T12:32:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=c4e6ab5f23819c35dc0c1a0fd7f50e5a194f0d5a'/>
<id>c4e6ab5f23819c35dc0c1a0fd7f50e5a194f0d5a</id>
<content type='text'>
In order to avoid racy-git, we zero out the file size for entries with
the same timestamp as the index (or during the initial checkout). This
is the case in a couple of crlf tests, as the code is fast enough to do
everything in the same second.

As we know that we do not perform the modification just after writing
out the index, which is what this is designed to work around, tick the
mtime of the index file such that it doesn't agree with the files
anymore, and we do not zero out these entries.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In order to avoid racy-git, we zero out the file size for entries with
the same timestamp as the index (or during the initial checkout). This
is the case in a couple of crlf tests, as the code is fast enough to do
everything in the same second.

As we know that we do not perform the modification just after writing
out the index, which is what this is designed to work around, tick the
mtime of the index file such that it doesn't agree with the files
anymore, and we do not zero out these entries.
</pre>
</div>
</content>
</entry>
<entry>
<title>index: zero the size of racily-clean entries</title>
<updated>2015-06-16T06:40:45+00:00</updated>
<author>
<name>Carlos Martín Nieto</name>
<email>cmn@dwim.me</email>
</author>
<published>2015-06-15T07:55:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=316b820b6fed712d4b6fae886ba1e6c44afc6c81'/>
<id>316b820b6fed712d4b6fae886ba1e6c44afc6c81</id>
<content type='text'>
If a file entry has the same timestamp as the index itself, it is
considered racily-clean, as it may have been modified after the index
was written, but during the same second. We take extra steps to check
the contents, but this is just one part of avoiding races.

For files which do have changes but have not been updated in the index,
updating the on-disk index means updating its timestamp, which means we
would no longer recognise these entries as racy and we would trust the
timestamp to tell us whether they have changed.

In order to work around this, git zeroes out the file-size field in
entries with the same timestamp as the index in order to force the next
diff to check the contents. Do so in libgit2 as well.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If a file entry has the same timestamp as the index itself, it is
considered racily-clean, as it may have been modified after the index
was written, but during the same second. We take extra steps to check
the contents, but this is just one part of avoiding races.

For files which do have changes but have not been updated in the index,
updating the on-disk index means updating its timestamp, which means we
would no longer recognise these entries as racy and we would trust the
timestamp to tell us whether they have changed.

In order to work around this, git zeroes out the file-size field in
entries with the same timestamp as the index in order to force the next
diff to check the contents. Do so in libgit2 as well.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #3216 from dprofeta/fixTransactionVisibility</title>
<updated>2015-06-15T21:10:35+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2015-06-15T21:10:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=b93dcd4ca423cdb31262cbdc4150dfb7d2e620b7'/>
<id>b93dcd4ca423cdb31262cbdc4150dfb7d2e620b7</id>
<content type='text'>
Fix visibility of transaction symbol</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix visibility of transaction symbol</pre>
</div>
</content>
</entry>
<entry>
<title>path: remove unnecessary readdir_r usage</title>
<updated>2015-06-15T11:43:48+00:00</updated>
<author>
<name>Carlos Martín Nieto</name>
<email>cmn@dwim.me</email>
</author>
<published>2015-06-15T11:28:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=25bd0aaf20463fd9d00d882d39cb1cfec4aa6917'/>
<id>25bd0aaf20463fd9d00d882d39cb1cfec4aa6917</id>
<content type='text'>
Arguably all uses of readdir_r are unnecessary, but in this case
especially so, as the directory handle only exists within this function,
so we don't race with anybody.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Arguably all uses of readdir_r are unnecessary, but in this case
especially so, as the directory handle only exists within this function,
so we don't race with anybody.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #3171 from libgit2/cmn/link-fallback</title>
<updated>2015-06-15T08:20:58+00:00</updated>
<author>
<name>Carlos Martín Nieto</name>
<email>cmn@dwim.me</email>
</author>
<published>2015-06-15T08:20:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=2665fefa0f3af60c04b747e2f06c0d4ca6ea75f7'/>
<id>2665fefa0f3af60c04b747e2f06c0d4ca6ea75f7</id>
<content type='text'>
clone: fall back to copying when linking does not work</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
clone: fall back to copying when linking does not work</pre>
</div>
</content>
</entry>
<entry>
<title>Fix in stransport_stream.c for usage of SecCopyErrorMessageString(), which is unavailable to iOS targets.</title>
<updated>2015-06-15T08:15:57+00:00</updated>
<author>
<name>Logan Collins</name>
<email>logan@panic.com</email>
</author>
<published>2015-05-07T21:21:25+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=b224c3886924d181e2699d799826d3e631d5f90f'/>
<id>b224c3886924d181e2699d799826d3e631d5f90f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #3177 from ethomson/binary_diff</title>
<updated>2015-06-15T06:17:45+00:00</updated>
<author>
<name>Carlos Martín Nieto</name>
<email>cmn@dwim.me</email>
</author>
<published>2015-06-15T06:17:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=d4723c89d4d0f55bf6e93902b50ace6e110fee5f'/>
<id>d4723c89d4d0f55bf6e93902b50ace6e110fee5f</id>
<content type='text'>
Binary diffs: store deltas in the diff structure, include binary data in diff callbacks</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Binary diffs: store deltas in the diff structure, include binary data in diff callbacks</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #3215 from jeffhostetler/windows_leak_diriter</title>
<updated>2015-06-12T16:35:18+00:00</updated>
<author>
<name>Carlos Martín Nieto</name>
<email>cmn@dwim.me</email>
</author>
<published>2015-06-12T16:35:18+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=f2dec481189202e7b026518206b84f862a980768'/>
<id>f2dec481189202e7b026518206b84f862a980768</id>
<content type='text'>
Fix memory leak on windows in diriter.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Fix memory leak on windows in diriter.</pre>
</div>
</content>
</entry>
</feed>
