@@ -2,6 +2,7 @@ use git2::Repository;
2
2
use std:: env;
3
3
use glob:: Pattern ;
4
4
use std:: process:: Command ;
5
+ use std:: time:: Instant ;
5
6
6
7
#[ derive( Clone ) ]
7
8
struct PatternFilter {
@@ -39,17 +40,23 @@ fn main() {
39
40
40
41
let mut filtered_files: Vec < String > = Vec :: new ( ) ;
41
42
43
+ let start = Instant :: now ( ) ;
42
44
for pattern in include_patterns_filters. iter ( ) {
43
45
filtered_files. extend ( filter_files_by_pattern ( & pattern, changed_files. clone ( ) ) ) ;
44
46
}
47
+ let duration = start. elapsed ( ) ;
48
+ println ! ( "Filtering files done in: {:?}" , duration) ;
45
49
50
+ let start = Instant :: now ( ) ;
46
51
for pattern in exclude_patterns_filters. iter ( ) {
47
52
filtered_files = filtered_files
48
53
. iter ( )
49
54
. filter ( |file| !Pattern :: new ( & pattern. pattern ) . expect ( "Failed to create pattern" ) . matches ( file) )
50
55
. map ( |file| file. to_string ( ) )
51
56
. collect ( ) ;
52
57
}
58
+ let duration = start. elapsed ( ) ;
59
+ println ! ( "Excluding files done in: {:?}" , duration) ;
53
60
54
61
println ! ( "DIFF_FILES: {:?}" , filtered_files) ;
55
62
println ! ( "DIFF_COUNT: {}" , filtered_files. len( ) ) ;
@@ -95,7 +102,10 @@ fn create_patterns_filters(arg: &str) -> Vec<PatternFilter> {
95
102
}
96
103
97
104
fn get_changed_files ( ) -> Vec < String > {
105
+ let start = Instant :: now ( ) ;
98
106
let repository = Repository :: open ( "." ) . expect ( "Failed to open repository" ) ;
107
+ let duration = start. elapsed ( ) ;
108
+ println ! ( "Opening repository done in: {:?}" , duration) ;
99
109
100
110
let head = repository. head ( ) . expect ( "Failed to get HEAD" ) ;
101
111
let head_commit = head. peel_to_commit ( ) . expect ( "Failed to peel HEAD to commit" ) ;
@@ -112,6 +122,7 @@ fn get_changed_files() -> Vec<String> {
112
122
let base_ref = repository. find_reference ( & base_ref_string) . expect ( "Failed to find default branch" ) ;
113
123
let base_commit = base_ref. peel_to_commit ( ) . expect ( "Failed to peel default branch to commit" ) ;
114
124
125
+ let start = Instant :: now ( ) ;
115
126
let diff = repository. diff_tree_to_tree (
116
127
Some ( & base_commit. tree ( ) . expect ( "Failed to get base tree" ) ) ,
117
128
Some ( & head_commit. tree ( ) . expect ( "Failed to get HEAD tree" ) ) ,
@@ -130,6 +141,8 @@ fn get_changed_files() -> Vec<String> {
130
141
None ,
131
142
None ,
132
143
) . expect ( "Error while iterating over diff" ) ;
144
+ let duration = start. elapsed ( ) ;
145
+ println ! ( "Getting changed files done in: {:?}" , duration) ;
133
146
134
147
changed_files
135
148
}
0 commit comments