체인의정석

깃허브 서브모듈 (스마트컨트렉트 & 백엔드의 다중 깃허브 주소 관리) - 업데이트 본문

개발/git

깃허브 서브모듈 (스마트컨트렉트 & 백엔드의 다중 깃허브 주소 관리) - 업데이트

체인의정석 2022. 12. 9. 11:06
728x90
반응형

각종 컨트렉트 + 백엔드까지 합쳐진 복잡한 저장공간

이럴때는 깃허브 관리를 어떻게 해야할까?

 

https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-%EC%84%9C%EB%B8%8C%EB%AA%A8%EB%93%88

 

Git - 서브모듈

gitmodules 파일에 있는 URL은 조건에 맞는 사람이면 누구든지 Clone 하고 Fetch 할 수 있도록 접근할 수 있어야 한다. 예를 들어 다른 사람이 Pull을 하는 URL과 라이브러리의 작업을 Push 하는 URL이 서로

git-scm.com

바로 git 서브 모듈을 쓰는 것이다.

 

일단 서브 모듈을 받아오는 명령어 부터 알아보겠다.

git submodule init

git submodule update

요걸 해주면 서브 모듈이 올라간 레퍼지토리의 소스 코드들이 한번에 받아와진다.

 

서브 모듈을 생성하는 방법은?

$ git submodule add https://github.com/chaconinc/DbConnector
Cloning into 'DbConnector'...
remote: Counting objects: 11, done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 0), reused 11 (delta 0)
Unpacking objects: 100% (11/11), done.
Checking connectivity... done.

요런식으로 생성하게 되면 서브 모듈이 추가되며

.gitmodules 가 서브 모듈의 개수만큼 이렇게 추가가 된다고 한다.

[submodule "DbConnector"]
    path = DbConnector
    url = https://github.com/chaconinc/DbConnector

만약 커밋을 하게 된다면?

$ git commit -am 'added DbConnector module'
[master fb9093c] added DbConnector module
 2 files changed, 4 insertions(+)
 create mode 100644 .gitmodules
 create mode 160000 DbConnector

이런식으로 특별한 커밋이 따로 된다고는 하지만

 

개인적으로는 서브 모듈은 하나의 공간에서 저장해놓고 보기 쉽게 하거나 다수의 컨트렉트를 가져와서 하나의 소스에서 사용하는 형태로 진행하고 각 커밋은 각 브랜치에 들어가서 하는게 맞지 않을까 싶다.

 

특히 이건 특히 단계별로 깃허브 주소가 추가되는 블록체인 프로젝트의 특성상 유용한 방식일것 같다.

나도 나중에 실습 강의때 써먹어야지!

 

 

 

728x90
반응형
Comments