@@ -2560,4 +2560,270 @@ EOF
2560
2560
test_repo 18/sub "$TRASH_DIRECTORY/18/.git"
2561
2561
'
2562
2562
2563
+ #
2564
+ # case #19
2565
+ #
2566
+ # ###########################################################
2567
+ #
2568
+ # Input:
2569
+ #
2570
+ # - GIT_WORK_TREE is set
2571
+ # - GIT_DIR is set
2572
+ # - .git is a directory
2573
+ # - core.worktree is not set
2574
+ # - core.bare is set
2575
+ #
2576
+ # Output:
2577
+ #
2578
+ # bare repo is overridden by GIT_WORK_TREE -> #3
2579
+
2580
+ test_expect_success ' #19: setup' '
2581
+ unset GIT_DIR GIT_WORK_TREE &&
2582
+ mkdir 19 19/sub 19/sub/sub 19.wt 19.wt/sub 19/wt 19/wt/sub &&
2583
+ cd 19 &&
2584
+ git init &&
2585
+ git config core.bare true &&
2586
+ cd ..
2587
+ '
2588
+
2589
+ test_expect_success ' #19: GIT_DIR(rel), GIT_WORK_TREE=root at root' '
2590
+ cat >19/expected <<EOF &&
2591
+ setup: git_dir: .git
2592
+ setup: worktree: $TRASH_DIRECTORY/19
2593
+ setup: cwd: $TRASH_DIRECTORY/19
2594
+ setup: prefix: (null)
2595
+ EOF
2596
+ test_repo 19 .git "$TRASH_DIRECTORY/19"
2597
+ '
2598
+
2599
+ test_expect_success ' #19: GIT_DIR(rel), GIT_WORK_TREE=root(rel) at root' '
2600
+ cat >19/expected <<EOF &&
2601
+ setup: git_dir: .git
2602
+ setup: worktree: $TRASH_DIRECTORY/19
2603
+ setup: cwd: $TRASH_DIRECTORY/19
2604
+ setup: prefix: (null)
2605
+ EOF
2606
+ test_repo 19 .git .
2607
+ '
2608
+
2609
+ test_expect_success ' #19: GIT_DIR, GIT_WORK_TREE=root at root' '
2610
+ cat >19/expected <<EOF &&
2611
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2612
+ setup: worktree: $TRASH_DIRECTORY/19
2613
+ setup: cwd: $TRASH_DIRECTORY/19
2614
+ setup: prefix: (null)
2615
+ EOF
2616
+ test_repo 19 "$TRASH_DIRECTORY/19/.git" "$TRASH_DIRECTORY/19"
2617
+ '
2618
+
2619
+ test_expect_success ' #19: GIT_DIR, GIT_WORK_TREE=root(rel) at root' '
2620
+ cat >19/expected <<EOF &&
2621
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2622
+ setup: worktree: $TRASH_DIRECTORY/19
2623
+ setup: cwd: $TRASH_DIRECTORY/19
2624
+ setup: prefix: (null)
2625
+ EOF
2626
+ test_repo 19 "$TRASH_DIRECTORY/19/.git" .
2627
+ '
2628
+
2629
+ test_expect_success ' #19: GIT_DIR(rel), GIT_WORKTREE=root in subdir' '
2630
+ cat >19/sub/sub/expected <<EOF &&
2631
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2632
+ setup: worktree: $TRASH_DIRECTORY/19
2633
+ setup: cwd: $TRASH_DIRECTORY/19
2634
+ setup: prefix: sub/sub/
2635
+ EOF
2636
+ test_repo 19/sub/sub ../../.git "$TRASH_DIRECTORY/19"
2637
+ '
2638
+
2639
+ test_expect_success ' #19: GIT_DIR(rel), GIT_WORKTREE=root(rel) in subdir' '
2640
+ cat >19/sub/sub/expected <<EOF &&
2641
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2642
+ setup: worktree: $TRASH_DIRECTORY/19
2643
+ setup: cwd: $TRASH_DIRECTORY/19
2644
+ setup: prefix: sub/sub/
2645
+ EOF
2646
+ test_repo 19/sub/sub ../../.git ../..
2647
+ '
2648
+
2649
+ test_expect_success ' #19: GIT_DIR, GIT_WORKTREE=root in subdir' '
2650
+ cat >19/sub/expected <<EOF &&
2651
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2652
+ setup: worktree: $TRASH_DIRECTORY/19
2653
+ setup: cwd: $TRASH_DIRECTORY/19
2654
+ setup: prefix: sub/
2655
+ EOF
2656
+ test_repo 19/sub "$TRASH_DIRECTORY/19/.git" "$TRASH_DIRECTORY/19"
2657
+ '
2658
+
2659
+ test_expect_success ' #19: GIT_DIR, GIT_WORKTREE=root(rel) in subdir' '
2660
+ cat >19/sub/sub/expected <<EOF &&
2661
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2662
+ setup: worktree: $TRASH_DIRECTORY/19
2663
+ setup: cwd: $TRASH_DIRECTORY/19
2664
+ setup: prefix: sub/sub/
2665
+ EOF
2666
+ test_repo 19/sub/sub "$TRASH_DIRECTORY/19/.git" ../..
2667
+ '
2668
+
2669
+ test_expect_success ' #19: GIT_DIR(rel), GIT_WORK_TREE=wt at root' '
2670
+ cat >19/expected <<EOF &&
2671
+ setup: git_dir: .git
2672
+ setup: worktree: $TRASH_DIRECTORY/19/wt
2673
+ setup: cwd: $TRASH_DIRECTORY/19
2674
+ setup: prefix: (null)
2675
+ EOF
2676
+ test_repo 19 .git "$TRASH_DIRECTORY/19/wt"
2677
+ '
2678
+
2679
+ test_expect_success ' #19: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) at root' '
2680
+ cat >19/expected <<EOF &&
2681
+ setup: git_dir: .git
2682
+ setup: worktree: $TRASH_DIRECTORY/19/wt
2683
+ setup: cwd: $TRASH_DIRECTORY/19
2684
+ setup: prefix: (null)
2685
+ EOF
2686
+ test_repo 19 .git wt
2687
+ '
2688
+
2689
+ test_expect_success ' #19: GIT_DIR, GIT_WORK_TREE=wt(rel) at root' '
2690
+ cat >19/expected <<EOF &&
2691
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2692
+ setup: worktree: $TRASH_DIRECTORY/19/wt
2693
+ setup: cwd: $TRASH_DIRECTORY/19
2694
+ setup: prefix: (null)
2695
+ EOF
2696
+ test_repo 19 "$TRASH_DIRECTORY/19/.git" wt
2697
+ '
2698
+
2699
+ test_expect_success ' #19: GIT_DIR, GIT_WORK_TREE=wt at root' '
2700
+ cat >19/expected <<EOF &&
2701
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2702
+ setup: worktree: $TRASH_DIRECTORY/19/wt
2703
+ setup: cwd: $TRASH_DIRECTORY/19
2704
+ setup: prefix: (null)
2705
+ EOF
2706
+ test_repo 19 "$TRASH_DIRECTORY/19/.git" "$TRASH_DIRECTORY/19/wt"
2707
+ '
2708
+
2709
+ test_expect_success ' #19: GIT_DIR(rel), GIT_WORK_TREE=wt in subdir' '
2710
+ cat >19/sub/sub/expected <<EOF &&
2711
+ setup: git_dir: ../../.git
2712
+ setup: worktree: $TRASH_DIRECTORY/19/wt
2713
+ setup: cwd: $TRASH_DIRECTORY/19/sub/sub
2714
+ setup: prefix: (null)
2715
+ EOF
2716
+ test_repo 19/sub/sub ../../.git "$TRASH_DIRECTORY/19/wt"
2717
+ '
2718
+
2719
+ test_expect_success ' #19: GIT_DIR(rel), GIT_WORK_TREE=wt(rel) in subdir' '
2720
+ cat >19/sub/sub/expected <<EOF &&
2721
+ setup: git_dir: ../../.git
2722
+ setup: worktree: $TRASH_DIRECTORY/19/wt
2723
+ setup: cwd: $TRASH_DIRECTORY/19/sub/sub
2724
+ setup: prefix: (null)
2725
+ EOF
2726
+ test_repo 19/sub/sub ../../.git ../../wt
2727
+ '
2728
+
2729
+ test_expect_success ' #19: GIT_DIR, GIT_WORK_TREE=wt(rel) in subdir' '
2730
+ cat >19/sub/sub/expected <<EOF &&
2731
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2732
+ setup: worktree: $TRASH_DIRECTORY/19/wt
2733
+ setup: cwd: $TRASH_DIRECTORY/19/sub/sub
2734
+ setup: prefix: (null)
2735
+ EOF
2736
+ test_repo 19/sub/sub "$TRASH_DIRECTORY/19/.git" ../../wt
2737
+ '
2738
+
2739
+ test_expect_success ' #19: GIT_DIR, GIT_WORK_TREE=wt in subdir' '
2740
+ cat >19/sub/sub/expected <<EOF &&
2741
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2742
+ setup: worktree: $TRASH_DIRECTORY/19/wt
2743
+ setup: cwd: $TRASH_DIRECTORY/19/sub/sub
2744
+ setup: prefix: (null)
2745
+ EOF
2746
+ test_repo 19/sub/sub "$TRASH_DIRECTORY/19/.git" "$TRASH_DIRECTORY/19/wt"
2747
+ '
2748
+
2749
+ test_expect_success ' #19: GIT_DIR(rel), GIT_WORK_TREE=.. at root' '
2750
+ cat >19/expected <<EOF &&
2751
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2752
+ setup: worktree: $TRASH_DIRECTORY
2753
+ setup: cwd: $TRASH_DIRECTORY
2754
+ setup: prefix: 19/
2755
+ EOF
2756
+ test_repo 19 .git "$TRASH_DIRECTORY"
2757
+ '
2758
+
2759
+ test_expect_success ' #19: GIT_DIR(rel), GIT_WORK_TREE=..(rel) at root' '
2760
+ cat >19/expected <<EOF &&
2761
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2762
+ setup: worktree: $TRASH_DIRECTORY
2763
+ setup: cwd: $TRASH_DIRECTORY
2764
+ setup: prefix: 19/
2765
+ EOF
2766
+ test_repo 19 .git ..
2767
+ '
2768
+
2769
+ test_expect_success ' #19: GIT_DIR, GIT_WORK_TREE=..(rel) at root' '
2770
+ cat >19/expected <<EOF &&
2771
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2772
+ setup: worktree: $TRASH_DIRECTORY
2773
+ setup: cwd: $TRASH_DIRECTORY
2774
+ setup: prefix: 19/
2775
+ EOF
2776
+ test_repo 19 "$TRASH_DIRECTORY/19/.git" ..
2777
+ '
2778
+
2779
+ test_expect_success ' #19: GIT_DIR, GIT_WORK_TREE=.. at root' '
2780
+ cat >19/expected <<EOF &&
2781
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2782
+ setup: worktree: $TRASH_DIRECTORY
2783
+ setup: cwd: $TRASH_DIRECTORY
2784
+ setup: prefix: 19/
2785
+ EOF
2786
+ test_repo 19 "$TRASH_DIRECTORY/19/.git" "$TRASH_DIRECTORY"
2787
+ '
2788
+
2789
+ test_expect_success ' #19: GIT_DIR(rel), GIT_WORK_TREE=.. in subdir' '
2790
+ cat >19/sub/sub/expected <<EOF &&
2791
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2792
+ setup: worktree: $TRASH_DIRECTORY
2793
+ setup: cwd: $TRASH_DIRECTORY
2794
+ setup: prefix: 19/sub/sub/
2795
+ EOF
2796
+ test_repo 19/sub/sub ../../.git "$TRASH_DIRECTORY"
2797
+ '
2798
+
2799
+ test_expect_success ' #19: GIT_DIR(rel), GIT_WORK_TREE=..(rel) in subdir' '
2800
+ cat >19/sub/sub/expected <<EOF &&
2801
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2802
+ setup: worktree: $TRASH_DIRECTORY
2803
+ setup: cwd: $TRASH_DIRECTORY
2804
+ setup: prefix: 19/sub/sub/
2805
+ EOF
2806
+ test_repo 19/sub/sub ../../.git ../../..
2807
+ '
2808
+
2809
+ test_expect_success ' #19: GIT_DIR, GIT_WORK_TREE=..(rel) in subdir' '
2810
+ cat >19/sub/sub/expected <<EOF &&
2811
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2812
+ setup: worktree: $TRASH_DIRECTORY
2813
+ setup: cwd: $TRASH_DIRECTORY
2814
+ setup: prefix: 19/sub/sub/
2815
+ EOF
2816
+ test_repo 19/sub/sub "$TRASH_DIRECTORY/19/.git" ../../../
2817
+ '
2818
+
2819
+ test_expect_success ' #19: GIT_DIR, GIT_WORK_TREE=.. in subdir' '
2820
+ cat >19/sub/sub/expected <<EOF &&
2821
+ setup: git_dir: $TRASH_DIRECTORY/19/.git
2822
+ setup: worktree: $TRASH_DIRECTORY
2823
+ setup: cwd: $TRASH_DIRECTORY
2824
+ setup: prefix: 19/sub/sub/
2825
+ EOF
2826
+ test_repo 19/sub/sub "$TRASH_DIRECTORY/19/.git" "$TRASH_DIRECTORY"
2827
+ '
2828
+
2563
2829
test_done
0 commit comments