[Tip] Emacs: rust-analyzer-tramp가 계속 죽는 문제

Remote server에 tramp mode로 rust file을 읽어서 rust-mode에 진입한 후에 미니버퍼에 아래와 같은 경고가 뜨는데, ‘y’를 입력해서 rust-analyzer-tramp를 재실행 시켜도 계속해서 죽어서 같은 오류가 보이는 문제가 생겼다.

rust-analyzer 설치 확인

Remote server측에 rust-analyzer가 설치되어 있지 않으면 이와 같은 문제가 생길 수 있으니 다음의 명령어로 rust-analyzer를 update해본다. 만약 설치 되어 있지 않다면 이 과정에서 설치될 것이다.

rustup component add rust-analyzer

Remote path 사용

rust-analyzer가 이미 설치 되어 있음에도 문제가 발생 한다면 서버측의 path가 제대로 설정되고 있는지 확인해 보자. Trump mode는 서버측의 PATH 환경변수 값 을 읽지 않으므로 경로정보를 서버의 것으로 유지 하도록 설정해 주어야 한다.

 (require 'tramp)
 (setq tramp-default-method "ssh")
 ;; Respect remote path.
 (with-eval-after-load 'tramp
   (add-to-list 'tramp-remote-path 'tramp-own-remote-path))

OpenProject와 GitHub 연동하는 보다 간단한 방법

OpenProject와 GitHub의 연동을 위해 이전의 포스팅에서 다룬 방법은 OpenProject의 task ticket에있는 Git snippets의 내용을 복사해서 터미널에 붙여넣는 것이었는데, 이 때 만들어지는 branch의 이름은 OpenProject ticket의 제목에 기반한 것이어서 자칫하면 branch의 이름이 지나치게 길어지는 데다가, 사전에 정해둔 팀내의 branch naming rule과 충돌하기 쉽다.

다행히도 OpenProject의 GitHub 자동 연동기능은 branch naming명이 아닌 커밋 메세지내에 있는 issue ticket link에 의해 연결는 것이어서 branch의 이름은 Git snippets에서 제안하는 것과 달라도 문제가 없다.

수정 사항을 만들고 나서 commit message를 작성할 때 OpenProject의 issue ticket link을 걸어 주면 Git snippets의 내용을 복사하지 않더라도 GitHub와 연동이 잘 되는 것을 볼 수 있다. 혹시 있을 오류를 대비해서 Commit의 내용에도 [OP#56] 처럼 OpenProject내의 task ticket 번호를 언급해 주기는 했으나 이것은 없어도 아무런 문제가 없다.

GitHub에서 PR을 생성한 후 OpenProject의 해당 ticket을 보면 PR의 상태를 잘 받아서 상태를 보여주고 있는 것이 보인다.

결론

OpenProject의 Git snippet은 유용한 template이기는 하나 팀내의 다른 branch naming이나 commit message 작성에 관한 규칙이 있다면 굳이 따를 필요는 없다. Commit message내에 OpenProject의 ticket과 link시키기 위한 URL을 넣어 주면 알아서 동기화가 이루어 진다.

OpenProject와 GitHub 연동

연동을 위한 설정

#1 먼저 OpenProject에서 연동기능을 전담할 계정을 하나 생성(GitHub Bot)해준다. 그리고 새로운 role(Github integration)을 하나 만들고 View work packagesAdd comments 권한을 준다.

#2 GitHub와 연동하고자 하는 프로젝트에 생성한 전담계정(GitHub Bot)을 추가하고 역할로 GitHub integration을 부여한다.

#3 OpenProject에 GitHub 전담 계정(GitHub Bot)으로 로그인해서 Account settings -> Access tokens -> Provider tokens -> API 항목으로 이동해서 access token을 하나 생성한다. 이 token을 복사해서 GitHub의 해당 프로젝트에서 Webhooks 항목에 등록하고, “Send me everything” 권한을 설정한다.

#4 OpenProject의 프로젝트 설정에서 GitHub Module을 활성화 한다.
Project settings -> Modules -> GitHub

연동 하는 방법

GitHub module이 활성화 되었다면 각 티켓의 항목에 위와 같이 GITHUB 항목이 나타나고 “Git snippets”를 눌렀을 때 사용 할 수 있는 Git 명령어 들의 preset 들이 보인다.

Create branch with empty commit“을 눌러서 복사한 후 git repository에서 붙여 넣으면 새로운 branch가 생성되면서 비어 있는 commit이 하나 생기는데, 이 commit에 수정사항을 기록해서 PR을 생성하면 PR의 Open/CI(pass/fail)/Merged 등의 상태가 OpenProject ticket에 연결되어 자동으로 추적된다.

참조

OpenProject – GitHub integration 문서