githru / githru-vscode-ext

Lightweight but robust Githru for VSCode Extension
Apache License 2.0
49 stars 83 forks source link

[engine] getCommitRaws 함수 개선 #675

Closed yoouyeon closed 1 month ago

yoouyeon commented 2 months ago

개요

git log 데이터를 파싱하는 getCommitRaws 함수를 개선해보려고 합니다.

AS-IS

기존 방식

  1. git log 전체를 new line을 기준으로 분리하고 각 데이터 카테고리별 (id(hash), parent hash, branch, 등) 임시 배열을 만들어 파싱 https://github.com/githru/githru-vscode-ext/blob/b4d4b7b3461d4243a4e566def8293819035cddad/packages/analysis-engine/src/parser.ts#L15-L98
  2. 임시 배열에 담은 데이터를 Commit 별 JSON 형태로 변환 https://github.com/githru/githru-vscode-ext/blob/b4d4b7b3461d4243a4e566def8293819035cddad/packages/analysis-engine/src/parser.ts#L100-L119

예상되는 문제점

성능 방면

Commit 단위로 파싱 로직이 동작하지 않기 때문에 동일한 데이터에 대한 반복이

  1. 전체 log를 카테고리별로 파싱하는 반복
  2. 파싱한 각 카테고리를 Commit별로 합치는 반복

총 2번 발생하게 되어 log의 크기가 클 경우에는 성능에 영향을 줄 것이라 판단함

가독성 방면

내장된 기본 포맷 (fuller)을 기준으로 파싱하고 있는데 해당 format은 파싱하기 위한 목적보다는 읽기 쉽게 하기 위한 목적으로 쓰이는 format이기 때문에 코드 상에서 조건에 따라 동작하는 파싱 로직을 한눈에 이해하기 어렵다고 판단함

TO-BE

  1. 파싱 로직을 Commit 단위로 동작하게 해서 Commit 별 JSON 형태로 변환하는 반복을 제거
  2. fuller 대신 각 카테고리를 구분하는 separator를 설정하여 commit별 git log 구조와 파싱 로직 단순화

Todo

ytaek commented 2 months ago

refactoring은 언제나 환영합니다!!!

choisohyun commented 1 month ago

요거 종료된 이슈로 보여서 종료하겠습니다!