<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/cache.h, branch v2.6.3</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.6.3</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.6.3'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2015-11-03T23:32:40Z</updated>
<entry>
<title>Merge branch 'dt/name-hash-dir-entry-fix' into maint</title>
<updated>2015-11-03T23:32:40Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-11-03T23:32:40Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=3a27eec48ecfcc0764c90b3f478a124c01c082bc'/>
<id>urn:sha1:3a27eec48ecfcc0764c90b3f478a124c01c082bc</id>
<content type='text'>
The name-hash subsystem that is used to cope with case insensitive
filesystems keeps track of directories and their on-filesystem
cases for all the paths in the index by holding a pointer to a
randomly chosen cache entry that is inside the directory (for its
ce-&gt;ce_name component).  This pointer was not updated even when the
cache entry was removed from the index, leading to use after free.
This was fixed by recording the path for each directory instead of
borrowing cache entries and restructuring the API somewhat.

* dt/name-hash-dir-entry-fix:
  name-hash: don't reuse cache_entry in dir_entry
</content>
</entry>
<entry>
<title>Merge branch 'mk/submodule-gitdir-path' into maint</title>
<updated>2015-11-03T23:32:35Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-11-03T23:32:34Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=1bf986bc9c1e823da27465bfd9faf2b725bbcc09'/>
<id>urn:sha1:1bf986bc9c1e823da27465bfd9faf2b725bbcc09</id>
<content type='text'>
The submodule code has been taught to work better with separate
work trees created via "git worktree add".

* mk/submodule-gitdir-path:
  path: implement common_dir handling in git_pathdup_submodule()
  submodule refactor: use strbuf_git_path_submodule() in add_submodule_odb()
</content>
</entry>
<entry>
<title>Merge branch 'js/clone-dissociate' into maint</title>
<updated>2015-11-03T23:32:29Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-11-03T23:32:28Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=f836a32ba75beded3bca960f2918e08309642c62'/>
<id>urn:sha1:f836a32ba75beded3bca960f2918e08309642c62</id>
<content type='text'>
"git clone --dissociate" runs a big "git repack" process at the
end, and it helps to close file descriptors that are open on the
packs and their idx files before doing so on filesystems that
cannot remove a file that is still open.

* js/clone-dissociate:
  clone --dissociate: avoid locking pack files
  sha1_file.c: add a function to release all packs
  sha1_file: consolidate code to close a pack's file descriptor
  t5700: demonstrate a Windows file locking issue with `git clone --dissociate`
</content>
</entry>
<entry>
<title>Merge branch 'jk/repository-extension' into maint</title>
<updated>2015-11-03T23:32:25Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-11-03T23:32:25Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=f89baca1b99ff2882690d6b58dc2071195c6ae84'/>
<id>urn:sha1:f89baca1b99ff2882690d6b58dc2071195c6ae84</id>
<content type='text'>
Prepare for Git on-disk repository representation to undergo
backward incompatible changes by introducing a new repository
format version "1", with an extension mechanism.

* jk/repository-extension:
  introduce "preciousObjects" repository extension
  introduce "extensions" form of core.repositoryformatversion
</content>
</entry>
<entry>
<title>name-hash: don't reuse cache_entry in dir_entry</title>
<updated>2015-10-21T19:47:38Z</updated>
<author>
<name>David Turner</name>
<email>dturner@twopensource.com</email>
</author>
<published>2015-10-21T17:54:11Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=41284eb0f944fe2d73708bb4105a8e3ccd0297df'/>
<id>urn:sha1:41284eb0f944fe2d73708bb4105a8e3ccd0297df</id>
<content type='text'>
Stop reusing cache_entry in dir_entry; doing so causes a
use-after-free bug.

During merges, we free entries that we no longer need in the
destination index.  But those entries might have also been stored in
the dir_entry cache, and when a later call to add_to_index found them,
they would be used after being freed.

To prevent this, change dir_entry to store a copy of the name instead
of a pointer to a cache_entry.  This entails some refactoring of code
that expects the cache_entry.

Keith McGuigan &lt;kmcguigan@twitter.com&gt; diagnosed this bug and wrote
the initial patch, but this version does not use any of Keith's code.

Helped-by: Keith McGuigan &lt;kmcguigan@twitter.com&gt;
Helped-by: Junio C Hamano &lt;gitster@pobox.com&gt;
Signed-off-by: David Turner &lt;dturner@twopensource.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>sha1_file.c: add a function to release all packs</title>
<updated>2015-10-07T17:47:10Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2015-10-06T13:18:34Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=38849a8116e690071c02eba0a8ef60a031a58080'/>
<id>urn:sha1:38849a8116e690071c02eba0a8ef60a031a58080</id>
<content type='text'>
On Windows, files that are in use cannot be removed or renamed. That
means that we have to release pack files when we are about to, say,
repack them. Let's introduce a convenient function to close all the
pack files and their idx files.

While at it, we consolidate the close windows/close fd/close index
stanza in `free_pack_by_name()` into the `close_pack()` function that
is used by the new `close_all_packs()` function to avoid repeated code.

Signed-off-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>path: implement common_dir handling in git_pathdup_submodule()</title>
<updated>2015-09-14T18:03:46Z</updated>
<author>
<name>Max Kirillov</name>
<email>max@max630.net</email>
</author>
<published>2015-09-13T22:17:42Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=11f9dd719104a960d3e2b478477d9055141d1dbc'/>
<id>urn:sha1:11f9dd719104a960d3e2b478477d9055141d1dbc</id>
<content type='text'>
When submodule is a linked worktree, "git diff --submodule" and other
calls which directly access the submodule's object database do not correctly
calculate its path. Fix it by changing the git_pathdup_submodule() behavior,
to use either common or per-worktree directory.

Do it similarly as for parent repository, but ignore the GIT_COMMON_DIR
environment variable, because it would mean common directory for the parent
repository and does not make sense for submodule.

Also add test for functionality which uses this call.

Signed-off-by: Max Kirillov &lt;max@max630.net&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'db/push-sign-if-asked'</title>
<updated>2015-08-31T22:39:08Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-08-31T22:39:07Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=b21089db6a6006bcf9233f0d8592044ca5553c6a'/>
<id>urn:sha1:b21089db6a6006bcf9233f0d8592044ca5553c6a</id>
<content type='text'>
The client side codepaths in "git push" have been cleaned up
and the user can request to perform an optional "signed push",
i.e. sign only when the other end accepts signed push.

* db/push-sign-if-asked:
  push: add a config option push.gpgSign for default signed pushes
  push: support signing pushes iff the server supports it
  builtin/send-pack.c: use parse_options API
  config.c: rename git_config_maybe_bool_text and export it as git_parse_maybe_bool
  transport: remove git_transport_options.push_cert
  gitremote-helpers.txt: document pushcert option
  Documentation/git-send-pack.txt: document --signed
  Documentation/git-send-pack.txt: wrap long synopsis line
  Documentation/git-push.txt: document when --signed may fail
</content>
</entry>
<entry>
<title>Merge branch 'jc/am-state-fix'</title>
<updated>2015-08-31T22:39:03Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-08-31T22:39:01Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=d75bb73bcf2ecce38c147980aac0cbc27a6b838a'/>
<id>urn:sha1:d75bb73bcf2ecce38c147980aac0cbc27a6b838a</id>
<content type='text'>
Recent reimplementation of "git am" changed the format of state
files kept in $GIT_DIR/rebase-apply/ without meaning to do so,
primarily because write_file() API was cumbersome to use and it was
easy to mistakenly make text files with incomplete lines.  Update
write_file() interface to make it harder to misuse.

* jc/am-state-fix:
  write_file(): drop caller-supplied LF from calls to create a one-liner file
  write_file_v(): do not leave incomplete line at the end
  write_file(): drop "fatal" parameter
  builtin/am: make sure state files are text
  builtin/am: introduce write_state_*() helper functions
</content>
</entry>
<entry>
<title>Merge branch 'jk/fix-alias-pager-config-key-warnings'</title>
<updated>2015-08-31T22:38:57Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2015-08-31T22:38:57Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=7b7c10bf5e38ca8fe06ab80b073408e1dc6761d7'/>
<id>urn:sha1:7b7c10bf5e38ca8fe06ab80b073408e1dc6761d7</id>
<content type='text'>
Because the configuration system does not allow "alias.0foo" and
"pager.0foo" as the configuration key, the user cannot use '0foo'
as a custom command name anyway, but "git 0foo" tried to look these
keys up and emitted useless warnings before saying '0foo is not a
git command'.  These warning messages have been squelched.

* jk/fix-alias-pager-config-key-warnings:
  config: silence warnings for command names with invalid keys
</content>
</entry>
</feed>
