diff options
author | Junio C Hamano <gitster@pobox.com> | 2016-07-28 17:34:41 (GMT) |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-07-28 17:34:42 (GMT) |
commit | 2c608e0f7c1f0fb9fb3e42eb737d7b8543e11400 (patch) | |
tree | 2cec172b7ded4719fa38dc4df8ab5183ecea12af /t | |
parent | d0b6966e3dc0a1aca8b7aa89dd0f95cda50d21f2 (diff) | |
parent | 080739ba1db7897dde53427937acc011ea98a006 (diff) | |
download | git-2c608e0f7c1f0fb9fb3e42eb737d7b8543e11400.zip git-2c608e0f7c1f0fb9fb3e42eb737d7b8543e11400.tar.gz git-2c608e0f7c1f0fb9fb3e42eb737d7b8543e11400.tar.bz2 |
Merge branch 'nd/worktree-lock'
"git worktree prune" protected worktrees that are marked as
"locked" by creating a file in a known location. "git worktree"
command learned a dedicated command pair to create and remove such
a file, so that the users do not have to do this with editor.
* nd/worktree-lock:
worktree.c: find_worktree() search by path suffix
worktree: add "unlock" command
worktree: add "lock" command
worktree.c: add is_worktree_locked()
worktree.c: add is_main_worktree()
worktree.c: add find_worktree()
Diffstat (limited to 't')
-rwxr-xr-x | t/t2028-worktree-move.sh | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/t/t2028-worktree-move.sh b/t/t2028-worktree-move.sh new file mode 100755 index 0000000..8298aaf --- /dev/null +++ b/t/t2028-worktree-move.sh @@ -0,0 +1,62 @@ +#!/bin/sh + +test_description='test git worktree move, remove, lock and unlock' + +. ./test-lib.sh + +test_expect_success 'setup' ' + test_commit init && + git worktree add source && + git worktree list --porcelain | grep "^worktree" >actual && + cat <<-EOF >expected && + worktree $(pwd) + worktree $(pwd)/source + EOF + test_cmp expected actual +' + +test_expect_success 'lock main worktree' ' + test_must_fail git worktree lock . +' + +test_expect_success 'lock linked worktree' ' + git worktree lock --reason hahaha source && + echo hahaha >expected && + test_cmp expected .git/worktrees/source/locked +' + +test_expect_success 'lock linked worktree from another worktree' ' + rm .git/worktrees/source/locked && + git worktree add elsewhere && + git -C elsewhere worktree lock --reason hahaha ../source && + echo hahaha >expected && + test_cmp expected .git/worktrees/source/locked +' + +test_expect_success 'lock worktree twice' ' + test_must_fail git worktree lock source && + echo hahaha >expected && + test_cmp expected .git/worktrees/source/locked +' + +test_expect_success 'lock worktree twice (from the locked worktree)' ' + test_must_fail git -C source worktree lock . && + echo hahaha >expected && + test_cmp expected .git/worktrees/source/locked +' + +test_expect_success 'unlock main worktree' ' + test_must_fail git worktree unlock . +' + +test_expect_success 'unlock linked worktree' ' + git worktree unlock source && + test_path_is_missing .git/worktrees/source/locked +' + +test_expect_success 'unlock worktree twice' ' + test_must_fail git worktree unlock source && + test_path_is_missing .git/worktrees/source/locked +' + +test_done |