AIFFEL LMS 콘솔에서 git 로그인을 자동으로 설정하기
git pull/push를 할 때 password를 매번 입력해주는 것은 상당히 번거로운 일이다.
git bash에서 로그인 절차를 생략하는 일은 간단하다. 명령어 단 한 줄이면 된다. (참고 : https://assiduity.tistory.com/77)
하지만, AIFFEL의 LMS 콘솔에서는 위 방법이 먹히지 않는다.
git config --global 설정이 저장되는 경로가 "~/.gitconfig"인데, AIFFEL이 제공하는 리눅스 클라우드의 경우 "~/aiffel" 디렉터리를 제외한 나머지는 자동으로 초기화되기 때문이다. (참고 : https://coding-groot.tistory.com/97)
그래서 AIFFEL LMS에서 git 로그인을 자동으로 설정하기 위해서는 .gitconfig 파일이 저장되는 경로를 "~/aiffel" 디렉터리 하위에 위치하도록 바꿔주어야 한다.
방법 1. Home 디렉터리 변경
가장 쉬운 방법은 Home 디렉터리를 변경하는 것이다. 하지만 Home 디렉터리를 변경하면 차후 LMS 노드 진행에 불편이 있을 수 있다. 그래서 이 방법은 개인적으로 권장하지 않는다.
방법 2. config 파일 경로 변경 명령어 이용
이 시스템 설정 파일의 경로는 git config -f 명령으로 변경할 수 있다. 관리자 권한이 필요하다.
리눅스에서도 이 방법을 따르면 되지 않을까? 시도해 보았다.
긴 말 하고 싶지 않다. 어째선지 명령어가 작동하지 않는다.
방법 3. 심볼릭 링크 이용
정녕 리눅스 환경을 바꾸지 않고 .gitconfig 파일의 경로만 바꿀 수 있는 방법이 없을까?
한 가지 있었다. 심볼릭 링크를 만드는 방법이다.
(참고 : https://stackoverflow.com/questions/4050905/changing-gitconfig-location-on-windows)
하지만 이 심볼릭 링크도 결국 홈 디렉터리에 위치한다면 초기화된다.
하... 초기화되는 환경에서 설정 파일이 유지되도록 하는 방법을 연구하느라 삽질하다 보니, 저번에 Synology Web Station 구축하면서 Apache/PHP 설정을 바꿀 때의 악몽이 되살아나는 것 같다.
방법 4. Git 환경변수 바꾸기
(참고 : https://devpouch.tistory.com/125, https://git-scm.com/book/ko/v2/Git%EC%9D%98-%EB%82%B4%EB%B6%80-%ED%99%98%EA%B2%BD%EB%B3%80%EC%88%98)
Git 환경 변수를 바꾸려다가, 생각해보니 이 모든 방법들을 시도 해선 안 된다!
그 이유는 AIFFEL이 클라우드 방식으로 bash 쉘을 제공하기 때문에, git 환경변수를 바꿔버리면 모든 LMS 사용자에게 영향이 갈 수도 있다.
애초에 git도 내가 설치한 게 아니라 이미 설치되어 있었다.
물론 보안 처리가 되어 있지 않아서 관리자 권한을 얻는 건 매우 쉽지만, 할 수 있는 것과 해도 되는 것은 엄연히 다르다.
방법 5. Shell Script 매크로 작성하기
하는 수 없이 자동 로그인은 포기한다. 그 대신에 반자동(?) 매크로라도 구현한다.
결국 AIFFEL 리눅스 클라우드에서 global credential.helper store는 불가능하다. 그나마 가능한 건 local credential.helper store이다.
이걸 매번 입력해주기 번거로우니 리눅스 쉘 스크립트(sh)를 이용해서 자동 로그인 설정을 자동으로 해 주는 걸 구현해 보겠다.
$ vi git_macro.sh
git init
git config credential.helper store
git config --global user.email [email protected]
git config --global user.name "Jaehyeop Lee"
echo "# aiffel-exp3" >> README.md
git add .
git commit -m "first commit"
git branch -M main
git remote add origin $1
git push -u origin main
Esc 누른 후 :wq 입력하여 저장하고 닫았다.
$ sh git_macro.sh
정상적으로 매크로가 동작하는 걸 볼 수 있다.
다른 디렉터리에서도 정상적으로 실행되는 걸 확인할 수 있다.
git_macro.sh는 AIFFEL 디렉터리로 옮겨주었다.
이제 git 디렉터리를 만들 때마다 내부에서 git_macro.sh를 실행시켜주면 된다.
$ sh ~/aiffel/git_macro.sh <github_repository_url>
이걸 응용해서 push 시 ID / Password(Token) 입력까지 자동화 할 수 있는지는 잘 모르겠다. (HTTP 인증 방식을 시도해봤지만 실패했다. 참고 : https://dolsup.work/tech-blog/different-ways-to-access-github-repository/)
Shell Script 매크로 방식의 단점
- sh 파일을 작성하기 귀찮다.
- (ID, Password까지 자동화 한 경우 해당) 보안이 취약하다. Email, Name, ID, Password가 고스란히 sh 파일에 기록된다. 현재 AIFFEL에서 제공하는 LMS 보안이 취약하다는 점을 고려하면 꺼림직한 부분이다.
Shell Script 매크로 방식의 장점
- 아래와 같은 깃 명령어를 무려 1줄로 줄여준다. 드라마틱 하진 않지만, 충분히 생산성을 높여준다고 말할 수 있다. 또한, 이렇게 한번 로그인을 하고 나면 다시 로그인을 해 줄 필요가 없어진다.
git init
git config credential.helper store
git config --global user.email [email protected]
git config --global user.name "Jaehyeop Lee"
echo "# aiffel-exp3" >> README.md
git add .
git commit -m "first commit"
git branch -M main
git remote add origin $1
git push -u origin main
Author And Source
이 문제에 관하여(AIFFEL LMS 콘솔에서 git 로그인을 자동으로 설정하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dlwoguq0928/AIFFEL-LMS-콘솔에서-git-로그인을-자동으로-설정하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)