<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/read-cache.c, 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 'dd/use-alloc-grow'</title>
<updated>2014-03-18T20:50:21Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-03-18T20:50:21Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=fe9122a35213827348c521a16ffd0cf2652c4ac5'/>
<id>urn:sha1:fe9122a35213827348c521a16ffd0cf2652c4ac5</id>
<content type='text'>
Replace open-coded reallocation with ALLOC_GROW() macro.

* dd/use-alloc-grow:
  sha1_file.c: use ALLOC_GROW() in pretend_sha1_file()
  read-cache.c: use ALLOC_GROW() in add_index_entry()
  builtin/mktree.c: use ALLOC_GROW() in append_to_tree()
  attr.c: use ALLOC_GROW() in handle_attr_line()
  dir.c: use ALLOC_GROW() in create_simplify()
  reflog-walk.c: use ALLOC_GROW()
  replace_object.c: use ALLOC_GROW() in register_replace_object()
  patch-ids.c: use ALLOC_GROW() in add_commit()
  diffcore-rename.c: use ALLOC_GROW()
  diff.c: use ALLOC_GROW()
  commit.c: use ALLOC_GROW() in register_commit_graft()
  cache-tree.c: use ALLOC_GROW() in find_subtree()
  bundle.c: use ALLOC_GROW() in add_to_ref_list()
  builtin/pack-objects.c: use ALLOC_GROW() in check_pbase_path()
</content>
</entry>
<entry>
<title>Merge branch 'tg/index-v4-format'</title>
<updated>2014-03-14T21:26:50Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-03-14T21:26:50Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=13b49f1e7463c46272c0b3b9b1952dc519086b6d'/>
<id>urn:sha1:13b49f1e7463c46272c0b3b9b1952dc519086b6d</id>
<content type='text'>
* tg/index-v4-format:
  read-cache: add index.version config variable
  test-lib: allow setting the index format version
  introduce GIT_INDEX_VERSION environment variable
</content>
</entry>
<entry>
<title>read-cache.c: use ALLOC_GROW() in add_index_entry()</title>
<updated>2014-03-03T22:54:54Z</updated>
<author>
<name>Dmitry S. Dolzhenko</name>
<email>dmitrys.dolzhenko@yandex.ru</email>
</author>
<published>2014-03-03T22:32:01Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=999f566013cf4102c07b0cdbffba419eadc7b368'/>
<id>urn:sha1:999f566013cf4102c07b0cdbffba419eadc7b368</id>
<content type='text'>
Signed-off-by: Dmitry S. Dolzhenko &lt;dmitrys.dolzhenko@yandex.ru&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'jk/pack-bitmap'</title>
<updated>2014-02-27T22:01:48Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-02-27T22:01:48Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=0f9e62e0847c075678a7a5a748567d1e881d16f8'/>
<id>urn:sha1:0f9e62e0847c075678a7a5a748567d1e881d16f8</id>
<content type='text'>
Borrow the bitmap index into packfiles from JGit to speed up
enumeration of objects involved in a commit range without having to
fully traverse the history.

* jk/pack-bitmap: (26 commits)
  ewah: unconditionally ntohll ewah data
  ewah: support platforms that require aligned reads
  read-cache: use get_be32 instead of hand-rolled ntoh_l
  block-sha1: factor out get_be and put_be wrappers
  do not discard revindex when re-preparing packfiles
  pack-bitmap: implement optional name_hash cache
  t/perf: add tests for pack bitmaps
  t: add basic bitmap functionality tests
  count-objects: recognize .bitmap in garbage-checking
  repack: consider bitmaps when performing repacks
  repack: handle optional files created by pack-objects
  repack: turn exts array into array-of-struct
  repack: stop using magic number for ARRAY_SIZE(exts)
  pack-objects: implement bitmap writing
  rev-list: add bitmap mode to speed up object lists
  pack-objects: use bitmaps when packing objects
  pack-objects: split add_object_entry
  pack-bitmap: add support for bitmap indexes
  documentation: add documentation for the bitmap format
  ewah: compressed bitmap implementation
  ...
</content>
</entry>
<entry>
<title>Merge branch 'nd/reset-intent-to-add'</title>
<updated>2014-02-27T22:01:40Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-02-27T22:01:40Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=8336832ad99832d21e5ee588bd3d03369048c05a'/>
<id>urn:sha1:8336832ad99832d21e5ee588bd3d03369048c05a</id>
<content type='text'>
* nd/reset-intent-to-add:
  reset: support "--mixed --intent-to-add" mode
</content>
</entry>
<entry>
<title>Merge branch 'nd/submodule-pathspec-ending-with-slash'</title>
<updated>2014-02-27T22:01:15Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-02-27T22:01:15Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=cbaeafc3251d08b479c5eb735444bb6ad6210c93'/>
<id>urn:sha1:cbaeafc3251d08b479c5eb735444bb6ad6210c93</id>
<content type='text'>
Allow "git cmd path/", when the 'path' is where a submodule is
bound to the top-level working tree, to match 'path', despite the
extra and unnecessary trailing slash.

* nd/submodule-pathspec-ending-with-slash:
  clean: use cache_name_is_other()
  clean: replace match_pathspec() with dir_path_match()
  pathspec: pass directory indicator to match_pathspec_item()
  match_pathspec: match pathspec "foo/" against directory "foo"
  dir.c: prepare match_pathspec_item for taking more flags
  pathspec: rename match_pathspec_depth() to match_pathspec()
  pathspec: convert some match_pathspec_depth() to dir_path_match()
  pathspec: convert some match_pathspec_depth() to ce_path_match()
</content>
</entry>
<entry>
<title>Merge branch 'bk/refresh-missing-ok-in-merge-recursive'</title>
<updated>2014-02-27T22:01:14Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2014-02-27T22:01:14Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=156d6ed9221ff38c4cd3bfcfc6778e31c104fd9b'/>
<id>urn:sha1:156d6ed9221ff38c4cd3bfcfc6778e31c104fd9b</id>
<content type='text'>
Allow "merge-recursive" to work in an empty (temporary) working
tree again when there are renames involved, correcting an old
regression in 1.7.7 era.

* bk/refresh-missing-ok-in-merge-recursive:
  merge-recursive.c: tolerate missing files while refreshing index
  read-cache.c: extend make_cache_entry refresh flag with options
  read-cache.c: refactor --ignore-missing implementation
  t3030-merge-recursive: test known breakage with empty work tree
</content>
</entry>
<entry>
<title>pathspec: convert some match_pathspec_depth() to ce_path_match()</title>
<updated>2014-02-24T22:36:52Z</updated>
<author>
<name>Nguyễn Thái Ngọc Duy</name>
<email>pclouds@gmail.com</email>
</author>
<published>2014-01-24T13:40:28Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=429bb40abdb5b42ffdde5b1a58f9a37da723d179'/>
<id>urn:sha1:429bb40abdb5b42ffdde5b1a58f9a37da723d179</id>
<content type='text'>
This helps reduce the number of match_pathspec_depth() call sites and
show how match_pathspec_depth() is used.

Signed-off-by: Nguyễn Thái Ngọc Duy &lt;pclouds@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
</feed>
