Closed yoouyeon closed 1 month ago
git log 데이터를 파싱하는 getCommitRaws 함수를 개선해보려고 합니다.
getCommitRaws
Commit 단위로 파싱 로직이 동작하지 않기 때문에 동일한 데이터에 대한 반복이
총 2번 발생하게 되어 log의 크기가 클 경우에는 성능에 영향을 줄 것이라 판단함
내장된 기본 포맷 (fuller)을 기준으로 파싱하고 있는데 해당 format은 파싱하기 위한 목적보다는 읽기 쉽게 하기 위한 목적으로 쓰이는 format이기 때문에 코드 상에서 조건에 따라 동작하는 파싱 로직을 한눈에 이해하기 어렵다고 판단함
fuller 포맷
commit <hash> Author: <author> AuthorDate: <author-date> Commit: <committer> CommitDate: <committer-date> <title-line> <full-commit-message>
str.startsWith("commit")
getGitLog
refactoring은 언제나 환영합니다!!!
요거 종료된 이슈로 보여서 종료하겠습니다!
개요
git log 데이터를 파싱하는
getCommitRaws
함수를 개선해보려고 합니다.AS-IS
기존 방식
예상되는 문제점
성능 방면
Commit 단위로 파싱 로직이 동작하지 않기 때문에 동일한 데이터에 대한 반복이
총 2번 발생하게 되어 log의 크기가 클 경우에는 성능에 영향을 줄 것이라 판단함
가독성 방면
내장된 기본 포맷 (fuller)을 기준으로 파싱하고 있는데 해당 format은 파싱하기 위한 목적보다는 읽기 쉽게 하기 위한 목적으로 쓰이는 format이기 때문에 코드 상에서 조건에 따라 동작하는 파싱 로직을 한눈에 이해하기 어렵다고 판단함
fuller 포맷
str.startsWith("commit")
조건과 그 조건에서 동작되는 파싱 로직들의 연관성이 모호함 (1) 각 Commit 별 임시 배열 요소 초기화 (2) hash 파싱 (3) parent hash 파싱 (4) ref (branch and tag) 파싱 https://github.com/githru/githru-vscode-ext/blob/b4d4b7b3461d4243a4e566def8293819035cddad/packages/analysis-engine/src/parser.ts#L37-L63TO-BE
Todo
getGitLog
수정 (참고: https://git-scm.com/docs/git-log#_pretty_formats)getCommitRaws
수정