@@ -1937,3 +1937,78 @@ func (s *WorktreeSuite) TestAddAndCommit(c *C) {
19371937 })
19381938 c .Assert (err , IsNil )
19391939}
1940+
1941+ func (s * WorktreeSuite ) TestLinkedWorktree (c * C ) {
1942+ fs := fixtures .ByTag ("linked-worktree" ).One ().Worktree ()
1943+
1944+ // Open main repo.
1945+ {
1946+ fs , err := fs .Chroot ("main" )
1947+ c .Assert (err , IsNil )
1948+ repo , err := PlainOpen (fs .Root ())
1949+ c .Assert (err , IsNil )
1950+
1951+ wt , err := repo .Worktree ()
1952+ c .Assert (err , IsNil )
1953+
1954+ status , err := wt .Status ()
1955+ c .Assert (err , IsNil )
1956+ c .Assert (len (status ), Equals , 2 ) // 2 files
1957+
1958+ head , err := repo .Head ()
1959+ c .Assert (err , IsNil )
1960+ c .Assert (string (head .Name ()), Equals , "refs/heads/master" )
1961+ }
1962+
1963+ // Open linked-worktree #1.
1964+ {
1965+ fs , err := fs .Chroot ("linked-worktree-1" )
1966+ c .Assert (err , IsNil )
1967+ repo , err := PlainOpen (fs .Root ())
1968+ c .Assert (err , IsNil )
1969+
1970+ wt , err := repo .Worktree ()
1971+ c .Assert (err , IsNil )
1972+
1973+ status , err := wt .Status ()
1974+ c .Assert (err , IsNil )
1975+ c .Assert (len (status ), Equals , 3 ) // 3 files
1976+
1977+ _ , ok := status ["linked-worktree-1-unique-file.txt" ]
1978+ c .Assert (ok , Equals , true )
1979+
1980+ head , err := repo .Head ()
1981+ c .Assert (err , IsNil )
1982+ c .Assert (string (head .Name ()), Equals , "refs/heads/linked-worktree-1" )
1983+ }
1984+
1985+ // Open linked-worktree #2.
1986+ {
1987+ fs , err := fs .Chroot ("linked-worktree-2" )
1988+ c .Assert (err , IsNil )
1989+ repo , err := PlainOpen (fs .Root ())
1990+ c .Assert (err , IsNil )
1991+
1992+ wt , err := repo .Worktree ()
1993+ c .Assert (err , IsNil )
1994+
1995+ status , err := wt .Status ()
1996+ c .Assert (err , IsNil )
1997+ c .Assert (len (status ), Equals , 3 ) // 3 files
1998+
1999+ _ , ok := status ["linked-worktree-2-unique-file.txt" ]
2000+ c .Assert (ok , Equals , true )
2001+
2002+ head , err := repo .Head ()
2003+ c .Assert (err , IsNil )
2004+ c .Assert (string (head .Name ()), Equals , "refs/heads/branch-with-different-name" )
2005+ }
2006+
2007+ // Open linked-worktree #2.
2008+ {
2009+ fs , err := fs .Chroot ("linked-worktree-invalid-commondir" )
2010+ c .Assert (err , IsNil )
2011+ _ , err = PlainOpen (fs .Root ())
2012+ c .Assert (err , Equals , ErrRepositoryIncomplete )
2013+ }
2014+ }
0 commit comments