리브레오피스(LibreOffice)에 소스코드 제출을 위한 gerrit설정 및 제출 정리

리브레오피스(LibreOffice) Gerrit 소스코드 리뷰 시스템 설정

리브레오피스(LibreOffice)의 Gerrit은 문서재단의 인증을 위한 싱글 사인온(Single Sign-On)서비스를 사용하고 있습니다.

우선, Gerrit사용을 위한 계정을 생성 Create an account

참고: LibreOffice Wiki - Setting yourself up for gerrit

개인 컴퓨터에 SSH 키를 생성합니다.

SSH생성은 Github의 글을 참조하면 됩니다.
Generating a new SSH key and adding it to the ssh-agent

키생성은 아래와 같습니다

$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

이후, gerrit시스템에 등록된 userid를 확인후, gerrit시스템에 SSH Key 설정 등록을합니다.

다음의 명령어로 키 조회후 gerrit시스템에 SSH Key 설정 등록하면 됩니다.

$ cat ~/.ssh/id_rsa.pub

gerrit에 SSH키 등록을 하였으면 ${HOME}/.ssh/config 파일 생성하거나 아님 기존 파일이 있으면 기존 파일에 에 아래와 같이 내용을 추가합니다

 Host logerrit gerrit.libreoffice.org
       IdentityFile /path/to/your/private-key
       User YOUR_USERNAME_HERE
       Port 29418
       HostName gerrit.libreoffice.org

IdentityFile 속성에는 생성한 ${HOME}/.ssh/id_rsa를넣으면 됩니다. User 속성에는 gerrit에 등록된 id를 넣습니다.

이후, logerrit 실행을 해봅니다

$ ./logerrit test
There seems to be trouble. Please have the output of:
ssh -vvvv logerrit
at hand when looking for help.

일단 실행해보니, 우선 ssh -vvvv logerrit을 실행하라는군요

아래와 같이 실행해봅니다.

$ ssh -vvvv logerrit

테스트가 성공하면, SSH키에 대한 비밀번호 입력하라고 나오고, 입력이 완료되면 아래와 같은 메세지를 확인할 수 있습니다

  ****    Welcome to Gerrit Code Review    ****

  Hi {Your Name}, you have successfully connected over SSH.

  Unfortunately, interactive shells are disabled.
  To clone a hosted Git repository, use:

  git clone ssh://{your user id}@gerrit.libreoffice.org:29418/REPOSITORY_NAME.git

debug2: channel 0: written 292 to efd 6
debug3: send packet: type 1
debug1: channel 0: free: client-session, nchannels 1
debug3: channel 0: status: The following connections are open:
  #0 client-session (t4 r0 i0/0 o0/0 e[write]/0 fd 4/5/6 sock -1 cc -1)

debug3: fd 1 is not O_NONBLOCK
Connection to gerrit.libreoffice.org closed by remote host.
Connection to gerrit.libreoffice.org closed.
Transferred: sent 3928, received 2040 bytes, in 9.5 seconds
Bytes per second: sent 415.1, received 215.6
debug1: Exit status -1

이제, logerrit이 제대로 실행되는지 확인해봅니다

$ ./logerrit test
Enter passphrase for key '/home/${HOME}/.ssh/id_rsa':
Your gerrit setup was successful!

gerrit시스템 설정이 제대로 되었으면 위와 같이 나옵니다.

소스 커밋하기

저장소에 수정한 내용을 git commit으로 커밋합니다.

커밋한 소스코드를 리브레오피스 gerrit 소스코드 리뷰시스템에 전달하기

커밋된 내용을 저장소에 적용을 하기 위해서, gerrit소스코드 리뷰 시스템에 이제 전달해야겠죠?

이제, logerrit을 이용하여 gerrit 코드 리뷰시스템에 커밋한 소스코드를 제출합니다.

$ ./logerrit submit master
Enter passphrase for key '/home/${HOME}/.ssh/id_rsa':
오브젝트 나열하는 중: 96, 완료.
오브젝트 개수 세는 중: 100% (96/96), 완료.
Delta compression using up to 4 threads
오브젝트 압축하는 중: 100% (50/50), 완료.
오브젝트 쓰는 중: 100% (57/57), 8.84 KiB | 55.00 KiB/s, 완료.
Total 57 (delta 45), reused 16 (delta 5), pack-reused 0
remote: Resolving deltas: 100% (45/45)
remote: Counting objects: 119475, done
remote: Processing changes: refs: 1, new: 1, done
remote: commit 6821939: warning: subject >50 characters; use shorter first paragraph
remote:
remote: SUCCESS
remote:
remote:   https://gerrit.libreoffice.org/c/core/+/97344 Hardcode script for "Noto" CJK fonts & add USCRIPT_JAMO [NEW]
remote:
To ssh://logerrit/core
 * [new branch]                HEAD -> refs/for/master

이제, LibreOffice의 gerrit 코드 리뷰 시스템 설정 및 소스코드 제출 방법을 확인해보았습니다.

Buy me a coffeeBuy me a coffee

English: Submit & commit Translation on WhatCanIDoForLibreOffice repository using LibreOffice Gerrit code review system.

Korean: 리브레오피스(LibreOffice) 소스코드 리뷰 시스템 Gerrit에서 관리하는 WhatCanIDoForLibreOffice 저장소에 번역 내용 커밋 및 적용하기 기록

Korean follows English. (私の日本語の実力が本当に足りなくて英語と韓国語だけ書きました。)

June 17th Wednesday, 2020.

Japanese TDF Member, Jun Nogata wrote the post on LibreOffice Korean Facebook.

Below is the post he wrote on LibreOffice Korean Facebook.

(He is Japanese speaker. But, He study Korean and wrote the post on LibreOffice Korean Facebook.)

Below is the his post

안녕하새요. 질문이 있어요.

어떻게 이 repository로 commit할 수 있어요?
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

logerrit없어요. 모르겠어요~😭
이본어 번역을 commit하고 싶어요...😢
Translated into English
Hello, I have a question.

How to commit the files on the repository, WhatCanIDoForLibreOffice
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

I have no logerrit file. I don't know~😭
I want to commit the Japanese translation.
------
I corrected his Korean writing.

안녕하세요. 질문이 있습니다.

어떻게 이 repository로 commit할 수 있어요?
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

저는 logerrit이 없어요. 모르겠어요~😭
일본어 번역을 commit하고 싶어요...😢

He want to add Japanese translation on "What Can I Do For LibreOffice" repository, controlled by TDF Gerrit code review system.

Here is "What Can I Do For LibreOffice" repository.
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

 

https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

 

gerrit.libreoffice.org

Here is "What Can I Do For LibreOffice" Homepage.
https://whatcanidoforlibreoffice.org/

 

What can I do for LibreOffice

LibreOffice Language: English ‪čeština | ‪Czech ‪Cymraeg | ‪Welsh Español | Spanish ‪Français | ‪French ‪Italiano | ‪Italian ‪한국어 | ‪Korean ‪Português do Brasil | ‪Brazilian Portuguese ‪Slovenščina | ‪Slovenian ‪S

whatcanidoforlibreoffice.org

I added Korean translation on the "What Can I Do For LibreOffice" Homepage.

I summarize the log to add add my translation(Korean) on "What Can I Do For LibreOffice" repository. (It can also apply to translation for CJK languages such as Japanese, Chinese[Traditional, Simplified], etc.)

For the first time, You need to set yourself up LibreOffice gerrit code review system.

Below is Detail contents about Setup yourself up for gerrit.

https://wiki.documentfoundation.org/Development/gerrit/setup#Setting_yourself_up_for_gerrit_-_the_easy_way

 

Development/gerrit/setup - The Document Foundation Wiki

Setting yourself up for gerrit Before you start: Troubleshooting help The instructions below should be easy and quick to follow. However, if you get stuck somewhere, here is how you get help: Register in Gerrit for first time Gerrit uses The Document Found

wiki.documentfoundation.org

Next time, Get the "What Can I Do For LibreOffice" source code from "WhatCanIDoForLibreOffice" repository.

git clone "https://git.libreoffice.org/WhatCanIDoForLibreOffice"

And then, add /locales/[your-language code].inifile and modify index.html and locales.ini files.

I'm Korean and My mother tongue is Korean, so My Language's ISO Language code is ko-KR.
So, I added ko-kr.inifile.

(For example, If you are Japanese, You can add Japanese code ja and add ja.inifile. Also you are Simplified Chinese speaker, You can add zh-cn.ini file for ISO's Simplified Chinese Language code zh-CN, you are Traditional Chinese speaker, You can add zh-tw.ini file for ISO's Simplified Chinese Language code zh-TW.)

below is my committed some code link Add Korean [ko-kr] translation

 

Diff - f82b424ce060af3a0b10bf6456cbbb96b39cba96^! - WhatCanIDoForLibreOffice - Gitiles

commitf82b424ce060af3a0b10bf6456cbbb96b39cba96[log]

git.libreoffice.org

and commit your modified and added files.

git commit -a

you have to write commit logs.

After wrote the commit log, You can see logs

[master f82b424] Add Korean [ko-kr] translation.
3 files changed, 58 insertions(+)

and then, I have to submit at TDF Gerrit system using logerrit file.

% curl -LJO https://gist.githubusercontent.com/studioego/943695359245924f03268e3bd5fd62ca/raw/logerrit -o logerrit

Next time, You change the logerrit file's execute permission.

% chmod +x logerrit

(You have to regist ssh key on LibreOffice gerrit review system.)

and then submit the commit using logerrit on LibreOffice gerrit review system.

% ./logerrit submit master
Enter passphrase for key '/****/.ssh/id_rsa':
오브젝트 나열하는 중: 7, 완료.
오브젝트 개수 세는 중: 100% (7/7), 완료.
Delta compression using up to 4 threads
오브젝트 압축하는 중: 100% (4/4), 완료.
오브젝트 쓰는 중: 100% (4/4), 424 bytes | 424.00 KiB/s, 완료.
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3)
remote: Processing changes: refs: 1, done
remote: ERROR: commit f82b424: missing Change-Id in message footer
remote:
remote: Hint: to automatically insert a Change-Id, install the hook:
remote: gitdir=$(git rev-parse --git-dir); scp -p -P 29418 ****@gerrit.libreoffice.org:hooks/commit-msg ${gitdir}/hooks/
remote: and then amend the commit:
remote: git commit --amend --no-edit
remote: Finally, push your changes again
remote:
To ssh://logerrit/WhatCanIDoForLibreOffice
! [remote rejected] HEAD -> refs/for/master (commit 4a07bf2: missing Change-Id in message footer)
error: 레퍼런스를 'ssh://logerrit/WhatCanIDoForLibreOffice'에 푸시하는데 실패했습니다

Ooops, Because of missing Change-ID in message footer, You don't submit the commit.

So, install the hook

% gitdir=$(git rev-parse --git-dir); scp -p -P 29418 ****@gerrit.libreoffice.org:hooks/commit-msg ${gitdir}/hooks/
Enter passphrase for key '/****/.ssh/id_rsa':
commit-msg 100% 1791 5.3KB/s 00:00

and then amend the commit (add Change-ID)

git commit --amend --no-edit
[master f82b424] Add Korean [ko-kr] translation.
Date: Fri Jun 14 01:26:26 2019 +0900

after amand the commit, added Change-Id in message footer.
Finally, push your changes again

% ./logerrit submit master
Enter passphrase for key '/********/.ssh/id_rsa':
오브젝트 나열하는 중: 7, 완료.
오브젝트 개수 세는 중: 100% (7/7), 완료.
Delta compression using up to 4 threads
오브젝트 압축하는 중: 100% (4/4), 완료.
오브젝트 쓰는 중: 100% (4/4), 468 bytes | 468.00 KiB/s, 완료.
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3)
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: https://gerrit.libreoffice.org/.../WhatCanIDoForL.../+/73976 Add Korean [ko-kr] translation.
 [NEW]
remote:
To ssh://logerrit/WhatCanIDoForLibreOffice
* [new branch] HEAD -> refs/for/master

and submit the gerrit review system and If the Libreoffice's "WhatCanIDoForLibreOffice" repository soruce code reviewer allow the commit, He/She accept your source code.
https://gerrit.libreoffice.org/c/WhatCanIDoForLibreOffice/+/73976

 

https://gerrit.libreoffice.org/c/WhatCanIDoForLibreOffice/+/73976

 

gerrit.libreoffice.org

Finally, After The Repository committer checked the your commit, He’ve approve the your submitted source code.

Change has been successfully cherry-picked as f82b424ce060af3a0b10bf6456cbbb96b39cba96 by ***

Here is my commit log Add Korean [ko-kr] translation and review link https://gerrit.libreoffice.org/c/WhatCanIDoForLibreOffice/+/73976 for submit the translation source code on WhatCanIDoForLibreOffice repository.

With this opportunity, I would like East Asian developers to collaborate on various developments and uses on LibreOffice.

Collaboration

  • Korean: 협업(協業)
  • Japanese: 協力, コラボレーション
  • Simplified Chinese: 合作/协作
  • Traditional Chinese: 協作/合作

우리말로 쓴 글

2020년 6월 17일 수요일.

일본의 문서재단(The Document Foundation)회원인 노가타 준(Jun Nogata, 野方純)님께서 페이스북의 "리브레오피스 (한국어)"채널에 글을 올리셨습니다.

안녕하새요. 질문이 있어요.

어떻게 이 repository로 commit할 수 있어요?
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

logerrit없어요. 모르겠어요~😭
이본어 번역을 commit하고 싶어요...😢
(여기서는 일본분의 글을 아래와 같이 어법에 맞게 고쳐보았습니다.)

안녕하세요. 질문이 있습니다.

어떻게 이 repository로 commit할 수 있어요?
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

저는 logerrit이 없어요. 모르겠어요~😭
일본어 번역을 commit하고 싶어요...😢

다음 링크는 노가타 준님이 올린 리브레오피스 한국어 채널의 글 입니다.

노가타 준님은 문서재단(TDF; The Document Foundation)의 Gerrit 소스코드 검토 시스템에서 관리하는 "What Can I Do For LibreOffice" 저장소에 일본어 번역을 추가하고 싶어하였습니다.

다음은 "What Can I Do For LibreOffice"저장소 링크입니다.
https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

 

https://gerrit.libreoffice.org/admin/repos/WhatCanIDoForLibreOffice

 

gerrit.libreoffice.org

다음은 "What Can I Do For LibreOffice" 홈페이지 링크입니다.
https://whatcanidoforlibreoffice.org/

 

What can I do for LibreOffice

LibreOffice Language: English ‪čeština | ‪Czech ‪Cymraeg | ‪Welsh Español | Spanish ‪Français | ‪French ‪Italiano | ‪Italian ‪한국어 | ‪Korean ‪Português do Brasil | ‪Brazilian Portuguese ‪Slovenščina | ‪Slovenian ‪S

whatcanidoforlibreoffice.org

저는 "What Can I Do For LibreOffice" 홈페이지에 한국어 번역을 하였습니다.

저는 "What Can I Do For LibreOffice"의 저장소에 한국어 번역을 추가한 기록을 다음과 같이 정리하였습니다.
(이 글을 참조로 하여 일본어[日本語], 중국어[번체繁體, 간체简体] 등등 동아시아 언어 사용사는 사람이 "What Can I Do For LibreOffice"의 저장소에 번역을 올릴 수 있습니다.)

맨 처음으로, LibreOffice의 gerrit 리뷰 시스템을 설정을 해야합니다.
상세한 내용은 다음의 링크 Setting yourself up for gerrit - the easy way에서 확인하시기 바랍니다.

그 다음, "WhatCanIDoForLibreOffice" 저장소에서 "What Can I Do For LibreOffice" 소스코드를 아래의 명령어로 받습니다.

git clone "https://git.libreoffice.org/WhatCanIDoForLibreOffice"

그리고, /locales/[your-language code].ini 파일을 추가 및 index.htmllocales.ini 파일을 수정합니다.

저는 한국인이며, 모국어가 한국어입니다. 그래서 한국어의 ISO언어 코드는 ko-KR입니다.
그래서 저는 ko-kr.ini파일을 추가했습니다.

(예를들어, 일본어를 사용하는 일본사람이라면, 일본어 언어 코드가 ja 이니 ja.ini파일을 추가하여 번역을 적용할 수 있습니다. 또한, 간체 중국어를 사용하는 사람이라면 간체 중국어에 해당하는 언어 코드가 zh-CN 이니 zh-cn.ini을 추가하여 번역을 적용할 수 있습니다. 그리고 번체 중국어 사용하는 사람이라면 번체 중국어에 해당하는 언어코드가 zh-TW 이니 zh-tw.ini파일 추가하여 번역을 적용할 수 있습니다.)

다음은 제가 커밋한 소스코드의 링크 Add Korean [ko-kr] translation 입니다.

 

Diff - f82b424ce060af3a0b10bf6456cbbb96b39cba96^! - WhatCanIDoForLibreOffice - Gitiles

commitf82b424ce060af3a0b10bf6456cbbb96b39cba96[log]

git.libreoffice.org

이후에 추가 및 수정한 소스코드 파일을 커밋합니다.

git commit -a

커밋 로그에 커밋에 해당하는 제목과 내용을 써야합니다. 커밋 로그를 쓴 후엔, 다음의 로그를 볼 수 있습니다.

[master f82b424] Add Korean [ko-kr] translation.
3 files changed, 58 insertions(+)

이제 커밋을 하였으면, logerrit 파일을 이용하여 문서재단(TDF)가 관리하는 Gerrit 코드 리뷰 시스템에 소스코드를 제출해봅시다.

다음은, 제가 "WhatCanIDoForLibreOffice" 저장소에 맞게 수정한 logerrit 파일을 gist저장소에서 다운로드 받는 명령어입니다.

% curl -LJO https://gist.githubusercontent.com/studioego/943695359245924f03268e3bd5fd62ca/raw/logerrit -o logerrit

그 다음, logerrit파일에 실행 권한을 추가합니다.

% chmod +x logerrit

(알림: 필수로 리브레오피스 Gerrit 리뷰시스템에서 SSH 키를 등록해야합니다.)

logerrit파일을 이용하여, 커밋한 소스코드를 제출합니다.

% ./logerrit submit master
Enter passphrase for key '/****/.ssh/id_rsa':
오브젝트 나열하는 중: 7, 완료.
오브젝트 개수 세는 중: 100% (7/7), 완료.
Delta compression using up to 4 threads
오브젝트 압축하는 중: 100% (4/4), 완료.
오브젝트 쓰는 중: 100% (4/4), 424 bytes | 424.00 KiB/s, 완료.
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3)
remote: Processing changes: refs: 1, done
remote: ERROR: commit f82b424: missing Change-Id in message footer
remote:
remote: Hint: to automatically insert a Change-Id, install the hook:
remote: gitdir=$(git rev-parse --git-dir); scp -p -P 29418 ****@gerrit.libreoffice.org:hooks/commit-msg ${gitdir}/hooks/
remote: and then amend the commit:
remote: git commit --amend --no-edit
remote: Finally, push your changes again
remote:
To ssh://logerrit/WhatCanIDoForLibreOffice
! [remote rejected] HEAD -> refs/for/master (commit 4a07bf2: missing Change-Id in message footer)
error: 레퍼런스를 'ssh://logerrit/WhatCanIDoForLibreOffice'에 푸시하는데 실패했습니다

아, Gerrit에서 사용하는 Change-ID를 커밋 메시지 하단에 없기때문에, 소스코드 커밋을 제출할 수 없습니다.

그래서 위의 메세지에서 안내되는 내용처럼 훅(hook)을 다음과 같이 설치합니다.

% gitdir=$(git rev-parse --git-dir); scp -p -P 29418 ****@gerrit.libreoffice.org:hooks/commit-msg ${gitdir}/hooks/
Enter passphrase for key '/****/.ssh/id_rsa':
commit-msg 100% 1791 5.3KB/s 00:00

그리고, 커밋로그에 Change-ID를 추가하도록 진행합니다.

git commit --amend --no-edit
[master f82b424] Add Korean [ko-kr] translation.
Date: Fri Jun 14 01:26:26 2019 +0900

커밋로그에 Change-ID를 추가된것을 알 수 있습니다.

마지막으로, 다시 logerrit으로 소스코드를 제출합니다.

% ./logerrit submit master
Enter passphrase for key '/********/.ssh/id_rsa':
오브젝트 나열하는 중: 7, 완료.
오브젝트 개수 세는 중: 100% (7/7), 완료.
Delta compression using up to 4 threads
오브젝트 압축하는 중: 100% (4/4), 완료.
오브젝트 쓰는 중: 100% (4/4), 468 bytes | 468.00 KiB/s, 완료.
Total 4 (delta 3), reused 0 (delta 0), pack-reused 0
remote: Resolving deltas: 100% (3/3)
remote: Processing changes: refs: 1, new: 1, done
remote:
remote: SUCCESS
remote:
remote: https://gerrit.libreoffice.org/.../WhatCanIDoForL.../+/73976 Add Korean [ko-kr] translation.
 [NEW]
remote:
To ssh://logerrit/WhatCanIDoForLibreOffice
* [new branch] HEAD -> refs/for/master

이제, Gerrit 리뷰 시스템에 제출하였습니다.

https://gerrit.libreoffice.org/c/WhatCanIDoForLibreOffice/+/73976
만약, 리브레오피스의 WhatCanIDoForLibreOffice 소스코드 리뷰어가 커밋를 허용하면, 소스코드가 적용됩니다.

마침내, WhatCanIDoForLibreOffice 저장소 커미터가 커밋을 확인한 후에, 커미터는 제출한 소스코드를 승인하였습니다.

Change has been successfully cherry-picked as f82b424ce060af3a0b10bf6456cbbb96b39cba96 by ***

이제 저장소에 제출한 번역 소스코드가 적용되었습니다.

다음은 제가 WhatCanIDoForLibreOffice 저장소에 제출한 번역 소스코드 리뷰 링크 https://gerrit.libreoffice.org/c/WhatCanIDoForLibreOffice/+/73976 와 커밋링크 Add Korean [ko-kr] translation 입니다.

이 글을 계기로, 여러가지 개발 및 사용관련으로 CJK 지역의 협업(協業), (Japanese: 協力, Simplified Chinese: 合作/协作, Traditional Chinese: 協作/合作, English: Collaboration)을 이루었으면 합니다. :)

Buy me a coffeeBuy me a coffee

+ Recent posts