Если вместо этого вы используете child_process.spawn
, вы сможете вызывать его с параметрами для stdio
:
spawn(cmd, [], { stdio: 'ignore' });
РЕДАКТИРОВАТЬ:
Если вы поклонник Promise
, вот утилита, которую я написал, чтобы помочь с вещами
const quietSpawn = (cmd, args = []) => {
const splitCmd = cmd.split(' ');
if (splitCmd.length > 1) {
[cmd, ...args] = splitCmd;
}
return new Promise((resolve, reject) => {
const proc = spawn(cmd, args, { stdio: 'ignore' });
proc.on('exit', resolve);
proc.on('error', reject);
});
};
Вы можете заставить Git проверить весь репозиторий с помощью git fsck
. Если хранилище Git повреждено, вы должны получить новый клон из не поврежденного хранилища.
При нормальной работе Git должен проверять части репозитория, когда они читаются, поэтому может потребоваться больше времени, чтобы заметить некоторое повреждение, но он будет замечен при первой попытке доступа к поврежденным данным. .
Недавно мне пришлось проверять репозитории на сбойном сервере, я использовал следующую команду:
for gitdir in $(sudo find / -name ".git" -type d -printf "%h "); do
cd $gitdir && ( git fsck && echo "${gitdir} - "'HAPPY !' ) \
|| echo "${gitdir} - "'ERROR !';
done
Что имел в виду Линус, когда сказал, что Git гарантирует, что файлы не повреждены, он имел в виду тот факт, что когда вы ссылаетесь на конкретный коммит (идентифицируемый его хешем), вам гарантируется , что он всегда будет относиться к одному и тому же состоянию репозитория. Если ты и ядро linux вытащишь от Линуса tree, и он ссылается на некоторую фиксацию ae6bcd1 ..., вы ничего не можете сделать (даже в вашем локальном репозитории), чтобы когда-либо совершить фиксацию ae6bcd1 ... выглядеть иначе, чем коммит, на который смотрит Линус, когда он обращается к нему .
Кроме того, поскольку объект фиксации содержит ссылки на (все) свои родительские фиксации, когда вы ссылаетесь на фиксацию, вы также гарантируете ее полную историю в DAG.
Что касается повреждения файла , своего рода самостоятельный вопрос; но без повреждения фактических объектов blob (т.е. .git / objects / ob / ject_hashname), если один из ваших файлов рабочего дерева будет поврежден, вы сможете восстановить его из предыдущего состояния фиксации или из состояния индекса / кеширования.
В этом случае вы никогда не сможете повредить пульт, если не выполняете принудительные нажатия (которые перезаписывают историю на пультах),