아래는 **대규모 프로젝트(예: 1만 줄 이상 코드, 매우 많은 커밋 등)**에서도 위 GitFolio 코드를 완벽하게 동작시키기 위해 어떤 부분을 어떻게 수정하면 좋을지에 대한 구체적인 방안입니다. 요점은 API 호출·LLM 토큰 제한을 고려하면서, Incremental(증분) 처리, 필터링 등을 통해 안정적으로 “전체 레포지토리”를 분석하도록 만드는 것입니다.
문제:
fetchCommits
, fetchUserContributions
등의 함수가 ?per_page=10
로 제한된 호출을 하고 있습니다. 작은 규모라면 괜찮지만, 만 줄 이상의 프로젝트에서 수백~수천 건의 커밋이 있을 수 있음.해결 방안:
GitHub API에서는 ?page=1&per_page=100
까지 가능하므로, 원하는 만큼 반복 호출하여 “전체 커밋”을 모을 수 있음.
예:
async function fetchAllCommits(owner, repo) {
let allCommits = [];
let page = 1;
const perPage = 100; // 최대 100
while (true) {
const response = await axios.get(
`https://api.github.com/repos/${owner}/${repo}/commits?page=${page}&per_page=${perPage}`
);
const commits = response.data;
if (commits.length === 0) break;
allCommits = allCommits.concat(commits);
page++;
}
return allCommits;
}
이를 통해 만 건 이상의 커밋도 전부 수집 가능(단, API Rate Limit 고려).
문제:
문제:
.json
, .png
, .md
, .min.js
등은 무시node_modules/
, build/
, dist/
등 빌드 산출물 폴더 제외