플러터 플러그인 fork 하고 github repository 최신 버전으로 유지하기

TL;DR

Andrew Lee
andrewlee1228
5 min readDec 25, 2021

--

# 들어가며

GitHub 에서 좋은 플러터 플러그인 프로젝트를 발견했고 기능을 좀 더 확장하여 유용하게 사용을 하고 싶은 상황이 생깁니다. 개발자라면 보통 그렇습니다. 이 때 프로젝트를 fork 하고 열심히 수정을 합니다. 그리고 fork한 레포지토리에 Push를 하죠.

여기까지는 좋습니다. 그리고 시간이 흘러 같은 플러터 플러그인 프로젝트 원본 소스가 Contributor 들에 의하여 계속하여 발전합니다. 하지만 나의 fork 버전은 예전 상태에 머물러 있습니다. 그래서 이러한 최신 변경사항을 나의 fork한 프로젝트에도 가져와 반영하고 싶다면 어떻게 해야 할까요 ?

이때 필요한 것이
1) upstream
등록
2) upsream 으로부터 소스코드 동기화 입니다.
( 아, 물론 fork 했던 레포를 날려버리고 새롭게 fork 해도 상당히 깔끔합니다. 내 깃헙에서 작업했던 히스토리가 중요하지 않다면요 )

# Upstream 등록

보통 원본 소스코드가 있는 곳의 위치를 upstream 이라고 명명합니다. 이 이름으로 원본소스의 위치를 등록해줘야 합니다. flutter 에서 monorepo로 관리중인 plugins 이라는 패키지 모음 포함된 flutter_webview 패키지를 살펴보겠습니다.

flutter_webview 패키지에 대해 간략하게 소개하자면 flutter 에서 Android, iOS의 네이티브 웹뷰를 플러터에서 사용할 수 있도록 추상화한 패키지입니다.
기본적으로 브라우저의 내장함수와 같은 것들을 지원하지 않아 해당 패키지를 fork하여 내장함수를 구현하여 사용하고 있었습니다.

제가 fork한 시점은 flutter_webview의 버전에 1.x.x 였는데 현재 flutter_webview 버전은 벌써 3.x.x 가 되었습니다. 그동안 업데이트된 3.x.x 의 최신 변경사항을 fork한 버전으로 가져오도록 하겠습니다.

미리 flutter_webview가 포함된 flutter plugins 모노레포를 GitHubhttps://github.com/andrewlee1228/plugins의 공간에 fork 해 두었습니다.

git 명령어를 사용하여 fork한 레포지토리가 나의 원격지를 잘 바라보고 있는지 확인하겠습니다.

여기에 upstream 이라는 이름으로 fork 해 온 원본 소스코드의 위치를 추가시켜보겠습니다.

제대로 추가 되었는지도 확인해줍니다.
명령어: git remote -v

잘 등록 되었나요? 혹시 주소를 잘 못 저장했어도 걱정하지마세요. 아래처럼 삭제하고 다시 추가해주면 됩니다.

소스코드를 동기화 해보겠습니다.

# 동기화

일단 fetch 명령어를 통해 원본 소스코드의 내용을 로컬에 내려 받습니다. 사용법은 다음과 같습니다.

변경사항이 받아지는 로그가 보이는데 제가 두번작업하니 캡쳐를 못했습니다. ㅜㅜ

내려받은 최신 소스코드를 실제 나의repository 브랜치에 merge 시켜줘야 합니다. 다음과 같이 진행하면 됩니다.

그럼 아무래도 제가 원본소스에서 수정한 부분에 대해서 충돌이 발생합니다.
충돌을 해결하고 merge를 진행해주시면 됩니다.

충돌은 IDE 에서 해결하는게 빠릅니다 ~

이제 fork 된 저장소에 원본 저장소의 최신 내용이 반영이 되었습니다.

--

--