벡엔드 프로젝트
프론트 프로젝트
다양한 민감 정보들이 무분별하게 분포 되어있었고 Github Action 에서는 모든 민감 정보를 따로 관리 하고있었다.
민감정보를 로컬에 저장하고 있었고 팀원들과 공유도 힘들고 민감정보가 업데이트 된다면 모두에게 알리는 것도 일이었다.
먼저 서브 모듈이 되어줄 private 레포지토리를 생성한다.
서브모듈이 적용되어야하는 레포지토리에 가서 아래 명령어를 입력해준다.
만약 프로젝트 루트에 서브모듈이 만들어져야하는게 아닌 폴더 안에 만들어 져야 한다면
cd 로 폴더에 들어가서 아래 명령어를 입력하자
git submodule add {url}
나같은 경우는 env 레포지토리에 아무런 커밋도 없기 때문에 위와같은 fatal 에러가 난 것이다.
위 처럼 아무런 커밋정보도 없으면 생성되어야 하는 .gitmodules 파일이 생기지 않는다… 꼭 커밋이 있는 서브 모듈을 add 하도록 하자.
env 레포에 커밋을 찍고 push를 해보자
// README.md
# env
간단하게 리드미 파일을 만들고 push 했다.
다시 front 프로젝트로 돌아와서 git submoudle add 를 한 경로에서 파일목록을 확인해 보면 서브모듈이 보인다.
cd 로 들어가보니 다른 git 레포지토리로 인식하는것을 볼수있다.
pull을 당겨보자
이쁘게 README가 생성된 것을 볼수있다!
그렇다면 남은 작업은 원래 프로젝트 레포지토리에서 추가된 서브모듈을 push하는 일만 남았다.
이쁘게 잘 올라왔다!
clone 된 프로젝트에서 ( clone 만 했으면 서브모듈에 아무것도 없다. )
아래 명령어들은 한번만 하면된다.
git submodule init
git submodule update
성공이다
1. git submodule deinit -f -- a/submodule
2. rm -rf .git/modules/a/submodule
3. git rm -f a/submodule
# Note: a/submodule (no trailing slash)
# or, if you want to leave it in your working tree and have done step 0
3. git rm --cached a/submodule
서브모듈을 최신화 하고 싶을때는
git submodule update --remote
// 또는 여러개의 서브 모듈을 한번에 업데이트 하고 싶다면
git submodule foreach git pull
명령어를 이용해 최신화가 가능하다.
만약 본인도 서브모듈을 수정했지만 최신화 해야 할때는 동작을 지정해 줘야 한다. (머지, 리베이스)
git submodule update --remote --merge
또는
git submodule update --remote --rebase
참고 자료
https://velog.io/@zini9188/Git-Submodule
https://git-scm.com/book/ko/v2/Git-도구-서브모듈
https://tkim.info/ko/devnote/d061-잘못된-submodule-path가-.git에-남아있을-때-삭제하는-방법/
추후 계획
https://velog.io/@zini9188/Git-Submodule
서브 모듈을 Github Action에 등록해서 깃허브 토큰 만으로 모든 민감 정보를 Action에 넘길 생각이다.
실제로 private 레포지토리가 따로 클론이 안되는게 맞는지 궁금해서 docker로 git 을 설치해서 인증정보가 없는 상태로 clone을 해보았다.
clone 만 했을때는 env 서브모듈안 파일들이 보이지 않았다.
git submodule update 를 했을때
웬걸 인증을 필요로한다.
private 저장소가 이름값을 하는 순간이다…
서브모듈의 설정이 저장된 .gitmodules 를 보면 아래와 같다
[submodule "frontend-v2"]
path = frontend-v2
url = https://github.com/TUK-DP/frontend-v2
여기에 디폴트 브랜치 설정을 추가한다.
[submodule "frontend-v2"]
path = frontend-v2
url = https://github.com/TUK-DP/frontend-v2
branch = main
git submodules update --remote --recursive
갈기면 main브랜치로 잘 가져오는 것을 확인 가능하다!!
clone이 진행 된뒤에 private 서브모듈을 update를 해보면
위와 같이 인증을 요구한다...
따라서 PAT(Personal Access Token)을 이용하여 별다른 인증없이 명령만으로 업데이트가 동작하게 설정해보자
PAT를 발급받는 과정은 생략하겠다..
만약 clone 하기 전이라면 아래와 같이 clone 을 받으면 인증과정을 건너 뛸수 있다.
git clone https:<PAT>@github.com/Leewonchan14/Repository.git
프로토콜 다음에 pat 를 넣어 clone 을 받는 다면 pat 가 포함된 채로 remote url 이 설정될 것이고 인증절차 없이 pull 같은 동작이 실행 가능하게 된다.
이미 clone 을 진행한 상태라면 remote url를 pat로 변경해주면 된다.
git remote set-url https:<PAT>@github.com/Leewonchan14/Repository.git
위 명령어만 입력하면 remote url을 변경 가능하다.