gpt4 book ai didi

git - 暂停文件观察器直到 git checkout 完成

转载 作者:IT王子 更新时间:2023-10-29 00:34:00 25 4
gpt4 key购买 nike

开始 checkout 操作时,git 做了什么?它会写出锁定文件或其他内容吗?

我使用 gulp,如果 git 正在主动执行 checkout 操作,我希望它“暂停”观察者。

我可以接受可能不得不“重新保存”一些东西来让文件观察器重新启动。

最佳答案

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 with this code here

因此,当我们开始观察时,我们保留对观察者对象的引用,并有一个任务在观察者运行时停止。我们的 Git 任务依赖于 watch:stop 开始,然后开始 Git checkout,并在完成时进行回调。回调启动任务 watch:start,完成后,我们最终触发函数 cb 以指示 git:checkout 已完成!

替代方法可能是在监视对象上使用 add(pattern)remove(pattern) 将其关闭然后再次打开,而不是销毁对象和重新创建它。

关于git - 暂停文件观察器直到 git checkout 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28238559/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com