Skip to content

Commit

Permalink
Merge branch 'bk/fix-relative-gitdir-file'
Browse files Browse the repository at this point in the history
* bk/fix-relative-gitdir-file:
  Handle relative paths in submodule .git files
  Test update-index for a gitlink to a .git file
  • Loading branch information
gitster committed Jan 20, 2010
2 parents c757c52 + 40c813e commit bd0d191
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 3 deletions.
22 changes: 19 additions & 3 deletions setup.c
Expand Up @@ -263,6 +263,8 @@ static int check_repository_format_gently(int *nongit_ok)
const char *read_gitfile_gently(const char *path)
{
char *buf;
char *dir;
const char *slash;
struct stat st;
int fd;
size_t len;
Expand All @@ -287,9 +289,23 @@ const char *read_gitfile_gently(const char *path)
if (len < 9)
die("No path in gitfile: %s", path);
buf[len] = '\0';
if (!is_git_directory(buf + 8))
die("Not a git repository: %s", buf + 8);
path = make_absolute_path(buf + 8);
dir = buf + 8;

if (!is_absolute_path(dir) && (slash = strrchr(path, '/'))) {
size_t pathlen = slash+1 - path;
size_t dirlen = pathlen + len - 8;
dir = xmalloc(dirlen + 1);
strncpy(dir, path, pathlen);
strncpy(dir + pathlen, buf + 8, len - 8);
dir[dirlen] = '\0';
free(buf);
buf = dir;
}

if (!is_git_directory(dir))
die("Not a git repository: %s", dir);
path = make_absolute_path(dir);

free(buf);
return path;
}
Expand Down
38 changes: 38 additions & 0 deletions t/t2104-update-index-gitfile.sh
@@ -0,0 +1,38 @@
#!/bin/sh
#
# Copyright (c) 2010 Brad King
#

test_description='git update-index for gitlink to .git file.
'

. ./test-lib.sh

test_expect_success 'submodule with absolute .git file' '
mkdir sub1 &&
(cd sub1 &&
git init &&
REAL="$(pwd)/.real" &&
mv .git "$REAL"
echo "gitdir: $REAL" >.git &&
test_commit first)
'

test_expect_success 'add gitlink to absolute .git file' '
git update-index --add -- sub1
'

test_expect_success 'submodule with relative .git file' '
mkdir sub2 &&
(cd sub2 &&
git init &&
mv .git .real &&
echo "gitdir: .real" >.git &&
test_commit first)
'

test_expect_success 'add gitlink to relative .git file' '
git update-index --add -- sub2
'

test_done

0 comments on commit bd0d191

Please sign in to comment.