@@ -2006,3 +2006,78 @@ func (s *WorktreeSuite) TestAddAndCommit(c *C) {
20062006 })
20072007 c .Assert (err , IsNil )
20082008}
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