diff options
author | Junio C Hamano <gitster@pobox.com> | 2010-04-04 10:33:53 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-04-04 10:33:53 -0700 |
commit | e640551773c9730a47779dfc93155feb092c8e3c (patch) | |
tree | 798c74407f1e4247dcce2a59c6fad7dd0bc5b171 /setup.c | |
parent | Add support for GIT_ONE_FILESYSTEM (diff) | |
download | tgif-e640551773c9730a47779dfc93155feb092c8e3c.tar.xz |
GIT_ONE_FILESYSTEM: flip the default to stop at filesystem boundaries
Regarding the new environment variable, Linus Torvalds
<torvalds@linux-foundation.org> writes on Tue, 30 Mar 2010 in
<alpine.LFD.2.00.1003301537150.3707@i5.linux-foundation.org>:
I suspect that it is _very_ unusual to have a source repo that crosses
multiple filesystems, and the original reason for this patch-series
seems to me to be likely to be more common than that multi-fs case. So
having the logic go the other way would seem to match the common case,
no?
The "crossing filesystem boundary" condition is checked by comparing
st_dev field in the result from stat(2). This is slightly worrysome if
non-POSIX ports return different values in the field even for directories
in the same work tree extracted to the same "filesystem". Erik Faye-Lund
confirms that in the msysgit port st_dev is 0, so this should be safe, as
"even Windows is safe" ;-)
This will affect those who use /.git to cram /etc and /home/me in the same
repostiory, /home is mounted from non-root filesystem, and a git operation
is done from inside /home/me/src. But that is such a corner case we don't
want to give preference over helping people who will benefit from having
this default so that they do not have to suffer from slow automounters.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'setup.c')
-rw-r--r-- | setup.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -323,7 +323,7 @@ const char *setup_git_directory_gently(int *nongit_ok) const char *gitdirenv; const char *gitfile_dir; int len, offset, ceil_offset, root_len; - int current_device = 0, one_filesystem = 0; + int current_device = 0, one_filesystem = 1; struct stat buf; /* @@ -444,7 +444,7 @@ const char *setup_git_directory_gently(int *nongit_ok) } cwd[offset] = '\0'; die("Not a git repository (or any parent up to mount parent %s)\n" - "Stopping at filesystem boundary since GIT_ONE_FILESYSTEM is set.", cwd); + "Stopping at filesystem boundary since GIT_ONE_FILESYSTEM is true.", cwd); } } if (chdir("..")) { |