summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: f161ede)
raw | patch | inline | side by side (parent: f161ede)
author | Jonathan Nieder <jrnieder@gmail.com> | |
Sat, 24 Jul 2010 11:27:58 +0000 (06:27 -0500) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Mon, 26 Jul 2010 05:12:51 +0000 (22:12 -0700) |
This does not eliminate any code, but it skims some off of
the main loop of setup_git_directory_gently so that can be
understood more easily.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
the main loop of setup_git_directory_gently so that can be
understood more easily.
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
setup.c | patch | blob | history |
index 9fc05e2c0a79df1faf313994430d0649f8231d9a..5fb9c54ba6b21aab62b76602500ae2c408f9216d 100644 (file)
--- a/setup.c
+++ b/setup.c
return NULL;
}
+static dev_t get_device_or_die(const char *path, const char *prefix)
+{
+ struct stat buf;
+ if (stat(path, &buf))
+ die_errno("failed to stat '%s%s%s'",
+ prefix ? prefix : "",
+ prefix ? "/" : "", path);
+ return buf.st_dev;
+}
+
/*
* We cannot decide in this function whether we are in the work tree or
* not, since the config can only be read _after_ this function was called.
int len, offset, ceil_offset, root_len;
dev_t current_device = 0;
int one_filesystem = 1;
- struct stat buf;
/*
* Let's assume that we are in a git repository.
*/
offset = len = strlen(cwd);
one_filesystem = !git_env_bool("GIT_DISCOVERY_ACROSS_FILESYSTEM", 0);
- if (one_filesystem) {
- if (stat(".", &buf))
- die_errno("failed to stat '.'");
- current_device = buf.st_dev;
- }
+ if (one_filesystem)
+ current_device = get_device_or_die(".", NULL);
for (;;) {
if (cwd_contains_git_dir(&gitfile_dir))
break;
if (offset <= ceil_offset)
return setup_nongit(cwd, nongit_ok);
if (one_filesystem) {
- if (stat("..", &buf)) {
- cwd[offset] = '\0';
- die_errno("failed to stat '%s/..'", cwd);
- }
- if (buf.st_dev != current_device) {
+ dev_t parent_device = get_device_or_die("..", cwd);
+ if (parent_device != current_device) {
if (nongit_ok) {
if (chdir(cwd))
die_errno("Cannot come back to cwd");