<feed xmlns='http://www.w3.org/2005/Atom'>
<title>delta/libgit2.git, branch ethomson/read_prefix</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>odb_read_prefix: reset error in backends loop</title>
<updated>2017-06-12T11:56:40+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2017-06-12T11:56:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=cb3010c54a4b35e8799a157bdff4eae0378eb8db'/>
<id>cb3010c54a4b35e8799a157bdff4eae0378eb8db</id>
<content type='text'>
When looking for an object by prefix, we query all the backends so that
we can ensure that there is no ambiguity.  We need to reset the `error`
value between backends; otherwise the first backend may find an object
by prefix, but subsequent backends may not.  If we do not reset the
`error` value then it will remain at `GIT_ENOTFOUND` and `read_prefix_1`
will fail, despite having actually found an object.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When looking for an object by prefix, we query all the backends so that
we can ensure that there is no ambiguity.  We need to reset the `error`
value between backends; otherwise the first backend may find an object
by prefix, but subsequent backends may not.  If we do not reset the
`error` value then it will remain at `GIT_ENOTFOUND` and `read_prefix_1`
will fail, despite having actually found an object.
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #4262 from libgit2/ethomson/bump-v26</title>
<updated>2017-06-11T11:32:00+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2017-06-11T11:32:00+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=bd6928096d7a4c8f26b55a1e9ec710faeee7db93'/>
<id>bd6928096d7a4c8f26b55a1e9ec710faeee7db93</id>
<content type='text'>
Update version number to 0.26</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Update version number to 0.26</pre>
</div>
</content>
</entry>
<entry>
<title>Update version number to v0.26</title>
<updated>2017-06-11T11:23:34+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2017-06-11T11:23:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=2a3cc403bd5c331b1601e01d54e3f04ace52a07e'/>
<id>2a3cc403bd5c331b1601e01d54e3f04ace52a07e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>changelog: add some final 0.26 changes</title>
<updated>2017-06-11T11:21:23+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2017-06-11T11:21:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=a1b4cafde5bfd64b4599380246ae2f153818ec35'/>
<id>a1b4cafde5bfd64b4599380246ae2f153818ec35</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 #4254 from pks-t/pks/changelog-v0.26</title>
<updated>2017-06-11T09:58:35+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2017-06-11T09:58:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=29ef7d3f3bb59b1d7896d84de76b5ea93392da90'/>
<id>29ef7d3f3bb59b1d7896d84de76b5ea93392da90</id>
<content type='text'>
CHANGELOG: add various changes introduced since v0.25</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
CHANGELOG: add various changes introduced since v0.25</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #4088 from chescock/packfile-name-using-complete-hash</title>
<updated>2017-06-11T09:37:46+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2017-06-11T09:37:46+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=6f960b553b5392db0bf7435f1567b3b1cff71af1'/>
<id>6f960b553b5392db0bf7435f1567b3b1cff71af1</id>
<content type='text'>
Ensure packfiles with different contents have different names</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Ensure packfiles with different contents have different names</pre>
</div>
</content>
</entry>
<entry>
<title>Merge pull request #4260 from libgit2/ethomson/forced_checkout_2</title>
<updated>2017-06-11T08:54:04+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2017-06-11T08:54:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=d2c4f7645cab7d9ce0261d03cd7b5226cab90b63'/>
<id>d2c4f7645cab7d9ce0261d03cd7b5226cab90b63</id>
<content type='text'>
Update to forced checkout and untracked files</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Update to forced checkout and untracked files</pre>
</div>
</content>
</entry>
<entry>
<title>git_futils_rmdir: only allow `EBUSY` when asked</title>
<updated>2017-06-10T18:18:57+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2017-06-10T17:46:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=4a0df574114f331a2428278c5f72aae7a49fa214'/>
<id>4a0df574114f331a2428278c5f72aae7a49fa214</id>
<content type='text'>
Only ignore `EBUSY` from `rmdir` when the `GIT_RMDIR_SKIP_NONEMPTY` bit
is set.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Only ignore `EBUSY` from `rmdir` when the `GIT_RMDIR_SKIP_NONEMPTY` bit
is set.
</pre>
</div>
</content>
</entry>
<entry>
<title>checkout: cope with untracked files in directory deletion</title>
<updated>2017-06-10T18:16:48+00:00</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2017-06-08T21:23:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=83989d70ecd39324a9c262e75ce27b6a33cf78fc'/>
<id>83989d70ecd39324a9c262e75ce27b6a33cf78fc</id>
<content type='text'>
When deleting a directory during checkout, do not simply delete the
directory, since there may be untracked files.  Instead, go into
the iterator and examine each file.

In the original code (the code with the faulty assumption), we look to
see if there's an index entry beneath the directory that we want to
remove.   Eg, it looks to see if we have a workdir entry foo and an
index entry foo/bar.txt. If this is not the case, then the working
directory must have precious files in that directory. This part is okay.
The part that's not okay is if there is an index entry foo/bar.txt. It
just blows away the whole damned directory.

That's not cool.

Instead, by simply pushing the directory itself onto the stack and
iterating each entry, we will deal with the files one by one - whether
they're in the index (and can be force removed) or not (and are
precious).

The original code was a bad optimization, assuming that we didn't need
to git_iterator_advance_into if there was any index entry in the folder.
That's wrong - we could have optimized this iff all folder entries are
in the index.

Instead, we need to simply dig into the directory and analyze its
entries.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When deleting a directory during checkout, do not simply delete the
directory, since there may be untracked files.  Instead, go into
the iterator and examine each file.

In the original code (the code with the faulty assumption), we look to
see if there's an index entry beneath the directory that we want to
remove.   Eg, it looks to see if we have a workdir entry foo and an
index entry foo/bar.txt. If this is not the case, then the working
directory must have precious files in that directory. This part is okay.
The part that's not okay is if there is an index entry foo/bar.txt. It
just blows away the whole damned directory.

That's not cool.

Instead, by simply pushing the directory itself onto the stack and
iterating each entry, we will deal with the files one by one - whether
they're in the index (and can be force removed) or not (and are
precious).

The original code was a bad optimization, assuming that we didn't need
to git_iterator_advance_into if there was any index entry in the folder.
That's wrong - we could have optimized this iff all folder entries are
in the index.

Instead, we need to simply dig into the directory and analyze its
entries.
</pre>
</div>
</content>
</entry>
<entry>
<title>checkout: do not delete directories with untracked entries</title>
<updated>2017-06-10T18:16:08+00:00</updated>
<author>
<name>Patrick Steinhardt</name>
<email>ps@pks.im</email>
</author>
<published>2017-02-15T13:05:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.baserock.org/cgit/delta/libgit2.git/commit/?id=0ef405b3c8c0213282ef15c48462f16d03442bac'/>
<id>0ef405b3c8c0213282ef15c48462f16d03442bac</id>
<content type='text'>
If the `GIT_CHECKOUT_FORCE` flag is given to any of the `git_checkout`
invocations, we remove files which were previously staged. But while
doing so, we unfortunately also remove unstaged files in a directory
which contains at least one staged file, resulting in potential data
loss.

This commit adds two tests to verify behavior.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
If the `GIT_CHECKOUT_FORCE` flag is given to any of the `git_checkout`
invocations, we remove files which were previously staged. But while
doing so, we unfortunately also remove unstaged files in a directory
which contains at least one staged file, resulting in potential data
loss.

This commit adds two tests to verify behavior.
</pre>
</div>
</content>
</entry>
</feed>
