2015-03-15 3 views
1

Я запускаю команду на travis, чтобы вычислить точку ветвления от мастера текущей текущей ветви (гарантированно не быть мастером).Запуск child_process.exec не работает на travis, а не локально

Выполнение этой команды:

function execute(cmd, cb) { 
    exec(cmd, function (err, stdout, stderr) { 
    if(err) { 
     console.error('err', err); 
    } 

    if(stderr) { 
     console.error('err', err); 
    } 

    cb(stdout.split('\n').join('')); 
    }); 
} 

execute('git rev-parse --short HEAD', cb) 

бежит, и возвращает мне короткую ша моей текущей ветви просто отлично на Трэвиса.

Когда я бегу

var command = "bash -c 'diff -u <(git rev-list --all bf2a1b7b7cf97f5df0618830f63d535db1a5dca6) "+ 
"<(git rev-list --first-parent master)' "+ 
"| sed -ne 's/^ //p' | head -1"; 

execute(command, cb); 

Это возвращает меня именно то, что я хочу на местном уровне, но и на Travis вызывает ошибку. Я ничего не получаю от команды console.error в команде execute, просто: err null.

Поскольку это работает локально, даже в отдельно стоящем ГОЛОВЕ, как и в случае с travis, я предполагаю, что это как-то связано с окружающей средой. Какая версия git работает на Travis?

Есть ли что-нибудь, что вы можете придумать, чтобы это не сработало? Является ли bash недоступным? Основное различие между этими и другими git-командами, которые работают, это часть bash -c и замещение процесса.

Вы можете увидеть страницу сборки здесь https://travis-ci.org/VisualTesting/test-example/builds/54427942

ответ

1

Проблема в том, что, так как Трэвис клоны только специфическая отрасль от мерзавца, команда часть git rev-list --first-parent master терпит неудачу, потому что он не знает о master отрасли.

Добавление git fetch origin master:master к моему before_install решило проблему.