1
1
using System ;
2
- using System . Runtime . InteropServices ;
3
2
using System . Text ;
4
3
using LibGit2Sharp . Core ;
5
4
using LibGit2Sharp . Core . Handles ;
@@ -190,6 +189,7 @@ private int ApplyCallback(IntPtr gitFilter, IntPtr payload, IntPtr gitBufferTo,
190
189
private void CleanUpCallback ( IntPtr gitFilter , IntPtr payload )
191
190
{
192
191
Console . WriteLine ( "Cleanup" ) ;
192
+ filterCallbacks . CustomCleanUpCallback ( ) ;
193
193
}
194
194
195
195
/// <summary>
@@ -270,6 +270,7 @@ public class FilterCallbacks
270
270
private readonly Func < int > customApplyCallback ;
271
271
private readonly Func < int > customInitializeCallback ;
272
272
private readonly Action customShutdownCallback ;
273
+ private Action customCleanUpCallback ;
273
274
274
275
private readonly Func < int > passThroughFunc = ( ) => ( int ) GitErrorCode . PassThrough ;
275
276
private readonly Func < int > passThroughSuccess = ( ) => 0 ;
@@ -285,12 +286,14 @@ public FilterCallbacks(
285
286
Func < int > customCheckCallback = null ,
286
287
Func < int > customApplyCallback = null ,
287
288
Action customShutdownCallback = null ,
288
- Func < int > customInitializeCallback = null )
289
+ Func < int > customInitializeCallback = null ,
290
+ Action customCleanupCallback = null )
289
291
{
290
292
this . customCheckCallback = customCheckCallback ?? passThroughFunc ;
291
293
this . customApplyCallback = customApplyCallback ?? passThroughFunc ;
292
294
this . customShutdownCallback = customShutdownCallback ?? ( ( ) => { } ) ;
293
295
this . customInitializeCallback = customInitializeCallback ?? passThroughSuccess ;
296
+ this . customCleanUpCallback = customCleanupCallback ?? ( ( ) => { } ) ;
294
297
}
295
298
296
299
/// <summary>
@@ -349,6 +352,18 @@ public Action CustomShutdownCallback
349
352
return customShutdownCallback ;
350
353
}
351
354
}
355
+ /// <summary>
356
+ /// Callback to clean up after filtering has been applied. Specified as `filter.cleanup`, this is an optional callback invoked
357
+ /// after the filter has been applied. If the `check` or `apply` callbacks allocated a `payload`
358
+ /// to keep per-source filter state, use this callback to free that payload and release resources as required.
359
+ /// </summary>
360
+ public Action CustomCleanUpCallback
361
+ {
362
+ get
363
+ {
364
+ return customCleanUpCallback ;
365
+ }
366
+ }
352
367
353
368
/// <summary>
354
369
/// Initialize callback on filter
0 commit comments