2015-06-23 1 views
0

Я хотел бы иметь следующий скрипт запустить, когда «статус мерзавец» побежал без параметров:Как спрятать встроенные команды git?

#!/usr/bin/env python 

import subprocess 

o = subprocess.check_output("git -c color.status=always status", shell=True) 
started = False 
done = False 
for line in o.split('\n'): 
    line = line.rstrip('\r\n') 
    if line.strip() == '' and not done: 
     if started: 
      started = False 
      done = True 
     started = True 
     print(line) 
     continue 
    if started and 'modified: ' in line: 
     filename = line.split('modified:')[1].strip().split('\x1b')[0] 
     p = subprocess.Popen(["git", "diff", filename], stdout=subprocess.PIPE) 
     out = subprocess.check_output("diffstat", stdin=p.stdout).split('|')[1] 
     print('%s %s' % (line.rstrip(), out.split('\n')[0])) 
    else: 
     print(line) 

Как я могу добиться этого?

ответ

0

Создайте псевдоним, поместив эту строку в вашем ~/.gitconfig:

[alias] 
    status = !sh -c 'foo [email protected]' -- 

где foo ваш сценарий, хранится где-то на пути. Сценарий foo должен распознать, передаются ли какие-либо параметры, и использовать ваниль git status в этом случае.

+0

Будет ли это обрабатывать ситуации, когда я даю 'git status' аргумент, и я предпочел бы, чтобы он просто управлял ванильным git-статусом? – d33tah

+0

Нет. Я немного улучшу его, всего лишь мгновение. – SzG

+0

@SzG 'git' будет смотреть только в пространстве псевдонима для команд, которые еще не распознаются как встроенные. Это может работать с некоторыми более старыми версиями 'git' (до того, как все подкоманды стали встроенными), но не в более поздних версиях (проверенных в моей текущей системе с' git' 2.1.1). – twalberg

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