TL;DR

  • Grubby는 Ruby로 작성된 Git 저장소용 정적 사이트 생성기이며, 저장소별 웹사이트와 저장소 인덱스를 생성함.
  • Git, Ruby 3.0 이상, Kramdown이 필요하며, RepoRat에서 포크해 큰 영향을 받음.
  • 기본 설정은 그대로 사용할 수 있도록 구성되며, 핵심 도메인과 경로 설정은 _config.yml에서 관리함.
  • 베어 Git 저장소를 .git으로 끝나는 이름으로 두고 post-update 훅을 실행하면 저장소 사이트와 루트 인덱스를 다시 생성함.
  • 개별 커밋 변경 사항이나 브랜치 페이지는 생성하지 않음.

개요

  • Grubby는 Ruby로 작성된 Git 저장소용 정적 사이트 생성기임.
  • RepoRat에서 포크했으며, RepoRat에서 큰 영향을 받음.

요구 사항

  • Git
  • Ruby 3.0 이상
  • Kramdown

설정

  • Grubby는 기본 설정에 의견이 반영되어 있으며, 세부 조정 없이 그대로 사용하는 방식을 지향함.
  • 기본 Markdown 파서는 Kramdown이며, 다른 파서로 바꿀 수 있지만 버그가 없다고 보장하지 않음.
  • 모든 베어 Git 저장소 이름이 .git 확장자로 끝난다고 가정함. 이 조건을 지키지 않으면 핵심 저장소 인덱스 생성이 제대로 작동하지 않음.
  • 핵심 도메인과 경로를 설정할 때 수정할 파일은 _config.yml임.
  • CSS, 탐색 링크, 푸터 내용을 바꾸려면 각각 style.css, _header.html, _footer.html을 수정하면 됨.
  • 기본적으로 핵심 저장소 인덱스는 메인 디렉터리 루트에 index.html로 생성되며, 출력 파일 이름도 _config.yml에서 변경 가능함.

사용 방법

  • 안내는 NearlyFreeSpeech.NET을 사용하는 공유 호스팅 환경을 기준으로 하며, 자체 VPS에서도 비슷한 방식으로 실행 가능함.
  • 베어 Git 저장소가 /home/public/git.sitename.org 아래에 있다고 가정함.
  • 프로젝트를 /home/private/ 같은 비공개 디렉터리에 복제한 뒤, /home/public 아래의 저장소 디렉터리(예: coolrepo.git)로 이동함.
  • 저장소의 hooks 디렉터리에 post-update 파일을 만들고 실행 권한을 부여함.
  • 훅은 GIT_DIR을 해제하고, 일반 HTTP를 통한 복제를 위해 git update-server-info를 실행함.
  • 이어 저장소 이름에서 .git을 제거해 임시 디렉터리에 복제하고, 원본 저장소의 description 파일을 복제본의 .git/description으로 복사함.
  • 복제본 디렉터리에서 /home/private/grubby/grubby.rb를 실행해 정적 사이트를 다시 생성한 뒤 임시 디렉터리를 삭제함.
  • ./hooks/post-update를 실행해 동작을 시험할 수 있음.
  • 생성 결과는 /home/public/git.sitename.org/coolrepo에 저장되며, 기본 설정에서는 /home/public/git.sitename.org/ 루트의 index.html도 갱신됨.
  • 각 프로젝트에 훅을 추가하는 대신 post-receive 훅에서 해당 명령을 실행하거나 전역 post-update 훅을 사용할 수 있음.

제한 사항

  • 개별 커밋 변경 사항이나 브랜치 페이지는 생성하지 않음.