-
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.
* jk/clone-detached: clone: always fetch remote HEAD make copy_ref globally available consider only branches in guess_remote_head t: add tests for cloning remotes with detached HEAD
- Loading branch information
Showing
4 changed files
with
88 additions
and
6 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
#!/bin/sh | ||
|
||
test_description='test cloning a repository with detached HEAD' | ||
. ./test-lib.sh | ||
|
||
head_is_detached() { | ||
git --git-dir=$1/.git rev-parse --verify HEAD && | ||
test_must_fail git --git-dir=$1/.git symbolic-ref HEAD | ||
} | ||
|
||
test_expect_success 'setup' ' | ||
echo one >file && | ||
git add file && | ||
git commit -m one && | ||
echo two >file && | ||
git commit -a -m two && | ||
git tag two && | ||
echo three >file && | ||
git commit -a -m three | ||
' | ||
|
||
test_expect_success 'clone repo (detached HEAD points to branch)' ' | ||
git checkout master^0 && | ||
git clone "file://$PWD" detached-branch | ||
' | ||
test_expect_success 'cloned HEAD matches' ' | ||
echo three >expect && | ||
git --git-dir=detached-branch/.git log -1 --format=%s >actual && | ||
test_cmp expect actual | ||
' | ||
test_expect_failure 'cloned HEAD is detached' ' | ||
head_is_detached detached-branch | ||
' | ||
|
||
test_expect_success 'clone repo (detached HEAD points to tag)' ' | ||
git checkout two^0 && | ||
git clone "file://$PWD" detached-tag | ||
' | ||
test_expect_success 'cloned HEAD matches' ' | ||
echo two >expect && | ||
git --git-dir=detached-tag/.git log -1 --format=%s >actual && | ||
test_cmp expect actual | ||
' | ||
test_expect_success 'cloned HEAD is detached' ' | ||
head_is_detached detached-tag | ||
' | ||
|
||
test_expect_success 'clone repo (detached HEAD points to history)' ' | ||
git checkout two^ && | ||
git clone "file://$PWD" detached-history | ||
' | ||
test_expect_success 'cloned HEAD matches' ' | ||
echo one >expect && | ||
git --git-dir=detached-history/.git log -1 --format=%s >actual && | ||
test_cmp expect actual | ||
' | ||
test_expect_success 'cloned HEAD is detached' ' | ||
head_is_detached detached-history | ||
' | ||
|
||
test_expect_success 'clone repo (orphan detached HEAD)' ' | ||
git checkout master^0 && | ||
echo four >file && | ||
git commit -a -m four && | ||
git clone "file://$PWD" detached-orphan | ||
' | ||
test_expect_success 'cloned HEAD matches' ' | ||
echo four >expect && | ||
git --git-dir=detached-orphan/.git log -1 --format=%s >actual && | ||
test_cmp expect actual | ||
' | ||
test_expect_success 'cloned HEAD is detached' ' | ||
head_is_detached detached-orphan | ||
' | ||
|
||
test_done |