git subtree를 이용한 Root Directory에 작성되지 않은 App의 Heroku 배포

박지인·2021년 10월 6일
0

큰일이다 큰일!

보통 개발을 할 때 프론트엔드, 백엔드는 각자 repository를 파서 작업을 하게 된다. 또 같은 백엔드라도 데이터 서버, 채팅 서버등을 분리해서 개발한다면 그것 역시 각각의 repository에 작업하게 된다. 그런데 만약 하나의 repository에 여러 app들을 디랙터리로 구분해서 작성했다면? 예를 들자면 아래의 상황이다

  • root
    • frontend
    • backend_data
    • backend_chatting

개발할 때는 약간의 불편함은 있었지만 큰 문제 없이 각자의 폴더에서 작업을 할 수 있었다.
backend_chatting app의 개발을 마치고 Heroku로 배포를 하려 설정도 다 마치고 배포를 수행하려는데 아뿔싸, 아래의 명령어는 작동을 하지 않는다!

git push heroku master

분명 이 한 줄이면 마법같이 배포가 된다던데, 나에게 그런 일은 일어나지 않는다. 뭐가 문제인걸까??

왜 배포가 안 되는거지?

그 이유는 Heroku로 Node.js 앱 배포를 위해선 root directory에 package.json가 위치해야 하기 때문이다. 각 앱별로 폴더를 나누어 작업했으니, root에 package.json이 있을리 만무하다.

이렇게 해결하자!

결과적으론 아래의 코드를 입력하면 된다.

# backend_chatting를 접두어로 삼는 디랙토리를 subtree로 하여
# heroku에 master branch를 push하라는 명령어이다. 
git subtree push --prefix backend_chatting heroku master

git에는 subtree라는 기능이 있다. git으로 추적중인 repository를 작은 부분으로 나누기 위한 기능들 중 하나인데, 이를 이용하면 subdirectory를 Root directory처럼 다룰 수 있게 된다. (현재 문제 상황을 해결하기 위한 개념만을 담은 대략적인 설명이다. 직접 검색해보기를 추천한다.)

0개의 댓글