2013-03-20 8 views
5

Dla wszystkich plików zatwierdzenia, chciałbym podać zarówno modyfikator statusu --name-status, jak i ilość dodanych i usuniętych linii, które daje --numstat. Muszę powiedzieć, co następuje:Używając git log, czy istnieje sposób na uzyskanie "--name-status" i "--numstat" w jednym poleceniu?

> git log --pretty=format:"%aN %ct" --reverse --name-status --encoding=UTF-8 --no-renames 
John Doe 1234567489 
M  foo/bar/foo.bar 
A  bar/hello.txt 

oraz:

> git log --pretty=format: --reverse --numstat --encoding=UTF-8 --no-renames 
9  5  foo/bar/foo.bar 
21  0  bar/hello.txt 

istnieje pojedyncze polecenie/kombinacja flag, które daje mi wyjście z nich łączy? Coś wzdłuż linii to:

John Doe 1234567489 
M 9 5  foo/bar/foo.bar 
A 21 0  bar/hello.txt 

wiem, że to jest możliwe, aby połączyć je z pewnym awk magii, ale widząc, jak będę to robić na wielu dużych repozytoriów i kwestii wydajności, polecenie pojedynczy dziennik git byłoby lepiej .

Odpowiedz

1

Ponieważ --name-status wydaje się nadpisywać inne flagi (jest podobne do --namename), można użyć kombinacji --summary i --numstats. Jednak nie będzie to ta sama linia, którą opisałeś.

git log --pretty=format:"%aN %ct" --reverse --summary --numstat --encoding=UTF-8 --no-renames 

będzie produkować coś takiego:

Christopher Corley 1363309327 
4929 0  IEEEtran.cls 
22  46  paper.tex 
create mode 100644 IEEEtran.cls 

pamiętać, że jest tylko listą podsumowanie zmian trybu. W przypadku zmodyfikowanych plików bez zmian trybów (tj. "M") nie będą one pojawiać się na liście podsumowania.

Podobnie, może okazać się korzystne w użyciu --raw zamiast --summary, który wymienia zmodyfikowane pliki:

Christopher Corley 1363309327 
:000000 100644 0000000... 5e2d183... A IEEEtran.cls 
:100644 100644 2abed5a... 91f133d... M paper.tex 
4929 0  IEEEtran.cls 
22  46  paper.tex 
+0

To niestety pozostawia dwie linie na plik, który nadal wymaga dodatkowego wysiłku w którym parsowanie Miałem nadzieję, że uniknę tego, zdobywając informacje w jednym wierszu. Myślę, że masz rację z '--name-status' przesłaniając inne flagi, co czyni go praktycznie niemożliwe. –

Powiązane problemy