Как получить статус прогресса при клонировании репозитория через nodegit?

#typescript #nodegit

#typescript #nodegit

Вопрос:

Я использую Clone.clone from nodegit и ищу обратный вызов статуса выполнения. Функция имеет объект CheckoutOptions, который я вызываю следующим образом:

 var opts: CloneOptions = {};
opts.checkoutOpts = {
    progressCb: function() {
        console.log("Foo");
    },
}
  

Но, похоже, это приводит к сбою окна браузера. Кто-нибудь, посмотрев на объявление о CheckoutOptions том, что я могу сделать неправильно?

Обратите внимание, CheckoutOptions является членом CloneOptions

 
export class CheckoutOptions {
    version?: number;
    checkoutStrategy?: number;
    disableFilters?: number;
    dirMode?: number;
    fileMode?: number;
    fileOpenFlags?: number;
    notifyFlags?: number;
    notifyCb?: any;
    notifyPayload?: undefined;
    progressCb?: any;
    progressPayload?: undefined;
    paths?: Strarray | string | string[];
    baseline?: Tree;
    baselineIndex?: Index;
    targetDirectory?: string;
    ancestorLabel?: string;
    ourLabel?: string;
    theirLabel?: string;
    perfdataCb?: any;
    perfdataPayload?: undefined;
    [key: string]: any;
}

export class CloneOptions {
    version?: number;
    checkoutOpts?: CheckoutOptions;
    fetchOpts?: FetchOptions;
    bare?: number;
    local?: number;
    checkoutBranch?: string;
    repositoryCbPayload?: any;
    remoteCbPayload?: any;
}
  

Комментарии:

1. вы проверили progressCb в CheckoutOptions

2. Да, смотрите мой первый фрагмент кода

Ответ №1:

Попробуйте инициализировать параметры проверки, используя new CheckoutOptions() вместо использования только пустой объект {} .

Эта версия работает:

 var opts = {};
opts.checkoutOpts = new CheckoutOptions();
opts.checkoutOpts.progressCb = function(){
    console.log("Foo");
};
  

и эта версия вылетает:

 var opts = {};
opts.checkoutOpts = {};
opts.checkoutOpts.progressCb = function(){
    console.log("Foo");
};
  

Комментарии:

1. Спасибо! Хотя обратный вызов на самом деле вызывается не так часто во время процедуры клонирования, у меня это работает. Я добавлю 150 баллов, как только мне будет разрешено его принять