@@ -35,12 +35,23 @@ type TreeEntry struct {
35
35
36
36
ptree * Tree
37
37
38
+ lastUniqueEntry * TreeEntry
39
+ lastUniquePath string
40
+
38
41
commited bool
39
42
40
43
size int64
41
44
sized bool
42
45
}
43
46
47
+ func (te * TreeEntry ) LastUniqueEntry () * TreeEntry {
48
+ return te .lastUniqueEntry
49
+ }
50
+
51
+ func (te * TreeEntry ) LastUniquePath () string {
52
+ return te .lastUniquePath
53
+ }
54
+
44
55
func (te * TreeEntry ) Name () string {
45
56
return te .name
46
57
}
@@ -66,37 +77,23 @@ func (te *TreeEntry) IsSubModule() bool {
66
77
return te .mode == ENTRY_MODE_COMMIT
67
78
}
68
79
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 = ""
89
83
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
93
86
}
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 ()
97
95
}
98
- entries , err := tree .ListEntries ()
99
- return len (entries ) == 1
96
+ return te .lastUniqueEntry
100
97
}
101
98
102
99
func (te * TreeEntry ) IsDir () bool {
0 commit comments