-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'jk/git-dir-lookup' into maint
* jk/git-dir-lookup: standardize and improve lookup rules for external local repos
- Loading branch information
Showing
5 changed files
with
109 additions
and
5 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
#!/bin/sh | ||
|
||
test_description='selecting remote repo in ambiguous cases' | ||
. ./test-lib.sh | ||
|
||
reset() { | ||
rm -rf foo foo.git fetch clone | ||
} | ||
|
||
make_tree() { | ||
git init "$1" && | ||
(cd "$1" && test_commit "$1") | ||
} | ||
|
||
make_bare() { | ||
git init --bare "$1" && | ||
(cd "$1" && | ||
tree=`git hash-object -w -t tree /dev/null` && | ||
commit=$(echo "$1" | git commit-tree $tree) && | ||
git update-ref HEAD $commit | ||
) | ||
} | ||
|
||
get() { | ||
git init --bare fetch && | ||
(cd fetch && git fetch "../$1") && | ||
git clone "$1" clone | ||
} | ||
|
||
check() { | ||
echo "$1" >expect && | ||
(cd fetch && git log -1 --format=%s FETCH_HEAD) >actual.fetch && | ||
(cd clone && git log -1 --format=%s HEAD) >actual.clone && | ||
test_cmp expect actual.fetch && | ||
test_cmp expect actual.clone | ||
} | ||
|
||
test_expect_success 'find .git dir in worktree' ' | ||
reset && | ||
make_tree foo && | ||
get foo && | ||
check foo | ||
' | ||
|
||
test_expect_success 'automagically add .git suffix' ' | ||
reset && | ||
make_bare foo.git && | ||
get foo && | ||
check foo.git | ||
' | ||
|
||
test_expect_success 'automagically add .git suffix to worktree' ' | ||
reset && | ||
make_tree foo.git && | ||
get foo && | ||
check foo.git | ||
' | ||
|
||
test_expect_success 'prefer worktree foo over bare foo.git' ' | ||
reset && | ||
make_tree foo && | ||
make_bare foo.git && | ||
get foo && | ||
check foo | ||
' | ||
|
||
test_expect_success 'prefer bare foo over bare foo.git' ' | ||
reset && | ||
make_bare foo && | ||
make_bare foo.git && | ||
get foo && | ||
check foo | ||
' | ||
|
||
test_expect_success 'disambiguate with full foo.git' ' | ||
reset && | ||
make_bare foo && | ||
make_bare foo.git && | ||
get foo.git && | ||
check foo.git | ||
' | ||
|
||
test_expect_success 'we are not fooled by non-git foo directory' ' | ||
reset && | ||
make_bare foo.git && | ||
mkdir foo && | ||
get foo && | ||
check foo.git | ||
' | ||
|
||
test_expect_success 'prefer inner .git over outer bare' ' | ||
reset && | ||
make_tree foo && | ||
make_bare foo.git && | ||
mv foo/.git foo.git && | ||
get foo.git && | ||
check foo | ||
' | ||
|
||
test_done |