그래서 누군가 동료가 내 작업을 검토했으며 커밋과 태그에 항상 암호로 서명해야한다고 말했습니다. 이유를 물었을 때, 그는 나에게 그것을 설명 할 줄 몰랐고 "그냥 좋은 일이다"고 말했다.
명백한 침팬지 시나리오 를 피하려고 노력하는 이유는 무엇입니까? 실제로 많은 장점과 단점이 있습니까?
내가하는 모든 커밋과 태그에 서명하고 싶은 실질적인 이유는 무엇입니까?
그래서 누군가 동료가 내 작업을 검토했으며 커밋과 태그에 항상 암호로 서명해야한다고 말했습니다. 이유를 물었을 때, 그는 나에게 그것을 설명 할 줄 몰랐고 "그냥 좋은 일이다"고 말했다.
명백한 침팬지 시나리오 를 피하려고 노력하는 이유는 무엇입니까? 실제로 많은 장점과 단점이 있습니까?
내가하는 모든 커밋과 태그에 서명하고 싶은 실질적인 이유는 무엇입니까?
답변:
(이것은 주로 Git Horror Story : 서명 된 커밋을 통한 리포지토리 무결성 (Repository Integrity with Signed Commits)을 기반 으로합니다.
git 저장소가 손상 될 수있는 여러 가지 방법이 있습니다 (이는 보안 결함이 아니며 삶의 사실입니다.이 때문에 git을 사용하지 않아야합니다). 예를 들어, 누군가가 귀하라고 주장하는 저장소로 푸시했을 수 있습니다. 또는 그 문제에 대해 누군가 누군가가 귀하라고 주장 하는 다른 사람의 저장소로 푸시했을 수 있습니다 (누군가도 귀하라고 주장하는 자신의 저장소로 푸시 할 수 있음). 이것은 DVCS에서 삶의 일부일뿐입니다.
예를 들어 :
$ git config --global user.name 'Madara Uchiha'
$ git config --global user.email muchiha@example.com
거기에서 git 구성을 변경했습니다. 이제 커밋 할 수 있고 커밋이 어떻게 든 프로덕션 빌드로 나아갈 수있게 해주었습니다.
커밋 (및 태그)에 서명하면 특정 커밋 및 태그가 사용자로부터 온 것임을 증명할 수 있습니다 (서명되지 않은 것은 프로덕션 빌드로 만들지 않아야 함). 그것은 커밋에 서명함으로써 그것이 당신의 일이라고 말했습니다.
"귀하의 작업"측면은 저작권 소송에 종종 노출되는 Linux 커널 (및 git)에서 특히 중요합니다. 커밋에 서명하면 소프트웨어에 대한 권리가 있음을 알 수 있으며 원본을 추적합니다. 저작권으로 주장되는 소스에 액세스 할 수없고 소유권 주장이 근거가 없을 수 있습니다. 회사는 몇 년 전에 당신을 위해 일하고 있다는 것을 잊어 버렸을 수 있으며 그들의 지시 에 따라 커널에 자료를 추가하는 등의 일이 있습니다.
모든 커밋에 서명해야하는지에 대한 논쟁이 있습니다. 에서 GPG 서명 자식 커밋? Linus는 다음과 같이 썼다.
각 커밋에 서명하는 것은 완전히 어리 석습니다. 그것은 당신이 그것을 자동화한다는 것을 의미하며, 서명을 덜 가치있게 만듭니다. SHA1의 git DAG-chain이 작동하는 방식으로, 그 중 하나에서 도달 가능한 모든 커밋을 효과적으로 적용 할 수 있도록 하나의 서명 만 있으면됩니다. 따라서 각 커밋에 서명하는 것은 요점이 없습니다.
git 로그인에 대한 생각에 대해 더 많이 읽을 수 있습니다.
그것은 어쨌든 git으로 향했다.
서명 커밋이 불필요하다는 데는 대부분의 합의가있는 것으로 보이지만 서명 태그는 매우 좋습니다. 상단에 링크 된 블로그 게시물은 어쨌든 모든 것에 서명해야한다고 제안합니다. 내가 말했듯이, 모든 커밋이 필요한지 아닌지에 대한 논쟁이 있습니다.
"모든 커밋 서명"토론의 핵심은 아마도 사용하는 워크 플로우와 관련이있을 것입니다. 대부분의 사람들은 지역 저장소에서 많은 커밋을 한 다음 그 세트를 밀어 넣습니다. 최종 컬렉션에 태그를 지정하기에 충분해야합니다 (즉, 모든 변경 사항이 올바른지 가정). 많은 단일 커밋이 이동하는 환경에서 작업하는 경우 태그와 커밋의 구별이 덜 명확 해지며 커밋에 서명하는 것이 더 유용 할 수 있습니다.
commit.gpgsign = true
있으며 단점을 확인할 수 없습니다. 어리석은 일이지만 너무 비싸지는 않은 것 같습니다.