#!/bin/sh test_description='test git checkout --to' . ./test-lib.sh test_expect_success 'setup' ' test_commit init ' test_expect_success 'checkout --to not updating paths' ' test_must_fail git checkout --to -- init.t ' test_expect_success 'checkout --to an existing worktree' ' mkdir existing && test_must_fail git checkout --detach --to existing master ' test_expect_success 'checkout --to a new worktree' ' git checkout --to here master && ( cd here && test_cmp ../init.t init.t && git symbolic-ref HEAD >actual && echo refs/heads/master >expect && test_cmp expect actual && git fsck ) ' test_expect_success 'checkout --to a new worktree from a subdir' ' ( mkdir sub && cd sub && git checkout --detach --to here master && cd here && test_cmp ../../init.t init.t ) ' test_expect_success 'checkout --to from a linked checkout' ' ( cd here && git checkout --to nested-here master && cd nested-here && git fsck ) ' test_expect_success 'checkout --to a new worktree creating new branch' ' git checkout --to there -b newmaster master && ( cd there && test_cmp ../init.t init.t && git symbolic-ref HEAD >actual && echo refs/heads/newmaster >expect && test_cmp expect actual && git fsck ) ' test_done