Meta(구 페이스북) 내부에서 10년 동안 사용 중이던 Git 호환 클라이언트를 오픈소스로 공개했습니다. 도구를 자세히 테스트해보진 않았지만 Git 호환 클라이언트라고 하는걸 보니 코드 저장소는 Git을 쓰지만 페이스북 내부의 문제를 좀더 쉽게 해결하기 위해 Git 클라이언트를 직접 쓰지 않고 호환 클라이언트를 만들어서 쓴 게 아닐까 싶습니다. Microsoft에서도 비슷한 움직임이 있었는데 페이스북도 거대한 모노레포를 운영하는 것으로 유명하기 때문에 모노레포 문제를 해결하기 위해서 만든 것으로 보입니다. 시작은 Mercurial의 확장이었다고 하는데 Facebook을 Mercurial을 쓰는 걸로 유명했기 때문에 시간이 지나면서 도구가 발전하면서 Git 호환 클라이언트까지 발전한게 아닐까 싶습니다.(Mercurial은 Git과 유사한 분산 버전 관리 도구입니다.) 작업할 때 사용하기 편리한 기능들이 꽤 포함되어 있는 걸로 보입니다만 Facebook 내에서는 Stacked changes라고 부르는 방식을 많이 쓰고 있는 걸로 알려져 있는데 관련한 기능이 같이 포함된 것이 흥미로웠습니다. GitHub에서 Pull Reqeust 기반으로 작업할 때 A 작업을 올려놓고 리뷰를 받는 동안 B 작업을 이어서 해야 하는데 이때 A 작업의 코드 변경이 필요한 경우가 있고 PR을 작게 만드려면 이런 경우는 자주 일어납니다. 이때 A <- B의 의존 관계가 있으므로 이렇게 쌓이는걸 Stacked changes라고 부릅니다. 페이스북은 이 방식을 아주 적극적으로 쓰고 이를 위한 도구도 있어서 페이스북에서 퇴사한 사람이 이를 위한 서비스를 직접 만들기도 했습니다.( graphite.dev ) 이번에 공개된게 내부 시스템의 대부분인지는 알 수 없지만 이번에 ReviewStack이라는 UI 프로젝트도 같이 공개되어서 GitHub에서 stacked changes를 쉽게 볼 수 있게 제공한다고 합니다.

Sapling: Source control that's user-friendly and scalable

Engineering at Meta

Sapling: Source control that's user-friendly and scalable

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2022년 12월 13일 오전 11:35

댓글 0