@@ -1965,3 +1965,78 @@ func (s *WorktreeSuite) TestAddAndCommit(c *C) {
19651965 })
19661966 c .Assert (err , IsNil )
19671967}
1968+
1969+ func (s * WorktreeSuite ) TestLinkedWorktree (c * C ) {
1970+ fs := fixtures .ByTag ("linked-worktree" ).One ().Worktree ()
1971+
1972+ // Open main repo.
1973+ {
1974+ fs , err := fs .Chroot ("main" )
1975+ c .Assert (err , IsNil )
1976+ repo , err := PlainOpen (fs .Root ())
1977+ c .Assert (err , IsNil )
1978+
1979+ wt , err := repo .Worktree ()
1980+ c .Assert (err , IsNil )
1981+
1982+ status , err := wt .Status ()
1983+ c .Assert (err , IsNil )
1984+ c .Assert (len (status ), Equals , 2 ) // 2 files
1985+
1986+ head , err := repo .Head ()
1987+ c .Assert (err , IsNil )
1988+ c .Assert (string (head .Name ()), Equals , "refs/heads/master" )
1989+ }
1990+
1991+ // Open linked-worktree #1.
1992+ {
1993+ fs , err := fs .Chroot ("linked-worktree-1" )
1994+ c .Assert (err , IsNil )
1995+ repo , err := PlainOpen (fs .Root ())
1996+ c .Assert (err , IsNil )
1997+
1998+ wt , err := repo .Worktree ()
1999+ c .Assert (err , IsNil )
2000+
2001+ status , err := wt .Status ()
2002+ c .Assert (err , IsNil )
2003+ c .Assert (len (status ), Equals , 3 ) // 3 files
2004+
2005+ _ , ok := status ["linked-worktree-1-unique-file.txt" ]
2006+ c .Assert (ok , Equals , true )
2007+
2008+ head , err := repo .Head ()
2009+ c .Assert (err , IsNil )
2010+ c .Assert (string (head .Name ()), Equals , "refs/heads/linked-worktree-1" )
2011+ }
2012+
2013+ // Open linked-worktree #2.
2014+ {
2015+ fs , err := fs .Chroot ("linked-worktree-2" )
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 , 3 ) // 3 files
2026+
2027+ _ , ok := status ["linked-worktree-2-unique-file.txt" ]
2028+ c .Assert (ok , Equals , true )
2029+
2030+ head , err := repo .Head ()
2031+ c .Assert (err , IsNil )
2032+ c .Assert (string (head .Name ()), Equals , "refs/heads/branch-with-different-name" )
2033+ }
2034+
2035+ // Open linked-worktree #2.
2036+ {
2037+ fs , err := fs .Chroot ("linked-worktree-invalid-commondir" )
2038+ c .Assert (err , IsNil )
2039+ _ , err = PlainOpen (fs .Root ())
2040+ c .Assert (err , Equals , ErrRepositoryIncomplete )
2041+ }
2042+ }
0 commit comments