Pausar vigilantes de files hasta completar el pago de git

¿Qué hace Git al iniciar la operación de pago? ¿Escribe un file de locking o algo así?

Uso gulp, y me gustaría "pausar" a los observadores si git está realizando activamente una operación de pago.

Estoy bien con la posibilidad de tener que "volver a save" algo para volver a poner en marcha al vigilante de files.

La function gulp.watch() devuelve un object que tiene, entre otras cosas, un método end() que puede llamar; consulte la definición en el module glob-watcher .

Podrías hacer algo en esta línea:

 var gulp = require('gulp'); function doGitCheckout(callback) { console.log('doing checkout...'); setTimeout(function() { console.log('done checkout...'); callback(); }, 1000); } var watcher; gulp.task('watch:start', function() { if (!watcher) { watcher = gulp.watch('dist/**/*', ['build']); console.log('started watcher'); } }); gulp.task('watch:stop', function() { if (watcher) { watcher.end(); watcher = null; console.log('stopped watcher'); } }); gulp.task('git:checkout', ['watch:stop'], function(cb) { console.log('isWatching = ' + !!watcher); // Start the Git checkout... doGitCheckout(function() { // The Git checkout is finished! gulp.start('watch:start', function() { cb(); }); }); }); gulp.task('default', ['watch:start', 'git:checkout']); 

Gist con este código aquí

Así que mantenemos una reference al object del observador cuando comenzamos a mirar, y tenemos una tarea para detener al observador si se está ejecutando. Nuestra tarea de Git depende del watch:stop para comenzar, y luego comienza la extracción de Git, con una callback para cuando se complete. La callback inicia la watch:start tareas watch:start , y cuando se hace eso, finalmente activamos la function cb para indicar que git:checkout ha terminado.

Una alternativa podría ser utilizar el add(pattern) y remove(pattern) en el object de observación para apagarlo y volver a encenderlo en lugar de destruir el object y volver a crearlo.