본문 바로가기

Git/Github

(Github) - DCO(Development Certificate of Origin)

반응형

🍳머리말

PR을 날리는 경우 DCO에 막혀 안되는 경우가 있습니다. 이건 무엇일까요?


📕DCO

📔 정의

개발자가 어떤 project에 기여했을 때 이를 보고 해당 변경사항에 동의하여 서명했음을 나타내는 것입니다.

📔 배경

 DCO를 표시한다는 것은 개발자가 기여한 code에 대한 책임이 있고 기여가 Apache 라이선스 조건에 따른다는 것을 이해함을 나타내기도 합니다. 이는 CLA와 동일한 목적입니다. github에서는 commit message에"Signed-off-by:" 를 포함함으로써 표시됩니다.

 

 Open source Project에서 여러 개발자가 특정 code를 토론 같은 방식을 통해 공동으로 작성하거나 code를 짜지는 않았지만 기여에 도움을 준 타 개발자도 자신의 증명을 추가함으로써 성과를 나타내는 경우가 있습니다. 때문에 기여의 commit message에 DCO에 동의처리해 나타냅니다.

 

규모있는 project의 git log를 보면 이런 message들을 자주 볼 수 있습니다.

 Author: Nathen Harvey <nharvey@chef.io>

 Committer: Adam Jacob <adam@chef.io>

   Sprinkle extra delight on our DSL

   Due to an oversight, we were only 96% delightful. Ensure the 
   delight now goes to 11.

   Signed-off-by: Nathen Harvey <nharvey@chef.io>
   Signed-off-by: Julia Cook <julia@ourcompany.com>
   Signed-off-by: Adam Jacob <adam@chef.io>

Author는 원래 code를 작성한 사람입니다. Committer는 원작자를 대신해 commit을 한 사람으로 간주됩니다. message내용 하단에 Signed-off-by가 되어 있는 것을 볼 수 있습니다. 이 부분이 DCO에 동의를 했고 해당 commit에 기여한 개발자를 의미합니다. 

 📑 관련 link

https://developercertificate.org/

 

Developer Certificate of Origin

 

developercertificate.org

📔 예시

제 경우는 구멍가게 project에서 진행했던 경험이 있기에 본인이 DCO에 동의해 commit을 작성하게 되었습니다. staged된 file에 대해 git commit -s 명령어를 사용하면 특정 형식을 가진 file이 생성되며 자동 Signed-off-by문이 추가되게 됩니다.

해당 file 최상단에 message를 적고 file 쓰기를 진행 후 git log를 출력해보면 다음 처럼 나타나게 됩니다.


📕참조

https://www.chef.io/blog/introducing-developer-certificate-of-origin

 

Introducing Developer Certificate of Origin - Chef Blog | Chef

Effective October 3, 2016, Chef is adopting the developer certificate of origin ("DCO") used by several other projects and overall smart people

www.chef.io


*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.

'Git > Github' 카테고리의 다른 글

Apache-2.0  (0) 2023.03.25
코드 리뷰 피라미드  (0) 2022.05.26
(Github) - 내가 속한 organization 노출하기  (0) 2022.01.11
Github - 꾸미기(WakaTime)  (2) 2021.08.17
(Github) - git commit log 조작하기  (0) 2021.06.14