2013-02-26 2 views
1

Я пытаюсь получить номер строки для вновь добавленных, измененных и удаленных строк из git repo из предыдущего коммита. Я использую функцию bash ниже, чтобы выполнить эту работу. Но я не могу получить значение пути (он показывает null), и мои номера строк также не точные, что я ожидаю .please проверьте мой результат ниже.Как получить Git измененные, удаленные и новые номера строк

diff-lines() { 
     local path= 
     local line= 
     while read; do 
      esc=$'\033' 
      if [[ $REPLY =~ ---\ (a/)?.* ]]; then 
       continue 
      elif [[ $REPLY =~ \+\+\+\ (b/)?([^[:blank:]$esc]+).* ]]; then 
       path=${BASH_REMATCH[2]} 
      elif [[ $REPLY =~ @@\ -[0-9]+(,[0-9]+)?\ \+([0-9]+)(,[0-9]+)?\ @@.*]]; then 
       line=${BASH_REMATCH[2]} 
      elif [[ $REPLY =~ ^($esc\[[0-9;]+m)*([\ +-]) ]]; then 
       echo "$path:$line:$REPLY" 
       if [[ ${BASH_REMATCH[2]} != - ]]; then 
        ((line++)) 
       fi 
      fi 
     done 
    } 

Я получаю ниже выхода Когда я запустить скрипт

$ git diff -U0 | diff-lines 
    ::+++ b/shipserv/shipserv.cpp 
    :1:- 
    :1:-// check command-line args 
    :1:+// check command-line argsss 
    :2:+++ b/shipserv/shipserv_client.cpp 
    :3:-// #include <infra/utility/environment/config/PimpConfig.h> 
    :3:+// #include <nfra/utility/environment/config/PimpConfig.h> 
    :4:+++ b/shipserv/test.text 
    :5:-dfssdfsdfsdfsf 
    :5:+dfssdfsdfsdfsfZZZZZZZZZZZZZZ 
    :6:+modified linsde 9898989 
    :7:+New line added 

может кто-нибудь, пожалуйста, помогите мне по этому вопросу.

ответ

1

Что-то вроде git log -n 1 --stat, возможно? В моем репо:

commit 0e35181e68f628234c53347c00a75d7af37bb45e 
Author: Horst H. von Brand <[email protected]> 
Date: Thu Jan 17 15:46:32 2013 -0300 

    The proper bibliography key is oliveiraXXX..., add latest results 

    Signed-off-by: Horst H. von Brand <[email protected]> 

logica.tex | 16 +++++++++++++--- 
url.bib | 45 +++++++++++++++++++++++++++------------------ 
2 files changed, 40 insertions(+), 21 deletions(-) 
Смежные вопросы