Dodałem alias git, aby podać mi liczbę wierszy określonych plików w mojej historii:
[alias]
lines = !lc() { git ls-files -z ${1} | xargs -0 wc -l; }; lc
Jednak wc -l
zgłasza wiele podsumowań, tak że jeśli mam więcej niż ~ 100 tys. Linii, zgłasza ich sumę, a następnie przechodzi do następnego etapu. Oto przykład:
<100 tys. Linii (pożądana wydajność)
$ git lines \*.xslt
46 packages/NUnit-2.5.10.11092/doc/files/Summary.xslt
232 packages/NUnit-2.5.10.11092/samples/csharp/_UpgradeReport_Files/UpgradeReport.xslt
278 total
> 100 tys. Linii (do potoku grep "total"
)
$ git lines \*.cs | grep "total"
123569 total
107700 total
134796 total
111411 total
44600 total
Jak uzyskać prawdziwą sumę wc -l
, a nie serię sum częściowych?
wc
obsługuje tę --files0-from
opcję? Potem możesz zrobić{ git ls-files -z ${1} | wc -l --files0-from=- ; }
wc: unrecognized option '--files0-from=-'
xargs
, że niewc
. Nadal jestem zainteresowany tym, jak to naprawić i nie widzę dobrego rozwiązania w odpowiedziach.