@@ -149,9 +149,22 @@ public int CheckAndProcessEvents()
149
149
if ( fileEvents . Length > 0 )
150
150
{
151
151
Logger . Trace ( "Processing {0} Events" , fileEvents . Length ) ;
152
+ ProcessEvents ( fileEvents ) ;
152
153
}
153
154
155
+ processingEvents = false ;
156
+ signalProcessingEventsDone . Set ( ) ;
157
+ return lastCountOfProcessedEvents ;
158
+ }
159
+
160
+ private void ProcessEvents ( Event [ ] fileEvents )
161
+ {
162
+ var configChanged = false ;
163
+ var headChanged = false ;
154
164
var repositoryChanged = false ;
165
+ var indexChanged = false ;
166
+
167
+ string headContent = null ;
155
168
156
169
foreach ( var fileEvent in fileEvents )
157
170
{
@@ -180,175 +193,184 @@ public int CheckAndProcessEvents()
180
193
// handling events in .git/*
181
194
if ( fileA . IsChildOf ( paths . DotGitPath ) )
182
195
{
183
- HandleEventInDotGit ( fileEvent , fileA , fileB ) ;
184
- }
185
- else
186
- {
187
- if ( repositoryChanged || ignoredPaths . Any ( ignoredPath => fileA . IsChildOf ( ignoredPath ) ) )
196
+ if ( fileA . Equals ( paths . DotGitConfig ) )
188
197
{
189
- continue ;
190
- }
191
-
192
- repositoryChanged = true ;
193
- }
194
- lastCountOfProcessedEvents ++ ;
195
- }
196
-
197
- if ( repositoryChanged )
198
- {
199
- Logger . Trace ( "RepositoryChanged" ) ;
200
- RepositoryChanged ? . Invoke ( ) ;
201
- }
202
-
203
- processingEvents = false ;
204
- signalProcessingEventsDone . Set ( ) ;
205
- return lastCountOfProcessedEvents ;
206
- }
198
+ Logger . Trace ( "ConfigChanged" ) ;
207
199
208
- private void HandleEventInDotGit ( Event fileEvent , NPath fileA , NPath fileB = null )
209
- {
210
- if ( fileA . Equals ( paths . DotGitConfig ) )
211
- {
212
- Logger . Trace ( "ConfigChanged" ) ;
213
-
214
- ConfigChanged ? . Invoke ( ) ;
215
- }
216
- else if ( fileA . Equals ( paths . DotGitHead ) )
217
- {
218
- string headContent = null ;
219
- if ( fileEvent . Type != EventType . DELETED )
220
- {
221
- headContent = paths . DotGitHead . ReadAllLines ( ) . FirstOrDefault ( ) ;
222
- }
223
-
224
- Logger . Trace ( "HeadChanged: {0}" , headContent ?? "[null]" ) ;
225
- HeadChanged ? . Invoke ( headContent ) ;
226
- }
227
- else if ( fileA . Equals ( paths . DotGitIndex ) )
228
- {
229
- Logger . Trace ( "IndexChanged" ) ;
230
- IndexChanged ? . Invoke ( ) ;
231
- }
232
- else if ( fileA . IsChildOf ( paths . RemotesPath ) )
233
- {
234
- var relativePath = fileA . RelativeTo ( paths . RemotesPath ) ;
235
- var relativePathElements = relativePath . Elements . ToArray ( ) ;
236
-
237
- if ( ! relativePathElements . Any ( ) )
238
- {
239
- return ;
240
- }
241
-
242
- var origin = relativePathElements [ 0 ] ;
200
+ configChanged = true ;
201
+ }
202
+ else if ( fileA . Equals ( paths . DotGitHead ) )
203
+ {
204
+ if ( fileEvent . Type != EventType . DELETED )
205
+ {
206
+ headContent = paths . DotGitHead . ReadAllLines ( ) . FirstOrDefault ( ) ;
207
+ }
243
208
244
- if ( fileEvent . Type == EventType . DELETED )
245
- {
246
- if ( fileA . ExtensionWithDot == ".lock" )
209
+ Logger . Trace ( "HeadChanged: {0}" , headContent ?? "[null]" ) ;
210
+ headChanged = true ;
211
+ }
212
+ else if ( fileA . Equals ( paths . DotGitIndex ) )
247
213
{
248
- return ;
214
+ Logger . Trace ( "IndexChanged" ) ;
215
+ indexChanged = true ;
249
216
}
217
+ else if ( fileA . IsChildOf ( paths . RemotesPath ) )
218
+ {
219
+ var relativePath = fileA . RelativeTo ( paths . RemotesPath ) ;
220
+ var relativePathElements = relativePath . Elements . ToArray ( ) ;
250
221
251
- var branch = string . Join ( @"/" , relativePathElements . Skip ( 1 ) . ToArray ( ) ) ;
222
+ if ( ! relativePathElements . Any ( ) )
223
+ {
224
+ continue ;
225
+ }
252
226
253
- Logger . Trace ( "RemoteBranchDeleted: {0}/{1}" , origin , branch ) ;
254
- RemoteBranchDeleted ? . Invoke ( origin , branch ) ;
255
- }
256
- else if ( fileEvent . Type == EventType . RENAMED )
257
- {
258
- if ( fileA . ExtensionWithDot != ".lock" )
259
- {
260
- return ;
261
- }
227
+ var origin = relativePathElements [ 0 ] ;
262
228
263
- if ( fileB != null && fileB . FileExists ( ) )
264
- {
265
- if ( fileA . FileNameWithoutExtension == fileB . FileNameWithoutExtension )
229
+ if ( fileEvent . Type == EventType . DELETED )
266
230
{
267
- var branchPathElement = relativePathElements . Skip ( 1 )
268
- . Take ( relativePathElements . Length - 2 )
269
- . Union ( new [ ] { fileA . FileNameWithoutExtension } ) . ToArray ( ) ;
231
+ if ( fileA . ExtensionWithDot == ".lock" )
232
+ {
233
+ continue ;
234
+ }
270
235
271
- var branch = string . Join ( @"/" , branchPathElement ) ;
236
+ var branch = string . Join ( @"/" , relativePathElements . Skip ( 1 ) . ToArray ( ) ) ;
272
237
273
- Logger . Trace ( "RemoteBranchCreated : {0}/{1}" , origin , branch ) ;
274
- RemoteBranchCreated ? . Invoke ( origin , branch ) ;
238
+ Logger . Trace ( "RemoteBranchDeleted : {0}/{1}" , origin , branch ) ;
239
+ RemoteBranchDeleted ? . Invoke ( origin , branch ) ;
275
240
}
276
- }
277
- }
278
- }
279
- else if ( fileA . IsChildOf ( paths . BranchesPath ) )
280
- {
281
- if ( fileEvent . Type == EventType . MODIFIED )
282
- {
283
- if ( fileA . DirectoryExists ( ) )
284
- {
285
- return ;
286
- }
241
+ else if ( fileEvent . Type == EventType . RENAMED )
242
+ {
243
+ if ( fileA . ExtensionWithDot != ".lock" )
244
+ {
245
+ continue ;
246
+ }
287
247
288
- if ( fileA . ExtensionWithDot == ".lock" )
289
- {
290
- return ;
291
- }
248
+ if ( fileB != null && fileB . FileExists ( ) )
249
+ {
250
+ if ( fileA . FileNameWithoutExtension == fileB . FileNameWithoutExtension )
251
+ {
252
+ var branchPathElement = relativePathElements
253
+ . Skip ( 1 ) . Take ( relativePathElements . Length - 2 )
254
+ . Union ( new [ ] { fileA . FileNameWithoutExtension } ) . ToArray ( ) ;
292
255
293
- var relativePath = fileA . RelativeTo ( paths . BranchesPath ) ;
294
- var relativePathElements = relativePath . Elements . ToArray ( ) ;
256
+ var branch = string . Join ( @"/" , branchPathElement ) ;
295
257
296
- if ( ! relativePathElements . Any ( ) )
297
- {
298
- return ;
258
+ Logger . Trace ( "RemoteBranchCreated: {0}/{1}" , origin , branch ) ;
259
+ RemoteBranchCreated ? . Invoke ( origin , branch ) ;
260
+ }
261
+ }
262
+ }
299
263
}
300
-
301
- var branch = string . Join ( @"/" , relativePathElements . ToArray ( ) ) ;
302
-
303
- Logger . Trace ( "LocalBranchChanged: {0}" , branch ) ;
304
- LocalBranchChanged ? . Invoke ( branch ) ;
305
- }
306
- else if ( fileEvent . Type == EventType . DELETED )
307
- {
308
- if ( fileA . ExtensionWithDot == ".lock" )
264
+ else if ( fileA . IsChildOf ( paths . BranchesPath ) )
309
265
{
310
- return ;
311
- }
266
+ if ( fileEvent . Type == EventType . MODIFIED )
267
+ {
268
+ if ( fileA . DirectoryExists ( ) )
269
+ {
270
+ continue ;
271
+ }
312
272
313
- var relativePath = fileA . RelativeTo ( paths . BranchesPath ) ;
314
- var relativePathElements = relativePath . Elements . ToArray ( ) ;
273
+ if ( fileA . ExtensionWithDot == ".lock" )
274
+ {
275
+ continue ;
276
+ }
315
277
316
- if ( ! relativePathElements . Any ( ) )
317
- {
318
- return ;
319
- }
278
+ var relativePath = fileA . RelativeTo ( paths . BranchesPath ) ;
279
+ var relativePathElements = relativePath . Elements . ToArray ( ) ;
320
280
321
- var branch = string . Join ( @"/" , relativePathElements . ToArray ( ) ) ;
281
+ if ( ! relativePathElements . Any ( ) )
282
+ {
283
+ continue ;
284
+ }
322
285
323
- Logger . Trace ( "LocalBranchDeleted: {0}" , branch ) ;
324
- LocalBranchDeleted ? . Invoke ( branch ) ;
325
- }
326
- else if ( fileEvent . Type == EventType . RENAMED )
327
- {
328
- if ( fileA . ExtensionWithDot != ".lock" )
329
- {
330
- return ;
331
- }
286
+ var branch = string . Join ( @"/" , relativePathElements . ToArray ( ) ) ;
332
287
333
- if ( fileB != null && fileB . FileExists ( ) )
334
- {
335
- if ( fileA . FileNameWithoutExtension == fileB . FileNameWithoutExtension )
288
+ Logger . Trace ( "LocalBranchChanged: {0}" , branch ) ;
289
+ LocalBranchChanged ? . Invoke ( branch ) ;
290
+ }
291
+ else if ( fileEvent . Type == EventType . DELETED )
336
292
{
337
- var relativePath = fileB . RelativeTo ( paths . BranchesPath ) ;
293
+ if ( fileA . ExtensionWithDot == ".lock" )
294
+ {
295
+ continue ;
296
+ }
297
+
298
+ var relativePath = fileA . RelativeTo ( paths . BranchesPath ) ;
338
299
var relativePathElements = relativePath . Elements . ToArray ( ) ;
339
300
340
301
if ( ! relativePathElements . Any ( ) )
341
302
{
342
- return ;
303
+ continue ;
343
304
}
344
305
345
306
var branch = string . Join ( @"/" , relativePathElements . ToArray ( ) ) ;
346
307
347
- Logger . Trace ( "LocalBranchCreated: {0}" , branch ) ;
348
- LocalBranchCreated ? . Invoke ( branch ) ;
308
+ Logger . Trace ( "LocalBranchDeleted: {0}" , branch ) ;
309
+ LocalBranchDeleted ? . Invoke ( branch ) ;
310
+ }
311
+ else if ( fileEvent . Type == EventType . RENAMED )
312
+ {
313
+ if ( fileA . ExtensionWithDot != ".lock" )
314
+ {
315
+ continue ;
316
+ }
317
+
318
+ if ( fileB != null && fileB . FileExists ( ) )
319
+ {
320
+ if ( fileA . FileNameWithoutExtension == fileB . FileNameWithoutExtension )
321
+ {
322
+ var relativePath = fileB . RelativeTo ( paths . BranchesPath ) ;
323
+ var relativePathElements = relativePath . Elements . ToArray ( ) ;
324
+
325
+ if ( ! relativePathElements . Any ( ) )
326
+ {
327
+ continue ;
328
+ }
329
+
330
+ var branch = string . Join ( @"/" , relativePathElements . ToArray ( ) ) ;
331
+
332
+ Logger . Trace ( "LocalBranchCreated: {0}" , branch ) ;
333
+ LocalBranchCreated ? . Invoke ( branch ) ;
334
+ }
335
+ }
349
336
}
350
337
}
351
338
}
339
+ else
340
+ {
341
+ if ( repositoryChanged || ignoredPaths . Any ( ignoredPath => fileA . IsChildOf ( ignoredPath ) ) )
342
+ {
343
+ continue ;
344
+ }
345
+
346
+ repositoryChanged = true ;
347
+ }
348
+
349
+ lastCountOfProcessedEvents ++ ;
350
+ }
351
+
352
+ if ( configChanged )
353
+ {
354
+ Logger . Trace ( "ConfigChanged" ) ;
355
+ ConfigChanged ? . Invoke ( ) ;
356
+ }
357
+
358
+ if ( headChanged )
359
+ {
360
+ Logger . Trace ( "ConfigChanged" ) ;
361
+ HeadChanged ? . Invoke ( headContent ) ;
362
+ }
363
+
364
+ if ( indexChanged )
365
+ {
366
+ Logger . Trace ( "IndexChanged" ) ;
367
+ IndexChanged ? . Invoke ( ) ;
368
+ }
369
+
370
+ if ( repositoryChanged )
371
+ {
372
+ Logger . Trace ( "RepositoryChanged" ) ;
373
+ RepositoryChanged ? . Invoke ( ) ;
352
374
}
353
375
}
354
376
0 commit comments