Hugo Blog 옮기기
Page content
개요
- 새로운 맥을 구입하면서 생긴 여러 에러를 해결하면서 기록으로 남겼다.
선수 학습
- 본 포스트는 기존
hugo
깃허브 블로그를 운영중인 독자들을 위한 글이다. - 만약 깃허브 블로그를 처음 만드시는 분은 공식 홈페이지를 참조하기를 바란다.
기존 블로그 활용
- 필자는
blog
라는 깃허브repo
가 존재하였음 - 따라서,
blog
레포를 내려 받았다.
$ git clone https://github.com/yourname/your_repo.git
상황 1. submodule에 대한 충분하지 못한 이해
- 필자가 실수한 것이 있다.
github
에서submodule
은 영어 단어 그대로, 서브 모듈이다. 즉, 한개의 메인 프로젝트가 존재하지만, 다른 프로젝트는 공통으로 사용할 모듈이라는 뜻이다.- 자세한 설명은 git 공식문서를 참고한다.
- 다시 정리하자면,
- 필자에게 메인 프로젝트는
blog
레포에 글을 남기는 것이다. - 필자가 필요한 것은 깃허브 블로그에 필요한
mainroad
라는 테마(theme) 모듈과, 배포를 위한public
모듈이다.
- 필자에게 메인 프로젝트는
public
은 필자의 깃허브 주소와 연동되어 있는 모듈이라고 생각하면 쉽다.- 즉,
public
과 필자의 깃허브 주소 레포와 하나로 연결되어 있기 때문에, 자동으로 배포가 되는 시스템이다.
- 즉,
- 여하튼, 필자가 실수한 것은 바로, 저
public
에 대한서브모듈
을 생각하지 못했고, 이 에러가 가장 치명적이었다.
해결방안
- 어떻게 해결할까?
Note: 순서를 꼭 잘 지키도록 한다
- 우선, 깃허브를 내려받으면, 기존
public
과themes/your_theme
는 삭제한다.- 이유: 캐시가 남아 있는데, 위 두개 삭제를 하지 않으면 에러의 무한루프에 빠진다.
- 아래 코드는 에러의 한 예다.
blog % git commit -m "updated"
On branch master
Your branch is up to date with 'origin/master'.
Changes not staged for commit:
modified: themes/mainroad (modified content, untracked content)
no changes added to commit
- 위 에러가 발생이 되면, 안된다. 즉, 무언가 제대로 삭제가 되지 않았다는 뜻이며, 폴더가 없음에도 위와 같은 에러가 발생이 되면 그 때는 아래 명령어를 추가하도록 한다.
$ git rm -r --cached themes/mainroad
- 이 때, 중요한 것은, 삭제 후,
git push
까지 진행해야 한다.
$ rm -rf public
$ rm -rf themes/your_theme
$ git add .
$ git commit -m "your commit msg"
$ git push origin master(or main)
- 이제부터가 중요하다. 순서를 지키도록 한다.
- 먼저, theme부터 submodule을 진행한 후, 마지막으로
public
에 대한submodule
을 설정한다.- 코드로 보면 다음과 같다.
$ git submodule add https://github.com/developer_name/your_theme.git themes/your_theme
$ git submodule add -b master git@github.com:your_name/your_name.github.io.git public
- 이렇게 함으로써
blog
레포안에 있는public
디렉토리는your_name.github.io
주소와 연동이 끝나게 되는 것이다.
주의점
- 필자의 경우,
themes/my_theme
안에shortcode
및css
코드 등을 추가하였다. 따라서, 이 코드 등도 당연히 추가가 되어야 한다.- 이 때에는 복사 붙여넣기로 대체 하도록 한다.
상황 2. ssh keygen의 필요성
- 필자는 새로운 맥에어
m1
을 구입하였기 때문에,SSH Key
값을 만들어야 한다. - 검색을 통해서 쉽게 구할 수 있기 때문에, 자세한 내용은 메뉴얼을 참고한다. +
- 코드로 구현하면 아래와 같다.
$ cd ~/.ssh
$ ssh-keygen -t ed25519 -C "your_email@example.com"
> Generating public/private ed25519 key pair.
> Enter a file in which to save the key (/Users/you/.ssh/id_ed25519): [Press enter]
> Enter passphrase (empty for no passphrase): [Type a passphrase]
> Enter same passphrase again: [Type passphrase again]
$ cat ~/.ssh/id_ras.pub
- 이때, 출력값 전체(이메일 포함)하여 복사 한후, 깃허브 계정에서 [
Settings
]-[SSH and GPG Keys
]-[New SSH Key
]를 클릭하며 붙여 넣기 한 후 저장한다. - 그런데, 하나 주의해야 하는 것은, 이대로 끝내면, 블로그를 업데이트 할 때마다, 계속 비밀버호를 입력하라고 한다. 매우 귀찮기 때문에, 아래와 같은 코드를 실행한다.
$ ssh-add ~/.ssh/id_rsa
$ eval $(ssh-agent)
- 여기까지 진행해주면 끝이 난다.
- 만약 영구적으로 바꾸고 싶다면,
~/.ssh/config
설정 값을 바꿔줘야 하는데, 이 부분은 독자들에게 남기겠다.
상황 3. 버전 문제
- 모두에게 해당 사항이 안될 수도 있다.
- 현재 필자가 겪는 에러이다.
$ WARN 2020/10/12 13:40:31 Failed to get translated string for language "en" and ID "authorbox_name": template: :1:9: executing "" at <.Count>: can't evaluate field Count in type string
- 여하튼, 버전 문제 하나만 소개 하고 마무리 한다.
- Hugo 0.76.* i18n .Count warning message #7822
- 참고로 필자의 hugo version은 v0.79.1이다.
블로그 옮기기 성공
- 이 글을 보고 있다면,
m1
에서 처음 작성하여 성공적으로 올린 글을 보게 되는 것이다. - 즉, 필자는 성공하였다.
hugo
의 가장 큰 어려움은 사실 한글자료가 많지 않다.- 이 글을 보는
hugo
사용자에게 작은 도움이 되기를 바란다.