Приостановка просмотра файлов до завершения проверки git

Что делает git при запуске операции оформления заказа? Это записывает файл блокировки или что-то?

Я использую gulp, и мне бы хотелось, чтобы он приостановил работу наблюдателей, если git активно выполняет операцию извлечения.

Я согласен с тем, что мне, возможно, придется "перезаписать" что-то, чтобы запустить механизм просмотра файлов.

1 ответ

Функция gulp.watch() возвращает объект, который, помимо прочего, имеет end() метод, который вы можете вызвать - см. определение в модуле glob-watcher.

Вы могли бы сделать что-то вроде этого:

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 с этим кодом здесь

Поэтому мы сохраняем ссылку на объект-наблюдатель, когда начинаем наблюдать, и имеем задачу остановить наблюдателя, если он запущен. Наша задача Git зависит от watch:stop начать, а затем начинает проверку Git с обратным вызовом, когда он будет завершен. Обратный вызов запускает задачу watch:startи когда это будет сделано, мы, наконец, запустим функцию cb указать, что git:checkout закончил!

Альтернативой может быть использование add(pattern) а также remove(pattern) на объекте наблюдения, чтобы выключить, а затем снова включить вместо того, чтобы уничтожить объект и воссоздать его.

Другие вопросы по тегам