@@ -3854,4 +3854,272 @@ EOF
3854
3854
test_repo 26/sub "$TRASH_DIRECTORY/26/.git"
3855
3855
'
3856
3856
3857
+ #
3858
+ # case #27
3859
+ #
3860
+ # ###########################################################
3861
+ #
3862
+ # Input:
3863
+ #
3864
+ # - GIT_WORK_TREE is set
3865
+ # - GIT_DIR is set
3866
+ # - .git is a file
3867
+ # - core.worktree is not set
3868
+ # - core.bare is set
3869
+ #
3870
+ # Output:
3871
+ #
3872
+ # #19 except git_dir is set according to .git file
3873
+
3874
+ test_expect_success ' #27: setup' '
3875
+ unset GIT_DIR GIT_WORK_TREE &&
3876
+ mkdir 27 27/sub 27/sub/sub 27.wt 27.wt/sub 27/wt 27/wt/sub &&
3877
+ cd 27 &&
3878
+ git init &&
3879
+ git config core.bare true &&
3880
+ mv .git ../27.git &&
3881
+ echo gitdir: ../27.git >.git &&
3882
+ cd ..
3883
+ '
3884
+
3885
+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=root at root' '
3886
+ cat >27/expected <<EOF &&
3887
+ setup: git_dir: $TRASH_DIRECTORY/27.git
3888
+ setup: worktree: $TRASH_DIRECTORY/27
3889
+ setup: cwd: $TRASH_DIRECTORY/27
3890
+ setup: prefix: (null)
3891
+ EOF
3892
+ test_repo 27 .git "$TRASH_DIRECTORY/27"
3893
+ '
3894
+
3895
+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=root(rel) at root' '
3896
+ cat >27/expected <<EOF &&
3897
+ setup: git_dir: $TRASH_DIRECTORY/27.git
3898
+ setup: worktree: $TRASH_DIRECTORY/27
3899
+ setup: cwd: $TRASH_DIRECTORY/27
3900
+ setup: prefix: (null)
3901
+ EOF
3902
+ test_repo 27 .git .
3903
+ '
3904
+
3905
+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=root at root' '
3906
+ cat >27/expected <<EOF &&
3907
+ setup: git_dir: $TRASH_DIRECTORY/27.git
3908
+ setup: worktree: $TRASH_DIRECTORY/27
3909
+ setup: cwd: $TRASH_DIRECTORY/27
3910
+ setup: prefix: (null)
3911
+ EOF
3912
+ test_repo 27 "$TRASH_DIRECTORY/27/.git" "$TRASH_DIRECTORY/27"
3913
+ '
3914
+
3915
+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=root(rel) at root' '
3916
+ cat >27/expected <<EOF &&
3917
+ setup: git_dir: $TRASH_DIRECTORY/27.git
3918
+ setup: worktree: $TRASH_DIRECTORY/27
3919
+ setup: cwd: $TRASH_DIRECTORY/27
3920
+ setup: prefix: (null)
3921
+ EOF
3922
+ test_repo 27 "$TRASH_DIRECTORY/27/.git" .
3923
+ '
3924
+
3925
+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORKTREE=root in subdir' '
3926
+ cat >27/sub/sub/expected <<EOF &&
3927
+ setup: git_dir: $TRASH_DIRECTORY/27.git
3928
+ setup: worktree: $TRASH_DIRECTORY/27
3929
+ setup: cwd: $TRASH_DIRECTORY/27
3930
+ setup: prefix: sub/sub/
3931
+ EOF
3932
+ test_repo 27/sub/sub ../../.git "$TRASH_DIRECTORY/27"
3933
+ '
3934
+
3935
+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORKTREE=root(rel) in subdir' '
3936
+ cat >27/sub/sub/expected <<EOF &&
3937
+ setup: git_dir: $TRASH_DIRECTORY/27.git
3938
+ setup: worktree: $TRASH_DIRECTORY/27
3939
+ setup: cwd: $TRASH_DIRECTORY/27
3940
+ setup: prefix: sub/sub/
3941
+ EOF
3942
+ test_repo 27/sub/sub ../../.git ../..
3943
+ '
3944
+
3945
+ test_expect_failure ' #27: GIT_DIR, GIT_WORKTREE=root in subdir' '
3946
+ cat >27/sub/expected <<EOF &&
3947
+ setup: git_dir: $TRASH_DIRECTORY/27.git
3948
+ setup: worktree: $TRASH_DIRECTORY/27
3949
+ setup: cwd: $TRASH_DIRECTORY/27
3950
+ setup: prefix: sub/
3951
+ EOF
3952
+ test_repo 27/sub "$TRASH_DIRECTORY/27/.git" "$TRASH_DIRECTORY/27"
3953
+ '
3954
+
3955
+ test_expect_failure ' #27: GIT_DIR, GIT_WORKTREE=root(rel) in subdir' '
3956
+ cat >27/sub/sub/expected <<EOF &&
3957
+ setup: git_dir: $TRASH_DIRECTORY/27.git
3958
+ setup: worktree: $TRASH_DIRECTORY/27
3959
+ setup: cwd: $TRASH_DIRECTORY/27
3960
+ setup: prefix: sub/sub/
3961
+ EOF
3962
+ test_repo 27/sub/sub "$TRASH_DIRECTORY/27/.git" ../..
3963
+ '
3964
+
3965
+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=wt at root' '
3966
+ cat >27/expected <<EOF &&
3967
+ setup: git_dir: $TRASH_DIRECTORY/27.git
3968
+ setup: worktree: $TRASH_DIRECTORY/27/wt
3969
+ setup: cwd: $TRASH_DIRECTORY/27
3970
+ setup: prefix: (null)
3971
+ EOF
3972
+ test_repo 27 .git "$TRASH_DIRECTORY/27/wt"
3973
+ '
3974
+
3975
+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) at root' '
3976
+ cat >27/expected <<EOF &&
3977
+ setup: git_dir: $TRASH_DIRECTORY/27.git
3978
+ setup: worktree: $TRASH_DIRECTORY/27/wt
3979
+ setup: cwd: $TRASH_DIRECTORY/27
3980
+ setup: prefix: (null)
3981
+ EOF
3982
+ test_repo 27 .git wt
3983
+ '
3984
+
3985
+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=wt(rel) at root' '
3986
+ cat >27/expected <<EOF &&
3987
+ setup: git_dir: $TRASH_DIRECTORY/27.git
3988
+ setup: worktree: $TRASH_DIRECTORY/27/wt
3989
+ setup: cwd: $TRASH_DIRECTORY/27
3990
+ setup: prefix: (null)
3991
+ EOF
3992
+ test_repo 27 "$TRASH_DIRECTORY/27/.git" wt
3993
+ '
3994
+
3995
+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=wt at root' '
3996
+ cat >27/expected <<EOF &&
3997
+ setup: git_dir: $TRASH_DIRECTORY/27.git
3998
+ setup: worktree: $TRASH_DIRECTORY/27/wt
3999
+ setup: cwd: $TRASH_DIRECTORY/27
4000
+ setup: prefix: (null)
4001
+ EOF
4002
+ test_repo 27 "$TRASH_DIRECTORY/27/.git" "$TRASH_DIRECTORY/27/wt"
4003
+ '
4004
+
4005
+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=wt in subdir' '
4006
+ cat >27/sub/sub/expected <<EOF &&
4007
+ setup: git_dir: $TRASH_DIRECTORY/27.git
4008
+ setup: worktree: $TRASH_DIRECTORY/27/wt
4009
+ setup: cwd: $TRASH_DIRECTORY/27/sub/sub
4010
+ setup: prefix: (null)
4011
+ EOF
4012
+ test_repo 27/sub/sub ../../.git "$TRASH_DIRECTORY/27/wt"
4013
+ '
4014
+
4015
+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) in subdir' '
4016
+ cat >27/sub/sub/expected <<EOF &&
4017
+ setup: git_dir: $TRASH_DIRECTORY/27.git
4018
+ setup: worktree: $TRASH_DIRECTORY/27/wt
4019
+ setup: cwd: $TRASH_DIRECTORY/27/sub/sub
4020
+ setup: prefix: (null)
4021
+ EOF
4022
+ test_repo 27/sub/sub ../../.git ../../wt
4023
+ '
4024
+
4025
+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=wt(rel) in subdir' '
4026
+ cat >27/sub/sub/expected <<EOF &&
4027
+ setup: git_dir: $TRASH_DIRECTORY/27.git
4028
+ setup: worktree: $TRASH_DIRECTORY/27/wt
4029
+ setup: cwd: $TRASH_DIRECTORY/27/sub/sub
4030
+ setup: prefix: (null)
4031
+ EOF
4032
+ test_repo 27/sub/sub "$TRASH_DIRECTORY/27/.git" ../../wt
4033
+ '
4034
+
4035
+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=wt in subdir' '
4036
+ cat >27/sub/sub/expected <<EOF &&
4037
+ setup: git_dir: $TRASH_DIRECTORY/27.git
4038
+ setup: worktree: $TRASH_DIRECTORY/27/wt
4039
+ setup: cwd: $TRASH_DIRECTORY/27/sub/sub
4040
+ setup: prefix: (null)
4041
+ EOF
4042
+ test_repo 27/sub/sub "$TRASH_DIRECTORY/27/.git" "$TRASH_DIRECTORY/27/wt"
4043
+ '
4044
+
4045
+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=.. at root' '
4046
+ cat >27/expected <<EOF &&
4047
+ setup: git_dir: $TRASH_DIRECTORY/27.git
4048
+ setup: worktree: $TRASH_DIRECTORY
4049
+ setup: cwd: $TRASH_DIRECTORY
4050
+ setup: prefix: 27/
4051
+ EOF
4052
+ test_repo 27 .git "$TRASH_DIRECTORY"
4053
+ '
4054
+
4055
+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=..(rel) at root' '
4056
+ cat >27/expected <<EOF &&
4057
+ setup: git_dir: $TRASH_DIRECTORY/27.git
4058
+ setup: worktree: $TRASH_DIRECTORY
4059
+ setup: cwd: $TRASH_DIRECTORY
4060
+ setup: prefix: 27/
4061
+ EOF
4062
+ test_repo 27 .git ..
4063
+ '
4064
+
4065
+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=..(rel) at root' '
4066
+ cat >27/expected <<EOF &&
4067
+ setup: git_dir: $TRASH_DIRECTORY/27.git
4068
+ setup: worktree: $TRASH_DIRECTORY
4069
+ setup: cwd: $TRASH_DIRECTORY
4070
+ setup: prefix: 27/
4071
+ EOF
4072
+ test_repo 27 "$TRASH_DIRECTORY/27/.git" ..
4073
+ '
4074
+
4075
+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=.. at root' '
4076
+ cat >27/expected <<EOF &&
4077
+ setup: git_dir: $TRASH_DIRECTORY/27.git
4078
+ setup: worktree: $TRASH_DIRECTORY
4079
+ setup: cwd: $TRASH_DIRECTORY
4080
+ setup: prefix: 27/
4081
+ EOF
4082
+ test_repo 27 "$TRASH_DIRECTORY/27/.git" "$TRASH_DIRECTORY"
4083
+ '
4084
+
4085
+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=.. in subdir' '
4086
+ cat >27/sub/sub/expected <<EOF &&
4087
+ setup: git_dir: $TRASH_DIRECTORY/27.git
4088
+ setup: worktree: $TRASH_DIRECTORY
4089
+ setup: cwd: $TRASH_DIRECTORY
4090
+ setup: prefix: 27/sub/sub/
4091
+ EOF
4092
+ test_repo 27/sub/sub ../../.git "$TRASH_DIRECTORY"
4093
+ '
4094
+
4095
+ test_expect_failure ' #27: GIT_DIR(rel), GIT_WORK_TREE=..(rel) in subdir' '
4096
+ cat >27/sub/sub/expected <<EOF &&
4097
+ setup: git_dir: $TRASH_DIRECTORY/27.git
4098
+ setup: worktree: $TRASH_DIRECTORY
4099
+ setup: cwd: $TRASH_DIRECTORY
4100
+ setup: prefix: 27/sub/sub/
4101
+ EOF
4102
+ test_repo 27/sub/sub ../../.git ../../..
4103
+ '
4104
+
4105
+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=..(rel) in subdir' '
4106
+ cat >27/sub/sub/expected <<EOF &&
4107
+ setup: git_dir: $TRASH_DIRECTORY/27.git
4108
+ setup: worktree: $TRASH_DIRECTORY
4109
+ setup: cwd: $TRASH_DIRECTORY
4110
+ setup: prefix: 27/sub/sub/
4111
+ EOF
4112
+ test_repo 27/sub/sub "$TRASH_DIRECTORY/27/.git" ../../../
4113
+ '
4114
+
4115
+ test_expect_failure ' #27: GIT_DIR, GIT_WORK_TREE=.. in subdir' '
4116
+ cat >27/sub/sub/expected <<EOF &&
4117
+ setup: git_dir: $TRASH_DIRECTORY/27.git
4118
+ setup: worktree: $TRASH_DIRECTORY
4119
+ setup: cwd: $TRASH_DIRECTORY
4120
+ setup: prefix: 27/sub/sub/
4121
+ EOF
4122
+ test_repo 27/sub/sub "$TRASH_DIRECTORY/27/.git" "$TRASH_DIRECTORY"
4123
+ '
4124
+
3857
4125
test_done
0 commit comments