@@ -250,6 +250,11 @@ void apply_virtualfilesystem(struct index_state *istate)
250250{
251251 char * buf , * entry ;
252252 int i ;
253+ int nr_unknown = 0 ;
254+ int nr_vfs_dirs = 0 ;
255+ int nr_vfs_rows = 0 ;
256+ int nr_bulk_skip = 0 ;
257+ int nr_explicit_skip = 0 ;
253258
254259 if (!git_config_get_virtualfilesystem ())
255260 return ;
@@ -267,35 +272,63 @@ void apply_virtualfilesystem(struct index_state *istate)
267272 if (buf [i ] == '\0' ) {
268273 int pos , len ;
269274
275+ nr_vfs_rows ++ ;
276+
270277 len = buf + i - entry ;
271278
272279 /* look for a directory wild card (ie "dir1/") */
273280 if (buf [i - 1 ] == '/' ) {
281+ nr_vfs_dirs ++ ;
274282 if (ignore_case )
275283 adjust_dirname_case (istate , entry );
276284 pos = index_name_pos (istate , entry , len );
277285 if (pos < 0 ) {
278286 pos = - pos - 1 ;
279287 while (pos < istate -> cache_nr && !fspathncmp (istate -> cache [pos ]-> name , entry , len )) {
288+ if (istate -> cache [pos ]-> ce_flags & CE_SKIP_WORKTREE )
289+ nr_bulk_skip ++ ;
280290 istate -> cache [pos ]-> ce_flags &= ~CE_SKIP_WORKTREE ;
281291 pos ++ ;
282292 }
283293 }
284294 } else {
285295 if (ignore_case ) {
286296 struct cache_entry * ce = index_file_exists (istate , entry , len , ignore_case );
287- if (ce )
297+ if (ce ) {
298+ if (ce -> ce_flags & CE_SKIP_WORKTREE )
299+ nr_explicit_skip ++ ;
288300 ce -> ce_flags &= ~CE_SKIP_WORKTREE ;
301+ }
302+ else {
303+ nr_unknown ++ ;
304+ }
289305 } else {
290306 int pos = index_name_pos (istate , entry , len );
291- if (pos >= 0 )
307+ if (pos >= 0 ) {
308+ if (istate -> cache [pos ]-> ce_flags & CE_SKIP_WORKTREE )
309+ nr_explicit_skip ++ ;
292310 istate -> cache [pos ]-> ce_flags &= ~CE_SKIP_WORKTREE ;
311+ }
312+ else {
313+ nr_unknown ++ ;
314+ }
293315 }
294316 }
295317
296318 entry += len + 1 ;
297319 }
298320 }
321+
322+ if (nr_vfs_rows > 0 ) {
323+ trace2_data_intmax ("vfs" , the_repository , "apply/tracked" , nr_bulk_skip + nr_explicit_skip );
324+
325+ trace2_data_intmax ("vfs" , the_repository , "apply/vfs_rows" , nr_vfs_rows );
326+ trace2_data_intmax ("vfs" , the_repository , "apply/vfs_dirs" , nr_vfs_dirs );
327+
328+ trace2_data_intmax ("vfs" , the_repository , "apply/nr_unknown" , nr_unknown );
329+ trace2_data_intmax ("vfs" , the_repository , "apply/nr_bulk_skip" , nr_bulk_skip );
330+ trace2_data_intmax ("vfs" , the_repository , "apply/nr_explicit_skip" , nr_explicit_skip );
331+ }
299332}
300333
301334/*
0 commit comments