@@ -35,12 +35,23 @@ type TreeEntry struct {
3535
3636 ptree * Tree
3737
38+ lastUniqueEntry * TreeEntry
39+ lastUniquePath string
40+
3841 commited bool
3942
4043 size int64
4144 sized bool
4245}
4346
47+ func (te * TreeEntry ) LastUniqueEntry () * TreeEntry {
48+ return te .lastUniqueEntry
49+ }
50+
51+ func (te * TreeEntry ) LastUniquePath () string {
52+ return te .lastUniquePath
53+ }
54+
4455func (te * TreeEntry ) Name () string {
4556 return te .name
4657}
@@ -66,37 +77,23 @@ func (te *TreeEntry) IsSubModule() bool {
6677 return te .mode == ENTRY_MODE_COMMIT
6778}
6879
69- func (te * TreeEntry ) JumpableName () string {
70- entry := te
71- for entry .IsJumpableDir () {
72- tree , _ := entry .ptree .SubTree (entry .name )
73- entries , _ := tree .ListEntries ()
74- entry = entries [0 ]
75- }
76- return entry .name
77- }
78- func (te * TreeEntry ) JumpablePath () string {
79- path := ""
80- entry := te
81- for entry .IsJumpableDir () {
82- path += entry .name + "/"
83- tree , _ := entry .ptree .SubTree (entry .name )
84- entries , _ := tree .ListEntries ()
85- entry = entries [0 ]
86- }
87- return path
88- }
80+ func (te * TreeEntry ) parseLastUniqueEntry () * TreeEntry {
81+ te .lastUniqueEntry = te
82+ te .lastUniquePath = ""
8983
90- func (te * TreeEntry ) IsJumpableDir () bool {
91- if te .IsSubModule () || ! te .IsDir () {
92- return false
84+ if te .lastUniqueEntry .IsSubModule () || ! te .lastUniqueEntry .IsDir () {
85+ return te .lastUniqueEntry
9386 }
94- tree , err := te .ptree .SubTree (te .name )
95- if err != nil {
96- return false
87+
88+ tree , _ := te .lastUniqueEntry .ptree .SubTree (te .lastUniqueEntry .name )
89+ entries , _ := tree .ListEntries ()
90+ for ! (te .lastUniqueEntry .IsSubModule () || ! te .lastUniqueEntry .IsDir ()) && len (entries ) == 1 {
91+ te .lastUniquePath += te .lastUniqueEntry .name + "/"
92+ te .lastUniqueEntry = entries [0 ]
93+ tree , _ = te .lastUniqueEntry .ptree .SubTree (te .lastUniqueEntry .name )
94+ entries , _ = tree .ListEntries ()
9795 }
98- entries , err := tree .ListEntries ()
99- return len (entries ) == 1
96+ return te .lastUniqueEntry
10097}
10198
10299func (te * TreeEntry ) IsDir () bool {
0 commit comments