<feed xmlns='http://www.w3.org/2005/Atom'>
<title>git/cache.h, branch v2.9.2</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/git/git.git/
</subtitle>
<id>https://git.shady.money/git/atom?h=v2.9.2</id>
<link rel='self' href='https://git.shady.money/git/atom?h=v2.9.2'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/'/>
<updated>2016-06-08T00:43:39Z</updated>
<entry>
<title>add: add --chmod=+x / --chmod=-x options</title>
<updated>2016-06-08T00:43:39Z</updated>
<author>
<name>Edward Thomson</name>
<email>ethomson@edwardthomson.com</email>
</author>
<published>2016-05-31T22:08:18Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=4e55ed32db81d06a4f618e2cc0f9da0e223ae304'/>
<id>urn:sha1:4e55ed32db81d06a4f618e2cc0f9da0e223ae304</id>
<content type='text'>
The executable bit will not be detected (and therefore will not be
set) for paths in a repository with `core.filemode` set to false,
though the users may still wish to add files as executable for
compatibility with other users who _do_ have `core.filemode`
functionality.  For example, Windows users adding shell scripts may
wish to add them as executable for compatibility with users on
non-Windows.

Although this can be done with a plumbing command
(`git update-index --add --chmod=+x foo`), teaching the `git-add`
command allows users to set a file executable with a command that
they're already familiar with.

Signed-off-by: Edward Thomson &lt;ethomson@edwardthomson.com&gt;
Helped-by: Johannes Schindelin &lt;johannes.schindelin@gmx.de&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'nd/worktree-various-heads'</title>
<updated>2016-05-23T21:54:29Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2016-05-23T21:54:29Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=352d72a30e3d113064ebc194f49560eeae34b332'/>
<id>urn:sha1:352d72a30e3d113064ebc194f49560eeae34b332</id>
<content type='text'>
The experimental "multiple worktree" feature gains more safety to
forbid operations on a branch that is checked out or being actively
worked on elsewhere, by noticing that e.g. it is being rebased.

* nd/worktree-various-heads:
  branch: do not rename a branch under bisect or rebase
  worktree.c: check whether branch is bisected in another worktree
  wt-status.c: split bisect detection out of wt_status_get_state()
  worktree.c: check whether branch is rebased in another worktree
  worktree.c: avoid referencing to worktrees[i] multiple times
  wt-status.c: make wt_status_check_rebase() work on any worktree
  wt-status.c: split rebase detection out of wt_status_get_state()
  path.c: refactor and add worktree_git_path()
  worktree.c: mark current worktree
  worktree.c: make find_shared_symref() return struct worktree *
  worktree.c: store "id" instead of "git_dir"
  path.c: add git_common_path() and strbuf_git_common_path()
  dir.c: rename str(n)cmp_icase to fspath(n)cmp
</content>
</entry>
<entry>
<title>Merge branch 'js/windows-dotgit'</title>
<updated>2016-05-17T21:38:39Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2016-05-17T21:38:39Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=bfc99b63fe859e16ddcfcbe6ac09f98b8d06b34e'/>
<id>urn:sha1:bfc99b63fe859e16ddcfcbe6ac09f98b8d06b34e</id>
<content type='text'>
On Windows, .git and optionally any files whose name starts with a
dot are now marked as hidden, with a core.hideDotFiles knob to
customize this behaviour.

* js/windows-dotgit:
  mingw: remove unnecessary definition
  mingw: introduce the 'core.hideDotFiles' setting
</content>
</entry>
<entry>
<title>Merge branch 'ab/hooks'</title>
<updated>2016-05-17T21:38:17Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2016-05-17T21:38:17Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=6675f501f6b987dbdb0dbeb1d2efeb5a27fc41a7'/>
<id>urn:sha1:6675f501f6b987dbdb0dbeb1d2efeb5a27fc41a7</id>
<content type='text'>
A new configuration variable core.hooksPath allows customizing
where the hook directory is.

* ab/hooks:
  hooks: allow customizing where the hook directory is
  githooks.txt: minor improvements to the grammar &amp; phrasing
  githooks.txt: amend dangerous advice about 'update' hook ACL
  githooks.txt: improve the intro section
</content>
</entry>
<entry>
<title>mingw: introduce the 'core.hideDotFiles' setting</title>
<updated>2016-05-11T20:54:53Z</updated>
<author>
<name>Johannes Schindelin</name>
<email>johannes.schindelin@gmx.de</email>
</author>
<published>2016-05-11T08:43:37Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=f30afdabbfb9feeec402d351935879caf8b298ad'/>
<id>urn:sha1:f30afdabbfb9feeec402d351935879caf8b298ad</id>
<content type='text'>
On Unix (and Linux), files and directories whose names start with a dot
are usually not shown by default. This convention is used by Git: the
.git/ directory should be left alone by regular users, and only accessed
through Git itself.

On Windows, no such convention exists. Instead, there is an explicit flag
to mark files or directories as hidden.

In the early days, Git for Windows did not mark the .git/ directory (or
for that matter, any file or directory whose name starts with a dot)
hidden. This lead to quite a bit of confusion, and even loss of data.

Consequently, Git for Windows introduced the core.hideDotFiles setting,
with three possible values: true, false, and dotGitOnly, defaulting to
marking only the .git/ directory as hidden.

The rationale: users do not need to access .git/ directly, and indeed (as
was demonstrated) should not really see that directory, either. However,
not all dot files should be hidden by default, as e.g. Eclipse does not
show them (and the user would therefore be unable to see, say, a
.gitattributes file).

In over five years since the last attempt to bring this patch into core
Git, a slightly buggy version of this patch has served Git for Windows'
users well: no single report indicated problems with the hidden .git/
directory, and the stream of problems caused by the previously non-hidden
.git/ directory simply stopped. The bugs have been fixed during the
process of getting this patch upstream.

Note that there is a funny quirk we have to pay attention to when
creating hidden files: we use Win32's _wopen() function which
transmogrifies its arguments and hands off to Win32's CreateFile()
function. That latter function errors out with ERROR_ACCESS_DENIED (the
equivalent of EACCES) when the equivalent of the O_CREAT flag was passed
and the file attributes (including the hidden flag) do not match an
existing file's. And _wopen() accepts no parameter that would be
transmogrified into said hidden flag. Therefore, we simply try again
without O_CREAT.

A slightly different method is required for our fopen()/freopen()
function as we cannot even *remove* the implicit O_CREAT flag.
Therefore, we briefly mark existing files as unhidden when opening them
via fopen()/freopen().

The ERROR_ACCESS_DENIED error can also be triggered by opening a file
that is marked as a system file (which is unlikely to be tracked in
Git), and by trying to create a file that has *just* been deleted and is
awaiting the last open handles to be released (which would be handled
better by the "Try again?" logic, a story for a different patch series,
though). In both cases, it does not matter much if we try again without
the O_CREAT flag, read: it does not hurt, either.

For details how ERROR_ACCESS_DENIED can be triggered, see
https://msdn.microsoft.com/en-us/library/windows/desktop/aa363858

Original-patch-by: Erik Faye-Lund &lt;kusmabite@gmail.com&gt;
Initial-Test-By: Pat Thoyts &lt;patthoyts@users.sourceforge.net&gt;
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>Merge branch 'bc/object-id'</title>
<updated>2016-05-06T21:45:44Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2016-05-06T21:45:44Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=8429f2b42d04a0598079c847c39d45d777613939'/>
<id>urn:sha1:8429f2b42d04a0598079c847c39d45d777613939</id>
<content type='text'>
Move from unsigned char[20] to struct object_id continues.

* bc/object-id:
  match-trees: convert several leaf functions to use struct object_id
  tree-walk: convert tree_entry_extract() to use struct object_id
  struct name_entry: use struct object_id instead of unsigned char sha1[20]
  match-trees: convert shift_tree() and shift_tree_by() to use object_id
  test-match-trees: convert to use struct object_id
  sha1-name: introduce a get_oid() function
</content>
</entry>
<entry>
<title>hooks: allow customizing where the hook directory is</title>
<updated>2016-05-04T23:25:13Z</updated>
<author>
<name>Ævar Arnfjörð Bjarmason</name>
<email>avarab@gmail.com</email>
</author>
<published>2016-05-04T22:58:12Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=867ad08a2610526edb5723804723d371136fc643'/>
<id>urn:sha1:867ad08a2610526edb5723804723d371136fc643</id>
<content type='text'>
Change the hardcoded lookup for .git/hooks/* to optionally lookup in
$(git config core.hooksPath)/* instead.

This is essentially a more intrusive version of the git-init ability to
specify hooks on init time via init templates.

The difference between that facility and this feature is that this can
be set up after the fact via e.g. ~/.gitconfig or /etc/gitconfig to
apply for all your personal repositories, or all repositories on the
system.

I plan on using this on a centralized Git server where users can create
arbitrary repositories under /gitroot, but I'd like to manage all the
hooks that should be run centrally via a unified dispatch mechanism.

Signed-off-by: Ævar Arnfjörð Bjarmason &lt;avarab@gmail.com&gt;
Signed-off-by: Junio C Hamano &lt;gitster@pobox.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'nd/remove-unused'</title>
<updated>2016-05-03T21:08:13Z</updated>
<author>
<name>Junio C Hamano</name>
<email>gitster@pobox.com</email>
</author>
<published>2016-05-03T21:08:13Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=51a92bf5478025f236034ce881d12193a6fc4127'/>
<id>urn:sha1:51a92bf5478025f236034ce881d12193a6fc4127</id>
<content type='text'>
Code cleanup.

* nd/remove-unused:
  wrapper.c: delete dead function git_mkstemps()
  dir.c: remove dead function fnmatch_icase()
</content>
</entry>
<entry>
<title>path.c: add git_common_path() and strbuf_git_common_path()</title>
<updated>2016-04-22T21:09:37Z</updated>
<author>
<name>Nguyễn Thái Ngọc Duy</name>
<email>pclouds@gmail.com</email>
</author>
<published>2016-04-22T13:01:25Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=15cdfea734ffce99d930e8e8016787b57ac47386'/>
<id>urn:sha1:15cdfea734ffce99d930e8e8016787b57ac47386</id>
<content type='text'>
These are mostly convenient functions to reduce code duplication. Most
of the time, we should be able to get by with git_path() which handles
$GIT_COMMON_DIR internally. However there are a few cases where we need
to construct paths manually, for example some paths from a specific
worktree. These functions will enable that.

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>
<entry>
<title>wrapper.c: delete dead function git_mkstemps()</title>
<updated>2016-04-22T21:07:55Z</updated>
<author>
<name>Nguyễn Thái Ngọc Duy</name>
<email>pclouds@gmail.com</email>
</author>
<published>2016-04-22T12:25:16Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/git/commit/?id=659488326cf6a170cd474e66f1bed6f5bc322eab'/>
<id>urn:sha1:659488326cf6a170cd474e66f1bed6f5bc322eab</id>
<content type='text'>
Its last call site was replaced by mks_tempfile_ts() in 284098f (diff:
use tempfile module - 2015-08-12) and there's a good chance
mks_tempfile_ts will continue to successfully handle this job. Delete
it.

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>
