쉼표를 구분 기호로 사용하여 요청된 데이터를 출력하도록 git 명령을 편집하는 방법

쉼표를 구분 기호로 사용하여 요청된 데이터를 출력하도록 git 명령을 편집하는 방법

아래 코드를 실행하고 있습니다.

git rev-list --objects --all |
  git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' %(id)' |
  sed -n 's/^blob //p' |
  sort --numeric-sort --key=2 |
  gcut -c 1-12,41- |
  $(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest

git 저장소에 대용량 데이터 파일을 출력합니다. 출력은 다음과 같습니다.

ne3ee2e43e1x 1.0MiB path/to/large/files.png ID

명령에서 호출된 각 데이터 포인트 사이의 구분 기호로 세미콜론을 사용하고 싶습니다. 따라서 예상되는 출력은 다음과 같습니다.

ne3ee2e43e1x; 1.0MiB; path/to/large/files.png; ID

고쳐 쓰다:

Marcus의 답변을 바탕으로 다음을 시도해 보세요.

git rev-list --objects --all | git cat-file --batch-check='%(objecttype);%(objectname);%(objectsize);%(rest)' | sed -n 's/^blob //p' | awk '$2 >= 2^20' | sort --numeric-sort --key=2 | gcut -c 1-12,41- |$(command -v gnumfmt || echo numfmt) --field=2 --to=iec-i --suffix=B --padding=1 --round=nearest

그러나 이것은 궁극적으로 아무것도 복사하지 않습니다.

답변1

매개변수를 사용하여 출력 형식을 직접 지정할 수 있습니다 --batch-check. 따라서 형식 문자열에 세미콜론을 추가하십시오! "일괄 출력" 섹션을 참조하세요.git cat-file매뉴얼 페이지.

objecttype또한 처리하려는 blob 출력이 sed를 사용하여 삭제하는 것이라면 굳이 git에 물어볼 필요가 있을까요?

관련 정보