@@ -56,7 +56,7 @@ public class FileHistoryIterator : RevisionIterator {
56
56
guard let oid = super. next ( ) else {
57
57
return nil
58
58
}
59
-
59
+
60
60
lastFetchedOid = oid
61
61
62
62
do {
@@ -69,53 +69,58 @@ public class FileHistoryIterator : RevisionIterator {
69
69
// Find current entry
70
70
let entry = try tree. entry ( byPath: path)
71
71
if ( entry == nil ) {
72
- previousOid = oid
73
- return next ( ) ;
72
+ return diffPrev ( tree: tree, oid: oid)
74
73
}
75
74
76
75
// Test previous
77
76
if ( previousOid == nil ) {
77
+ previousOid = oid
78
+
79
+ return next ( )
80
+ } else {
81
+ return diffPrev ( tree: tree, oid: oid)
82
+ }
83
+
84
+ } catch {
85
+ NSLog ( " Unable to find next OID \( error) " )
86
+ }
87
+
88
+ return nil
89
+ }
90
+
91
+ private func diffPrev( tree: Tree , oid: OID ) -> OID ? {
92
+ guard let pOid = previousOid else { return next ( ) }
93
+
94
+ do {
95
+ // Find commit
96
+ let previousCommit = try repository. commitLookup ( oid: pOid)
97
+
98
+ // Find parent entry
99
+ let previousTree = try previousCommit. tree ( )
100
+
101
+ // Find diff
102
+ let diff = try previousTree. diff ( other: tree)
103
+
104
+ // Find
105
+ if diff. find ( byPath: path) == nil {
78
106
79
107
// Set previous and find next
80
108
previousOid = oid
81
109
82
110
return next ( )
83
-
84
111
} else {
85
112
86
- // Find commit
87
- let previousCommit = try repository . commitLookup ( oid : previousOid! )
113
+ // Save previousOid
114
+ let validOid = previousOid
88
115
89
- // Find parent entry
90
- let previousTree = try previousCommit. tree ( )
91
-
92
- // Find diff
93
- let diff = try previousTree. diff ( other: tree)
116
+ // Set previousOid
117
+ previousOid = oid
94
118
95
- // Find
96
- if diff. find ( byPath: path) == nil {
97
-
98
- // Set previous and find next
99
- previousOid = oid
100
-
101
- return next ( )
102
- } else {
103
-
104
- // Save previousOid
105
- let validOid = previousOid
106
-
107
- // Set previousOid
108
- previousOid = oid
109
-
110
- return validOid;
111
- }
119
+ return validOid;
112
120
}
113
-
114
121
} catch {
115
- NSLog ( " Unable to find next OID \( error ) " )
122
+ return nil
116
123
}
117
-
118
- return nil
119
124
}
120
125
121
126
public func getLast( ) -> OID ? {
0 commit comments