Show HN: Graphite – GitHub에서의 Stacked Diffs
요약
Graphite는 GitHub에서 'stacking'이라는 개발 워크플로우를 가능하게 하는 도구입니다. 이는 대규모 PR을 작고 의존적인 여러 PR 세트로 분할하여, 개발자가 작업 흐름을 끊지 않고도 빠르게 코드를 리뷰하고 배포할 수 있도록 돕습니다. Graphite는 Meta나 Google 같은 대기업 엔지니어들이 사용하던 내부 코드 리뷰 경험을 GitHub 환경에 가져왔으며, CLI, 웹 앱, VS Code 확장 프로그램 등 다양한 방식으로 지원됩니다. 주요 기능으로는 모든 PR 상태를 한눈에 볼 수 있는 인박스, 코드를 중심으로 간소화된 리뷰 인터페이스, OpenAI 연동을 통한 AI 기반 설명 생성 및 댓글 제안 등이 있습니다. 또한, 스태킹 워크플로우를 지원하여 복잡한 병합(merge) 과정을 자동화하고 Slack과 같은 외부 도구와 실시간으로 연동됩니다.
핵심 포인트
- Graphite는 GitHub에서 'stacking'을 구현하는 개발자 도구로, 대규모 PR을 작은 단위의 의존적 PR 세트로 분할하여 빠른 배포를 가능하게 합니다.
- Meta 및 Google 등 최고 기업 엔지니어들의 내부 코드 리뷰 경험을 재현했으며, CLI, 웹 앱, VS Code 확장 프로그램으로 지원됩니다.
- 모든 PR 상태를 통합적으로 관리하는 '인박스' 기능을 제공하며, 다양한 필터링 기준으로 작업 현황 파악이 용이합니다.
- OpenAI 연동을 통해 모든 PR에 대한 상세 설명 자동 생성 및 댓글 제안 기능(출시 예정)을 제공하여 리뷰 효율성을 높입니다.
- 스태킹 워크플로우를 지원하여 복잡한 병합 과정을 자동화하고, Slack 등 외부 플랫폼과 실시간 알림 기능을 제공합니다.
요약(TLDR); Graphite는 "stacking"이라 불리는 git 워크플로우를 가능하게 합니다. 이는 코드를 개발하고 배포하는 가장 빠른 방법으로, 이미 많은 대형 기술 기업들이 수년 동안 사용해 온 방식입니다. Graphite는 GitHub 계정이 있는 사람이라면 누구나 stacking을 사용할 수 있게 해줍니다.
안녕하세요 HN!
저는 graphite.dev의 공동 창업자인 Tomas입니다. 오늘 저희는 약 2년 동안의 비공개 베타 (closed beta) 개발을 마치고 Graphite를 출시합니다. [1] Graphite는 우리 자신의 문제를 해결하기 위한 내부 솔루션으로 시작되었습니다. 우리(Meta, Google, Airbnb 출신 엔지니어들)가 이전 직장을 떠났을 때, 우리가 좋아했던 내부 코드 리뷰 도구들에 대한 접근 권한을 잃게 되었습니다. 그래서 우리는 우리만의 도구를 직접 만들었습니다.
Graphite는 가장 빠른 개발자들이 코드를 배포하는 방식입니다. 이는 "stacking" (의존 관계가 있는 pull request 세트를 생성하는 것)을 통해 더 작은 pull request (PR)를 생성하고, 작업 차단 (unblocked) 없이 더 빠르게 배포할 수 있도록 돕는 개발자 도구입니다. Stacking [2]을 사용하면 개발자는 진행 중인 개발 작업의 흐름을 끊지 않으면서도, 대규모 pull request (PR)를 독립적으로 리뷰 및 병합 (merge)할 수 있는 더 작은 단위로 나눌 수 있습니다. Google의 엔지니어링 모범 사례 (best practices)에 따르면 "적절한" PR은 약 100줄 내외여야 하며, stacking이나 다른 방법을 통해 이를 달성할 수 있도록 PR을 분할할 것을 권장합니다. [3]
Phabricator, Gerrit 또는 Sapling과 같은 다른 도구들과 달리, Graphite는 사용자의 GitHub 저장소 (repositories)와 원활하게 동기화되므로 별도의 인프라를 관리할 필요가 없습니다. 이는 또한 팀원들이 아직 Graphite를 사용하지 않더라도, 당신은 여전히 사용할 수 있음을 의미합니다.
GitHub 계정으로 Graphite에 로그인하면 다음과 같은 기능을 기대할 수 있습니다:
(1) Stacking에 대한 최상급 지원 (First class support): Graphite의 핵심은 Meta와 Google 같은 최고 기업의 엔지니어들이 작고 의존적인 pull request 세트를 만들기 위해 사용하는 워크플로우인 "stacking"을 가능하게 하는 것입니다. Graphite CLI, 웹 앱, 그리고 VS Code 확장 프로그램 (extension)이 모두 결합되어 엔지니어들이 stacking을 시작할 수 있도록 지원합니다.
(2) Pull request 인박스 (inbox): 이를 Graphite의 홈 페이지라고 생각하면 됩니다. 이곳에서 모든 PR (Pull Request)의 상태를 완전히 파악할 수 있으며, 모든 리포지토리 (repo), 작성자 (author), 그리고 리뷰 단계 (stage of review)에 걸쳐 아직 처리해야 할 작업이 무엇인지 알 수 있습니다. 또한 리뷰어 (reviewer), 작성자 (author), 라벨 (label), CI 상태 등 다양한 기준으로 PR을 필터링하는 커스텀 인박스를 생성할 수도 있습니다.
(3) 간소화된 코드 리뷰 인터페이스 (code review interface): Graphite의 Pull Request 페이지는 코드를 중심에 두는 것을 목표로 탭을 제거하고 주의 분산을 최소화합니다. 키보드 단축키를 사용하여 파일과 댓글 사이를 탐색하거나, 스택 (stack) 내의 PR 사이를 이동할 수 있습니다. 또한 리뷰에 재미를 더하기 위해 커스텀 밈 (meme)이나 GIF를 가져올 수도 있습니다!
(4) AI 기반 Pull Request: OpenAI 연동을 통해 모든 PR에 대한 상세한 설명을 자동으로 생성합니다. 댓글을 제안된 코드 변경 사항으로 전환할 수도 있습니다 (출시 예정!).
(5) 실시간 알림 (real-time notifications): Graphite를 Slack 워크스페이스에 연결하여 리뷰 요청, 댓글 스레드 (thread), 머지 (merge) 상태 및 기타 PR 활동에 대한 최신 정보를 계속 확인할 수 있습니다. 규모가 작은 PR의 경우, Slack에서 직접 리뷰를 남기거나 심지어 머지할 수도 있습니다.
(6) 스택 인식 머지 (stack-aware merges): Graphite는 스태킹 (stacking) 워크플로우를 지원하도록 구축되었기 때문에, 머지할 시점이 되었을 때 PR을 리베이스 (rebase)하는 수동 작업을 자동화합니다. 웹 앱에서 클릭 한 번으로, 또는 CLI에서 단일 명령어로 스택을 머지할 수 있습니다.
시작하는 방법에 대한 튜토리얼이 필요하다면 저희의 시작 가이드 [4] 또는 제품 투어 영상 [5]를 자유롭게 살펴보시고, 아래에 의견을 남겨주세요!
[1] http://graphite.dev/blog/launch
[3] https://google.github.io/eng-practices/review/developer/small-cls.html
AI 자동 생성 콘텐츠
본 콘텐츠는 HN AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기