문제

소프트웨어 개발을위한 신뢰할 수있는 경로를 구축하고 싶습니다. 즉, 코드로의 모든 변경 사항은 수락되기 전에 저자와 한 명의 검토자가 서명해야합니다. 변경에 대한 이러한 서명은 릴리스 시간에 검증 할 수 있어야합니다. 또는 저장소가 변조되지 않았거나 추가 변경이 추가 될 수없는 다른 방법이 있어야합니다.

이것에 사용하기를 기대하는 버전 제어 시스템은 GIT이지만 다른 옵션도 허용됩니다. 서명은 GNUPG 또는 SSL 인증서를 통해 이루어질 수 있습니다.

내가 생각하는 워크 플로는 대략적으로 다음과 같습니다.

  1. 현재 검증 된 트렁크가 분기되었습니다
  2. 하나 이상의 개발자가 지점에서 변경됩니다.
  3. 한 명 이상의 개발자가 지점의 변경 사항에 서명합니다.
  4. 검토자가 변경 사항을 검토하고 테스트합니다
  5. 리뷰어는 지점의 변경 사항에 서명합니다
  6. 분기는 현재 검증 된 트렁크에 "병합"됩니다.

무관심한 변경 사항은 트렁크에 대해 추적 할 수없는 것과 같이 완벽하지 않아도됩니다. 릴리스 전에는 트렁크에 검토되지 않은 (서명되지 않은) 변경 사항이 있는지 확인하는 방법이 필요합니다. 일반적으로 변조는 방지 할 필요가 없으며 검출됩니다.

이를 설정하는 방법과 각 작업이 수행되는 방법에 대한 짧은 가이드를 원합니다. 포인터를 얻으면 직접 구체적인 내용을 알아낼 수 있습니다.

또한 이미 'git tag -s'에 대해 기술적으로 알고 있지만이 특정 문제에 어떻게 적용하는지 잘 모르겠습니다.

도움이 되었습니까?

해결책

태그가 될 때까지 변경 사항이 서명되지 않습니다. 그 지점 이전의 모든 것은 저자 또는 다른 대역 외 메커니즘으로 확인할 수 있지만 GIT 내에서 확인할 수는 없습니다.

GIT는 변경의 유산이 정확한지 확인할 수 있지만 서명 된 태그 만 변경 자체가 올바른지 확인할 수 있습니다.

워크 플로우의 경우 자신이 많이 태그를 붙일 수 있습니다.

다른 팁

태그의 -s 옵션으로 GPG 키로 태그에 서명 할 수 있습니다. git tag -s v0.1.0:

-에스

   Make a GPG-signed tag, using the default e-mail address's key

그러나 당신은 커밋에 서명 할 수 없습니다.

git은 다음 이후 좋은 후보입니다.

  • 각 커밋은 이미 서명되었습니다
  • 각 커밋에 대한 SHA1 키는 모두 Repo가 수정되지 않았습니다
  • git 태그 -S는 누군가가하지 않은 커밋에 서명하는 데 사용될 수 있습니다.git tag -m 더 명확합니다)

그래서:

  1. 현재 검증 된 트렁크가 분기되었습니다
    git checkout -b tag_for_last_verified_trunk_content test # branch test
  2. 하나 이상의 개발자가 지점에서 변경됩니다.
    [work...] git commit -s -m "dev1 comment" ...
  3. 한 명 이상의 개발자가 지점의 변경 사항에 서명합니다.

    커밋 메시지 끝에 서명 한 줄을 추가하여 이미 커밋으로 완료되었습니다.:이 페이지를 참조하십시오 사인 오프에 대한 설명 프로세스.

    Signed-off-by: user name 
  4. 검토자가 변경 사항을 검토하고 테스트합니다

     git tag -m "testing" testing # refer to current commit, 
                                    allowing dev to go on with further changes
  5. 리뷰어는 지점의 변경 사항에 서명합니다
    git tag -m "tested" tested testing # put a tag on the same SHA1 than 
                                         the "testing" tag
  6. 분기는 현재 검증 된 트렁크에 "병합"됩니다.
    git checkout trunk & git merge tested

Cyryl Plotnicki-Chudyk 언급 의견에서 GIT 1.7.9 (이 답변 후 거의 2 년 후 2012 년 1 월) 이후로 원하는 커밋을 사용하여 GPG를 신호 할 수 있습니다. git commit -S.
(보다 BA3C69A9를 커밋하십시오, 더 최근에 개선되었습니다 DF45CB3을 커밋하십시오)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top