programing

git 저장소의 줄 수

batch 2023. 4. 16. 14:45
반응형

git 저장소의 줄 수

git 저장소의 모든 파일에 있는 총 줄 수를 어떻게 셀 수 있습니까?

git ls-files에는 git 있습니다.

cat일 something . ?

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

xargscat로 묶은 후 달 all all all all all all all all all all all all all all all all all all all all all all all all all all all 。wc다음 중 하나:

git ls-files | xargs cat | wc -l

cat자세한 내용은 다음과 같습니다.

git ls-files | xargs wc -l

프로젝트의 범위를 파악하려면 언어별로 중요한 코드 줄과 중요하지 않은 코드 줄을 구분하는 CLOC(Count Lines of Code) 출력을 선호할 수 있습니다.

cloc $(git ls-files)

은 (이 행은)에 합니다.git ls-files | xargs cloc를 사용합니다.sh의 명령어 치환 기능).

샘플 출력:

      20 text files.
      20 unique files.                              
       6 files ignored.

http://cloc.sourceforge.net v 1.62  T=0.22 s (62.5 files/s, 2771.2 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
Javascript                       2             13            111            309
JSON                             3              0              0             58
HTML                             2              7             12             50
Handlebars                       2              0              0             37
CoffeeScript                     4              1              4             12
SASS                             1              1              1              5
-------------------------------------------------------------------------------
SUM:                            14             22            128            471
-------------------------------------------------------------------------------

먼저 CLOC를 설치해야 합니다.패키지 매니저와 함께 설치할 수 있습니다.예를 들어 다음과 같습니다.brew install cloc홈브루와 함께.

cloc $(git ls-files) 보다 것을 말합니다.cloc . 예에서는 「」가 사용되고 있습니다git ls-files471번입니다.【은젝프프에 for】cloc .는 Git 456, 행(의를 검색하기 456,에는 6분 소요)을합니다.Git 무시로 인한 의존관계를 검색하기 때문입니다.node_modules더입니니다다

git diff --stat 4b825dc642cb6eb9a060e54bf8d69288fbee4904

빈 트리와 현재 작업 트리의 차이점이 표시됩니다.현재 작업 중인 트리의 모든 행이 계산됩니다.

현재 작업 트리의 번호를 얻으려면 다음 절차를 수행합니다.

git diff --shortstat `git hash-object -t tree /dev/null`

해서 '어느 정도 하다'와 같은 .1770 files changed, 166776 insertions(+).

에서 배치 문제가 발생했습니다.git ls-files | xargs wc -l, 행의 「파일로 됩니다.totallines.discloss.disclos

질문에서 힌트를 얻어 wc 유틸리티는 왜 "total"로 여러 줄을 생성합니까? 문제를 회피하기 위한 다음 명령을 찾았습니다.

wc -l $(git ls-files)

또는 코드와 같은 일부 파일만 검사하려는 경우:

wc -l $(git ls-files | grep '.*\.cs')

어쨌든 나에게 가장 좋은 해결책은 @ephemiant의 대답에 담겨 있다.눈치채지 못하게 여기에 세워두는 거예요.그 공적은 @FRoZeN(및 @eemient)에게 돌아가야 합니다.

git diff --shortstat `git hash-object -t tree /dev/null`

는 추가 노이즈 없이 repo 작업 디렉토리 내의 파일 및 행의 합계를 반환합니다.보너스로는 소스 코드만 카운트되며 이진 파일은 집계에서 제외됩니다.

위의 명령어는 Linux 및 OS X에서 작동합니다.크로스 플랫폼 버전은 다음과 같습니다.

git diff --shortstat 4b825dc642cb6eb9a060e54bf8d69288fbee4904

그것은 Windows에서도 동작합니다.

기록의 경우 빈 줄을 제외하는 옵션,

  • -w/--ignore-all-space,
  • -b/--ignore-space-change,
  • --ignore-blank-lines,
  • --ignore-space-at-eol

해도 없다--shortstat 공백 행이 카운트됩니다.

이것은 cloc 1.68에서 동작합니다.

cloc --vcs=git

다음을 사용합니다.

git grep ^ | wc -l

에서 regex git이 됩니다.^이 명령어는 행의 시작을 나타내므로 총 행 수를 나타냅니다.

cmder(http://gooseberrycreative.com/cmder/))를 가지고 놀다가 html, css, script, javascript의 행을 세고 싶었습니다.위의 답변 중 일부는 효과가 있었지만,orpattern in grep doesn't - 여기(https://unix.stackexchange.com/questions/37313/how-do-i-grep-for-multiple-patterns)에서 이 문제를 회피해야 한다는 것을 알았습니다.

그래서 지금은 이렇게 쓰고 있습니다.

git ls-files | grep "\(.html\|.css\|.js\|.java\)$" | xargs wc -l

나는 이렇게 했다:

git ls-files | xargs file | grep "ASCII" | cut -d : -f 1 | xargs wc -l

저장소의 모든 텍스트 파일을 관심 파일로 간주할 경우 이 기능이 작동합니다.그 중 일부가 문서 등으로 간주될 경우 제외 필터를 추가할 수 있습니다.

시험:

find . -type f -name '*.*' -exec wc -l {} + 

문제의 디렉토리에서

특정 작성자로부터 행수를 취득하려면 , 다음의 코드를 사용해 주세요.

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

github https://github.com/flosse/sloc 의 이 툴을 사용하면, 보다 알기 쉬운 방법으로 출력을 표시할 수 있습니다.소스 코드의 통계를 만듭니다.

  • 물리선
  • 코드 행(소스)
  • 코멘트가 달린 행
  • 한 줄짜리 코멘트
  • 블록 코멘트가 있는 행
  • 출처와 코멘트가 뒤섞인 행
  • 빈 줄

이진 파일을 포함할지 여부에 따라 두 가지 해결 방법이 있습니다.

  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"는 4개의 병렬 프로세스를 사용하여 파일을 읽을 수 있음을 의미합니다.이것은 매우 큰 리포지토리를 검색할 때 매우 유용합니다.기계의 용량에 따라 프로세스 수가 증가할 수 있습니다.

    a, 바이너리 파일 처리(바이너리 포함)
    - " , 행이 파일 (빈 - l " , " " " , " " " ( " " " " " " " )
    -I, 바이너리 파일의 패턴과 일치하지 않음(바이너리 제외)
    tree (files )--, uncommitted files (커밋되지 않은 파일 포함)--, uncommitted files (커밋되지 않은 파일 포함)

은 Carl Norum의 중 공백이 합니다.IFS다른 사람들과 함께tab그리고.newline해결책은 NULL 바이트로 행을 종단하는 것입니다.

 git ls-files -z | xargs -0 cat | wc -l
: | git mktree | git diff --shortstat --stdin

또는 다음 중 하나를 선택합니다.

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

공백이 아닌 행의 합계수를 찾으려면 , AWK 를 사용할 수 있습니다.

git ls-files | xargs cat | awk '/\S/{x++} END{print "Total number of non-empty lines:", x}'

공백이 아닌 문자를 포함하는 행을 계산하기 위해 regex를 사용합니다.

언급URL : https://stackoverflow.com/questions/4822471/count-number-of-lines-in-a-git-repository

반응형