1020 Stimmen

Anzahl der Zeilen in einem Git-Repository zählen

Wie kann ich die Gesamtzahl der Zeilen in allen Dateien in einem Git-Repository zählen?

git ls-files gibt mir eine Liste der Dateien, die von Git verfolgt werden.

Ich suche nach einem Befehl für cat alle diese Dateien. Etwas wie

git ls-files | [cat all these files] | wc -l

5voto

Wang Zhong Punkte 85

Wenn Sie die Anzahl der Zeilen eines bestimmten Autors abfragen möchten, versuchen Sie den folgenden Code:

git ls-files "*.java" | xargs -I{} git blame {} | grep ${your_name} | wc -l

3voto

love Punkte 3203

Dieses Tool auf github https://github.com/flosse/sloc kann die Ausgabe auf anschaulichere Weise erfolgen. Es wird Statistiken über Ihren Quellcode erstellen:

  • physische Linien
  • Codezeilen (Quelle)
  • Zeilen mit Kommentaren
  • einzeilige Kommentare
  • Zeilen mit Blockkommentaren
  • Zeilen mit Quelle und Kommentaren verwechselt
  • leere Zeilen

3voto

bharath Punkte 461

Je nachdem, ob Sie Binärdateien einbinden wollen oder nicht, gibt es zwei Lösungen.

  1. git grep --cached -al '' | xargs -P 4 cat | wc -l
  2. git grep --cached -Il '' | xargs -P 4 cat | wc -l

    "xargs -P 4" bedeutet, dass es die Dateien mit vier parallelen Prozessen lesen kann. Dies kann sehr hilfreich sein, wenn Sie sehr große Repositories durchsuchen. Je nach Kapazität des Rechners können Sie die Anzahl der Prozesse erhöhen.

    -a, Binärdateien als Text verarbeiten (Include Binary)
    -l '', zeigt nur Dateinamen statt übereinstimmender Zeilen an (scannt nur nicht leere Dateien)
    -I, keine Übereinstimmung mit Mustern in Binärdateien (Exclude Binary)
    -cached, Suche im Index statt im Arbeitsbaum (Einbeziehung nicht übergebener Dateien)

3voto

Raffi Mohammed Punkte 31

Die Antwort von Carl Norum geht davon aus, dass es keine Dateien mit Leerzeichen gibt, eines der Zeichen von IFS und die anderen sind tab y newline . Die Lösung wäre, die Zeile mit einem NULL-Byte zu beenden.

 git ls-files -z | xargs -0 cat | wc -l

2voto

: | git mktree | git diff --shortstat --stdin

Oder:

git ls-tree @ | sed '1i\\' | git mktree --batch | xargs | git diff-tree --shortstat --stdin

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X