2015-11-28 1 views
3

Как подавить вывод «Изменения не поставлены для фиксации» при совершении? Обратите внимание:Как подавить «Изменения не поставлены для фиксации»?

  • Я знаю, что могу делать > /dev/null, но я надеюсь не подавлять другие вещи.
  • Я не говорю о сообщении - Я говорю о том, что его напечатали на терминале.
+0

Вы спрашиваете сообщение об объявлении по умолчанию, которое отображается? –

+0

@AndrewC: Да .. – Mehrdad

+0

Зачем беспокоиться? Это просто информация о файлах, которые были изменены, но не включены в коммит. Это полезно, когда вы готовите серию коммитов из данной измененной рабочей строки. – user3159253

ответ

1

После небольшого копания в кодовой базе git.git, я боюсь, что вы должны разработать способ игнорировать эти строки в своем скрипте.

Во время фиксации, если вы не используете --allow-empty, мерзавец будет проходить через that code:

if (!commitable && whence != FROM_MERGE && !allow_empty && 
    !(amend && is_a_merge(current_head))) { 
    s->display_comment_prefix = old_display_comment_prefix; 
    run_status(stdout, index_file, prefix, 0, s); 
    ... 
    return 0; 
} 

И run_status делает следующую вещь:

switch (status_format) { 
    case STATUS_FORMAT_SHORT: 
     wt_shortstatus_print(s); 
     break; 
    case STATUS_FORMAT_PORCELAIN: 
     wt_porcelain_print(s); 
     break; 
    case STATUS_FORMAT_UNSPECIFIED: 
     die("BUG: finalize_deferred_config() should have been called"); 
     break; 
    case STATUS_FORMAT_NONE: 
    case STATUS_FORMAT_LONG: 
     wt_status_print(s); 
     break; 
    } 
} 

STATUS_FORMAT_PORCELAIN (использование --porcelain) и STATUS_FORMAT_SHORT (git config status.short true) приведет к такому же уменьшенному выходу:

M bla.txt 

и STATUS_FORMAT_LONG (? И STATUS_FORMAT_NONE, не знаю, почему), приведет к обычному выходу:

Changes not staged for commit: 
    modified: bla.txt 

Тем не менее, давайте не будем отчаиваться, это программное обеспечение, мы говорим о том, что всегда есть (мне все еще нужно полностью протестировать это;))

Вы можете использовать --allow-empty, чтобы получить пропуск от этой ветви кода и создать пустую фиксацию. Затем вы связываете это с крюком post-commit, который проверяет, является ли последнее комманда пустым, если это так, крючок запускает git reset --hard HEAD~1, и вам может быть хорошо идти?

+0

Я вижу, это несчастливо ... спасибо ха-ха – Mehrdad

Смежные вопросы