@@ -2006,3 +2006,78 @@ func (s *WorktreeSuite) TestAddAndCommit(c *C) {
2006
2006
})
2007
2007
c .Assert (err , IsNil )
2008
2008
}
2009
+
2010
+ func (s * WorktreeSuite ) TestLinkedWorktree (c * C ) {
2011
+ fs := fixtures .ByTag ("linked-worktree" ).One ().Worktree ()
2012
+
2013
+ // Open main repo.
2014
+ {
2015
+ fs , err := fs .Chroot ("main" )
2016
+ c .Assert (err , IsNil )
2017
+ repo , err := PlainOpen (fs .Root ())
2018
+ c .Assert (err , IsNil )
2019
+
2020
+ wt , err := repo .Worktree ()
2021
+ c .Assert (err , IsNil )
2022
+
2023
+ status , err := wt .Status ()
2024
+ c .Assert (err , IsNil )
2025
+ c .Assert (len (status ), Equals , 2 ) // 2 files
2026
+
2027
+ head , err := repo .Head ()
2028
+ c .Assert (err , IsNil )
2029
+ c .Assert (string (head .Name ()), Equals , "refs/heads/master" )
2030
+ }
2031
+
2032
+ // Open linked-worktree #1.
2033
+ {
2034
+ fs , err := fs .Chroot ("linked-worktree-1" )
2035
+ c .Assert (err , IsNil )
2036
+ repo , err := PlainOpen (fs .Root ())
2037
+ c .Assert (err , IsNil )
2038
+
2039
+ wt , err := repo .Worktree ()
2040
+ c .Assert (err , IsNil )
2041
+
2042
+ status , err := wt .Status ()
2043
+ c .Assert (err , IsNil )
2044
+ c .Assert (len (status ), Equals , 3 ) // 3 files
2045
+
2046
+ _ , ok := status ["linked-worktree-1-unique-file.txt" ]
2047
+ c .Assert (ok , Equals , true )
2048
+
2049
+ head , err := repo .Head ()
2050
+ c .Assert (err , IsNil )
2051
+ c .Assert (string (head .Name ()), Equals , "refs/heads/linked-worktree-1" )
2052
+ }
2053
+
2054
+ // Open linked-worktree #2.
2055
+ {
2056
+ fs , err := fs .Chroot ("linked-worktree-2" )
2057
+ c .Assert (err , IsNil )
2058
+ repo , err := PlainOpen (fs .Root ())
2059
+ c .Assert (err , IsNil )
2060
+
2061
+ wt , err := repo .Worktree ()
2062
+ c .Assert (err , IsNil )
2063
+
2064
+ status , err := wt .Status ()
2065
+ c .Assert (err , IsNil )
2066
+ c .Assert (len (status ), Equals , 3 ) // 3 files
2067
+
2068
+ _ , ok := status ["linked-worktree-2-unique-file.txt" ]
2069
+ c .Assert (ok , Equals , true )
2070
+
2071
+ head , err := repo .Head ()
2072
+ c .Assert (err , IsNil )
2073
+ c .Assert (string (head .Name ()), Equals , "refs/heads/branch-with-different-name" )
2074
+ }
2075
+
2076
+ // Open linked-worktree #2.
2077
+ {
2078
+ fs , err := fs .Chroot ("linked-worktree-invalid-commondir" )
2079
+ c .Assert (err , IsNil )
2080
+ _ , err = PlainOpen (fs .Root ())
2081
+ c .Assert (err , Equals , ErrRepositoryIncomplete )
2082
+ }
2083
+ }
0 commit comments