Imported Upstream version 2.4.1
[scm/test.git] / test / test-worktree.sh
1 #!/usr/bin/env bash
2
3 . "test/testlib.sh"
4
5 ensure_git_version_isnt $VERSION_LOWER "2.5.0"
6 envInitConfig='git config filter.lfs.process = "git-lfs filter-process"
7 git config filter.lfs.smudge = "git-lfs smudge -- %f"
8 git config filter.lfs.clean = "git-lfs clean -- %f"'
9
10 begin_test "git worktree"
11 (
12     set -e
13     reponame="worktree-main"
14     mkdir $reponame
15     cd $reponame
16     git init
17
18     # can't create a worktree until there's 1 commit at least
19     echo "a" > tmp.txt
20     git add tmp.txt
21     git commit -m "Initial commit"
22
23     expected=$(printf "%s\n%s\n
24 LocalWorkingDir=$(native_path_escaped "$TRASHDIR/$reponame")
25 LocalGitDir=$(native_path_escaped "$TRASHDIR/$reponame/.git")
26 LocalGitStorageDir=$(native_path_escaped "$TRASHDIR/$reponame/.git")
27 LocalMediaDir=$(native_path_escaped "$TRASHDIR/$reponame/.git/lfs/objects")
28 LocalReferenceDir=
29 TempDir=$(native_path_escaped "$TRASHDIR/$reponame/.git/lfs/tmp")
30 ConcurrentTransfers=3
31 TusTransfers=false
32 BasicTransfersOnly=false
33 SkipDownloadErrors=false
34 FetchRecentAlways=false
35 FetchRecentRefsDays=7
36 FetchRecentCommitsDays=0
37 FetchRecentRefsIncludeRemotes=true
38 PruneOffsetDays=3
39 PruneVerifyRemoteAlways=false
40 PruneRemoteName=origin
41 LfsStorageDir=$(native_path_escaped "$TRASHDIR/$reponame/.git/lfs")
42 AccessDownload=none
43 AccessUpload=none
44 DownloadTransfers=basic
45 UploadTransfers=basic
46 $(escape_path "$(env | grep "^GIT")")
47 %s
48 " "$(git lfs version)" "$(git version)" "$envInitConfig")
49     actual=$(git lfs env | grep -v "^GIT_EXEC_PATH=")
50     contains_same_elements "$expected" "$actual"
51
52     worktreename="worktree-2"
53     git worktree add "$TRASHDIR/$worktreename"
54     cd "$TRASHDIR/$worktreename"
55
56     # git dir in worktree is like submodules (except path is worktrees) but this
57     # is only for index, temp etc
58     # storage of git objects and lfs objects is in the original .git
59     expected=$(printf "%s\n%s\n
60 LocalWorkingDir=$(native_path_escaped "$TRASHDIR/$worktreename")
61 LocalGitDir=$(native_path_escaped "$TRASHDIR/$reponame/.git/worktrees/$worktreename")
62 LocalGitStorageDir=$(native_path_escaped "$TRASHDIR/$reponame/.git")
63 LocalMediaDir=$(native_path_escaped "$TRASHDIR/$reponame/.git/lfs/objects")
64 LocalReferenceDir=
65 TempDir=$(native_path_escaped "$TRASHDIR/$reponame/.git/worktrees/$worktreename/lfs/tmp")
66 ConcurrentTransfers=3
67 TusTransfers=false
68 BasicTransfersOnly=false
69 SkipDownloadErrors=false
70 FetchRecentAlways=false
71 FetchRecentRefsDays=7
72 FetchRecentCommitsDays=0
73 FetchRecentRefsIncludeRemotes=true
74 PruneOffsetDays=3
75 PruneVerifyRemoteAlways=false
76 PruneRemoteName=origin
77 LfsStorageDir=$(native_path_escaped "$TRASHDIR/$reponame/.git/lfs")
78 AccessDownload=none
79 AccessUpload=none
80 DownloadTransfers=basic
81 UploadTransfers=basic
82 $(escape_path "$(env | grep "^GIT")")
83 %s
84 " "$(git lfs version)" "$(git version)" "$envInitConfig")
85     actual=$(git lfs env | grep -v "^GIT_EXEC_PATH=")
86     contains_same_elements "$expected" "$actual"
87 )
88 end_test