<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/cache.h, branch v2.0.2</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.0.2</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.0.2'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2014-06-25T18:49:48Z</updated>
<entry>
<title>Merge branch 'ym/fix-opportunistic-index-update-race' into maint</title>
<updated>2014-06-25T18:49:48Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-06-25T18:49:48Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=1881d2b88c4b889dcb95782ad4bc5395808438e9'/>
<id>urn:sha1:1881d2b88c4b889dcb95782ad4bc5395808438e9</id>
<content type='text'>
"git status", even though it is a read-only operation, tries to
update the index with refreshed lstat(2) info to optimize future
accesses to the working tree opportunistically, but this could
race with a "read-write" operation that modify the index while it
is running.  Detect such a race and avoid overwriting the index.

* ym/fix-opportunistic-index-update-race:
  read-cache.c: verify index file before we opportunistically update it
  wrapper.c: add xpread() similar to xread()
</content>
</entry>
<entry>
<title>read-cache.c: verify index file before we opportunistically update it</title>
<updated>2014-04-10T19:27:58Z</updated>
<author>
<name>Yiannis Marangos</name>
<email>yiannis.marangos@gmail.com</email>
</author>
<published>2014-04-10T18:31:21Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=426ddeead6112955dfb50ccf9bb4af05d1ca9082'/>
<id>urn:sha1:426ddeead6112955dfb50ccf9bb4af05d1ca9082</id>
<content type='text'>
Before we proceed to opportunistically update the index (often done
by an otherwise read-only operation like "git status" and "git diff"
that internally refreshes the index), we must verify that the
current index file is the same as the one that we read earlier
before we took the lock on it, in order to avoid a possible race.

In the example below git-status does "opportunistic update" and
git-rebase updates the index, but the race can happen in general.

  1. process A calls git-rebase (or does anything that uses the index)

  2. process A applies 1st commit

  3. process B calls git-status (or does anything that updates the index)

  4. process B reads index

  5. process A applies 2nd commit

  6. process B takes the lock, then overwrites process A's changes.

  7. process A applies 3rd commit

As an end result the 3rd commit will have a revert of the 2nd commit.
When process B takes the lock, it needs to make sure that the index
hasn't changed since step 4.

Signed-off-by: Yiannis Marangos &lt;yiannis.marangos@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'nd/tag-version-sort'</title>
<updated>2014-03-21T19:47:39Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-03-21T19:47:38Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=b6de0c633e60424d8d7e31a6557854683f2e4e43'/>
<id>urn:sha1:b6de0c633e60424d8d7e31a6557854683f2e4e43</id>
<content type='text'>
Allow v1.9.0 sorted before v1.10.0 in "git tag --list" output.

* nd/tag-version-sort:
  tag: support --sort=&lt;spec&gt;
</content>
</entry>
<entry>
<title>Merge branch 'mh/replace-refs-variable-rename'</title>
<updated>2014-03-14T21:27:06Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-03-14T21:27:06Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=3e30cb0fbf83fd35c70e9697ba8871420d9fed0a'/>
<id>urn:sha1:3e30cb0fbf83fd35c70e9697ba8871420d9fed0a</id>
<content type='text'>
* mh/replace-refs-variable-rename:
  Document some functions defined in object.c
  Add docstrings for lookup_replace_object() and do_lookup_replace_object()
  rename read_replace_refs to check_replace_refs
</content>
</entry>
<entry>
<title>Merge branch 'mh/object-code-cleanup'</title>
<updated>2014-03-14T21:26:29Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-03-14T21:26:29Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=060be00621dbac572ac71d07ae40884e0d4303f3'/>
<id>urn:sha1:060be00621dbac572ac71d07ae40884e0d4303f3</id>
<content type='text'>
* mh/object-code-cleanup:
  sha1_file.c: document a bunch of functions defined in the file
  sha1_file_name(): declare to return a const string
  find_pack_entry(): document last_found_pack
  replace_object: use struct members instead of an array
</content>
</entry>
<entry>
<title>Merge branch 'jk/commit-dates-parsing-fix'</title>
<updated>2014-03-14T21:25:44Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-03-14T21:25:44Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=3c83b080e4dce42d0f48d28b03691ae1ac0dcde3'/>
<id>urn:sha1:3c83b080e4dce42d0f48d28b03691ae1ac0dcde3</id>
<content type='text'>
Tighten codepaths that parse timestamps in commit objects.

* jk/commit-dates-parsing-fix:
  show_ident_date: fix tz range check
  log: do not segfault on gmtime errors
  log: handle integer overflow in timestamps
  date: check date overflow against time_t
  fsck: report integer overflow in author timestamps
  t4212: test bogus timestamps with git-log
</content>
</entry>
<entry>
<title>Merge branch 'ks/config-file-stdin'</title>
<updated>2014-03-14T21:24:40Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-03-14T21:24:40Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=08f36302b5d04cf06a35acc91689b0278cbf6a73'/>
<id>urn:sha1:08f36302b5d04cf06a35acc91689b0278cbf6a73</id>
<content type='text'>
"git config" learned to read from the standard input when "-" is
given as the value to its "--file" parameter (attempting an
operation to update the configuration in the standard input of
course is rejected).

* ks/config-file-stdin:
  config: teach "git config --file -" to read from the standard input
  config: change git_config_with_options() interface
  builtin/config.c: rename check_blob_write() -&gt; check_write()
  config: disallow relative include paths from blobs
</content>
</entry>
<entry>
<title>Merge branch 'jn/add-2.0-u-A-sans-pathspec'</title>
<updated>2014-03-07T23:14:02Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-03-07T23:14:01Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=053a6b18074e12876d60da952d8a668631b21a64'/>
<id>urn:sha1:053a6b18074e12876d60da952d8a668631b21a64</id>
<content type='text'>
"git add -u" and "git add -A" without any pathspec is a tree-wide
operation now, even when they are run in a subdirectory of the
working tree.
</content>
</entry>
<entry>
<title>Merge branch 'nd/daemonize-gc'</title>
<updated>2014-03-05T23:06:39Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-03-05T23:06:38Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=4c4ac4db2c933fbae1c6e6bcf90d9bee5f823fc7'/>
<id>urn:sha1:4c4ac4db2c933fbae1c6e6bcf90d9bee5f823fc7</id>
<content type='text'>
Allow running "gc --auto" in the background.

* nd/daemonize-gc:
  gc: config option for running --auto in background
  daemon: move daemonize() to libgit.a
</content>
</entry>
<entry>
<title>Add docstrings for lookup_replace_object() and do_lookup_replace_object()</title>
<updated>2014-02-28T21:17:56Z</updated>
<author>
<name>Michael Haggerty</name>
<email>mhagger@alum.mit.edu</email>
</author>
<published>2014-02-28T16:29:16Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=1f91e79cf61eaa7cb26eb0aa1e257b7681c4c328'/>
<id>urn:sha1:1f91e79cf61eaa7cb26eb0aa1e257b7681c4c328</id>
<content type='text'>
Signed-off-by: Michael Haggerty &lt;mhagger@alum.mit.edu&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
