git - 왜 로그오프해야 하나요?
某草草
某草草 2017-05-02 09:25:58
0
2
1650

많은 오픈 소스 프로젝트에 로그오프가 필요한 이유는 무엇입니까? 사용자 이름과 이메일 주소는 이미 Git에 구성되어 있습니다. 다시 서명한다는 것은 무엇을 의미합니까?

추가로 Sign Off 작업은 어떻게 수행하나요? 제출 설명 끝이나 Pull Request 중에 한 줄을 추가하는 것으로 충분합니까? 아니면 사용해야 하는 다른 방법이 있습니까?

某草草
某草草

모든 응답(2)
大家讲道理

먼저, 서명과 서명을 구별하세요. @nightfire가 서명을 설명했습니다. 사인오프의 의미를 설명(번역)하겠습니다.

'많은 오픈소스 프로젝트에 필요' 승인이 표시되지 않았습니다. 가장 유명한 것은 리눅스 커널이다. 문서에는 다음과 같이 나와 있습니다.

11) 작업에 서명하세요

누가 무엇을 했는지에 대한 추적을 개선하기 위해, 특히
여러 관리자 계층을 통해 커널의 최종 위치로 침투할 수 있는
패치의 경우
"로그오프" 절차를 도입했습니다.

이메일로 전송되는 패치입니다.

Linux 개발 과정에서 GitHub에서 만든 "풀 요청"을 사용하지 않고 (분산) 이메일을 통해 패치를 보내기 때문입니다(따라서 git은 이메일을 꽤 잘 지원합니다). 패치가 앞뒤로 전송될 때 이를 추적해야 합니다. 그렇지 않으면 BSD에서 경험한 것처럼 좋지 않고 개발에 영향을 미칠 것입니다. "Signed-off-by"는 실제로 귀하가 보내는 패치가 "개발자 원산지 증명서 1.1"의 사항을 준수함을 보증하는 진술입니다.

StackOverflow의 누군가는 이것이 몇몇 프로젝트의 요구 사항일 뿐이며 대부분의 프로젝트는 승인을 사용하지 않는다고 말했습니다.

PS: 커널 커밋을 보면 때로는 승인 목록이 긴 커밋을 볼 수 있습니다. 이 경우 어떻게 커미터 한 명과 작성자 한 명만으로 충분할 수 있나요?
PHPzhong

간단한 대답은 당신이 당신임을 증명하는 것입니다!

일반적으로 제출할 때 작성자와 커미터라는 두 가지 정보가 있으며 일반적으로 한 사람(개인 프로젝트, 공유 중앙 저장소)입니다.

Github 이전 시대(예를 들어 Linux Core의 공동 개발을 위해 Git이 처음 사용됨)에는 이제 모두에게 익숙한 풀 리퀘스트를 처리하기가 그리 간단하지 않습니다. 그 당시 패치는 분산 개발에 자주 사용되었습니다. 예를 들어 제출물(작성자 정보는 이때 생성됨)을 프로젝트 관리자/유지관리자에게 이메일 첨부 파일로 보낸 후 해당 관리자가 이를 중앙 라이브러리에 병합했습니다. (생성된 커미터 정보입니다)......

그러나 작성자나 커미터 모두 '사람'이 그 일을 한 실제 사람임을 본질적으로 증명할 수는 없습니다. 개발자의 이름과 이메일을 알기가 너무 쉽기 때문입니다. 이메일에 첨부하여 보낸 패치를 통해 작성자가 본인임을 증명할 수 있습니까? 이메일을 받고 이를 병합하는 사람이 커미터일 수 있습니까? (프로젝트에 여러 명의 관리자/유지관리자가 있다고 가정)

그래서 이것을 중요하게 생각하는 사람들은 Sign Off에 관해 질문하신 보안 서명을 위해 GPG 키를 사용하게 됩니다. 실제로는 많은 이메일 클라이언트에서도 이 디지털 서명을 사용합니다.

최대한 간단하고 명확하게 설명하려고 노력했지만 실제로는 여러분이 상상하는 것보다 더 자세한 내용이 있습니다. 관심이 있으시면 A Git Horror Story: Repository Integrity With Signed Commits를 읽어보세요. 기사 Sign Off와 관련된 모든 것에 대한 기사가 아직 끝나지 않았습니다.

또 한 가지 우려되는 점은 많은 프로젝트에 라이선스가 있다는 점이죠. 그러나 프로젝트에 타사 코드를 사용할 수 있으며 이러한 코드의 라이선스 정책이 이 프로젝트의 라이선스와 상호 배타적이거나 충돌할 수 있습니다. (당신이 요청한 대로) 오픈 소스 프로젝트라면 이 측면에 더 많은 관심을 기울일 것입니다(다른 사람들이 당신을 고소하기를 원합니까?). Git의 Sign Off라인까지 정확할 수 있으며, 이는 코드의 실제 소스를 확인하는 것입니다(신뢰성은 의심스럽더라도 없는 것보다는 낫습니다...). 이에 대해 자세히 설명하지는 않겠습니다. 단지 그것에 대해 조금 들었습니다.

서명을 사용하려면 가장 간단한 세 단계를 따라야 합니다(Mac 기준).

  1. gunpg 프로그램이 필요합니다. Mac에서는 homebrew를 사용하여 설치할 수 있습니다.

  2. GPG 키를 생성해야 합니다. 생성된 후의 과정은 다음과 같습니다.

  3. Git에 키 ID를 알려주어야 합니다(동시에 여러 개의 키를 가질 수 있기 때문입니다).

    으아아아

    자, 이제부터

    명령에 git commit(대문자 주의)를 추가하면 제출 시 디지털 서명이 자동으로 첨부되어 위조를 방지할 수 있습니다! -S


@Evian의 팁에 따르면 --sign-off--gpg-sign에는 차이가 있습니다. 관심이 있으시면 답변에서 댓글을 읽어보세요. 다음은 Google 검색 답변의 인용문입니다.

-s는 커밋에 "signed off by" 필드를 추가합니다. -S는 실제로 GPG가 git 1.7.9에 추가된 커밋에 서명합니다. 리베이스에서 새 커밋이 생성되면 대화형 리베이스를 수행하고 모든 변경 사항을 수동으로 커밋하지 않는 한 커밋이 승인되지 않습니다(또는 PGP 서명).

-S 두 가지를 동시에 수행할 수 있으므로 이전 답변에서 이 옵션을 권장합니다. 그래서 --sign-off는 그냥 서명이고 --gpg-sign는 GPG 키를 사용한 서명입니다.


알았어 또 틀렸어... -S 서명과 서명을 동시에 하려면 둘 다 사용해야 합니다.

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿