이것은 Ubuntu Online, Fedora Online, Windows 온라인 에뮬레이터 또는 MAC OS 온라인 에뮬레이터와 같은 여러 무료 온라인 워크스테이션 중 하나를 사용하여 OnWorks 무료 호스팅 제공업체에서 실행할 수 있는 git-receive-pack 명령입니다.
프로그램:
이름
git-receive-pack - 저장소에 푸시된 것을 수신합니다.
개요
자식 수신 팩
기술
호출자 자식 팩을 보내다 에서 공급된 정보로 저장소를 업데이트합니다.
원격 끝.
이 명령은 일반적으로 최종 사용자가 직접 호출하지 않습니다. 프로토콜의 UI는
를 시청하여 이에 대해 더 많은 정보를 얻을 수 있습니다. 자식 팩을 보내다 측면이며 프로그램 쌍은 업데이트를 푸시하는 데 사용됩니다.
원격 저장소. 끌어오기 작업은 다음을 참조하세요. 자식 가져오기 팩(1).
이 명령은 sha1 refs(heads/tags)의 생성 및 빨리 감기를 허용합니다.
원격 끝(엄밀히 말하면 로컬 끝 자식 수신 팩 실행되지만 사용자에게
send-pack 끝에 앉아 있는 사람은 리모컨을 업데이트하고 있습니다. 혼란스러운?)
업데이트 및 업데이트 후 후크를 사용하는 다른 실제 사례가 있습니다.
문서/하우투 디렉토리.
자식 수신 팩 수신 여부를 알려주는 receive.denyNonFastForwards 구성 옵션을 따릅니다.
ref에 대한 업데이트는 빨리 감기가 아닌 경우 거부되어야 합니다.
옵션
동기화할 저장소입니다.
미리 받기 후크
참조가 업데이트되기 전에 $GIT_DIR/hooks/pre-receive 파일이 존재하고 실행 가능한 경우
매개변수 없이 한 번 호출됩니다. 후크의 표준 입력은 한 줄입니다.
업데이트할 참조당:
sha1-old SP sha1-new SP 참조 이름 LF
refname 값은 $GIT_DIR에 상대적입니다. 예를 들어 마스터 헤드의 경우 이것은
"refs/heads/master". 각 refname 앞의 두 sha1 값은
업데이트 전후의 refname. 생성될 참조는 1{0}과 같은 sha40-old를 갖습니다.
삭제할 참조는 1{0}과 동일한 sha40-new를 가지며 그렇지 않으면 sha1-old 및
sha1-new는 저장소에서 유효한 개체여야 합니다.
서명된 푸시를 수락할 때( 자식 푸시(1)) 서명된 푸시 인증서는
blob 및 환경 변수 GIT_PUSH_CERT에서 개체 이름을 참조할 수 있습니다. 보다
예를 들어 사후 수신 후크에 대한 설명입니다. 또한 인증서는
GPG를 사용하여 확인하고 다음 환경 변수와 함께 결과를 내보냅니다.
GIT_PUSH_CERT_SIGNER
푸시에 서명한 키 소유자의 이름 및 이메일 주소
증명서.
GIT_PUSH_CERT_KEY
푸시 인증서에 서명한 키의 GPG 키 ID입니다.
GIT_PUSH_CERT_STATUS
와 동일한 니모닉을 사용하여 푸시 인증서의 GPG 검증 상태
%G에서 사용? git log 명령 패밀리의 형식(참조 자식 로그(삼)).
GIT_PUSH_CERT_NONCE
nonce 문자열 프로세스는 서명자에게 푸시 인증서를 포함하도록 요청했습니다. 만약에
이것은 푸시 인증서의 "nonce" 헤더에 기록된 값과 일치하지 않습니다.
인증서가 유효한 인증서임을 나타낼 수 있습니다.
별도의 "git push" 세션.
GIT_PUSH_CERT_NONCE_STATUS
원치 않는
"git push --signed"는 nonce를 보내도록 요청하지 않았을 때 nonce를 보냈습니다.
잃어버린
"git push --signed"는 nonce 헤더를 보내지 않았습니다.
BAD
"git push --signed"가 가짜 nonce를 보냈습니다.
OK
"git push --signed"는 보내달라고 요청한 nonce를 보냈습니다.
싸구려 기성복
"git push --signed"는 우리가 지금 보내도록 요청한 것과 다른 noon을 보냈지만
이전 세션에서. GIT_PUSH_CERT_NONCE_SLOP 환경 변수를 참조하십시오.
GIT_PUSH_CERT_NONCE_SLOP
"git push --signed"는 우리가 지금 보내도록 요청한 것과 다른 nonce를 보냈지만,
시작 시간이 다음과 몇 초만큼 다른 다른 세션
현재 세션. GIT_PUSH_CERT_NONCE_STATUS가 SLOP일 때만 의미가 있습니다. 또한 읽기
receive.certNonceSlop 변수 정보 자식 구성(1).
이 후크는 refname이 업데이트되기 전과 빠른 감기 검사가 수행되기 전에 호출됩니다.
수행.
사전 수신 후크가 XNUMX이 아닌 종료 상태로 종료되면 업데이트가 수행되지 않습니다.
업데이트, 사후 수신 및 사후 업데이트 후크도 호출되지 않습니다. 이것은 될 수있다
업데이트가 지원되지 않는 경우 신속하게 구제하는 데 유용합니다.
UPDATE 후크
각 참조가 업데이트되기 전에 $GIT_DIR/hooks/update 파일이 존재하고 실행 가능한 경우
세 개의 매개변수를 사용하여 ref당 한 번 호출됩니다.
$GIT_DIR/hooks/refname 업데이트 sha1-old sha1-new
refname 매개변수는 $GIT_DIR에 상대적입니다. 예를 들어 마스터 헤드의 경우 이것은
"심판/헤드/마스터". 두 개의 sha1 인수는 앞의 refname에 대한 객체 이름입니다.
그리고 업데이트 후. 후크는 refname이 업데이트되기 전에 호출되므로
sha1-old는 0{40}(아직 그런 참조가 없음을 의미)이거나 다음과 일치해야 합니다.
refname에 기록되었습니다.
명명된 참조 업데이트를 허용하지 않으려면 후크가 XNUMX이 아닌 상태로 종료되어야 합니다.
그렇지 않으면 XNUMX으로 종료해야 합니다.
이 후크의 성공적인 실행(XNUMX 종료 상태)은 ref가
실제로 업데이트된 것은 전제 조건일 뿐입니다. 따라서 보내는 것은 좋지 않습니다.
이 후크에서 알림(예: 이메일). 대신 수신 후 후크를 사용하는 것이 좋습니다.
사후 수신 후크
모든 ref가 업데이트된 후(또는 업데이트를 시도한 후), ref 업데이트가
성공하고 $GIT_DIR/hooks/post-receive 파일이 존재하고 실행 가능한 경우
매개변수 없이 한 번 호출됩니다. 후크의 표준 입력은 각각에 대해 한 줄입니다.
성공적으로 업데이트된 참조:
sha1-old SP sha1-new SP 참조 이름 LF
refname 값은 $GIT_DIR에 상대적입니다. 예를 들어 마스터 헤드의 경우 이것은
"refs/heads/master". 각 refname 앞의 두 sha1 값은
업데이트 전후의 refname. 생성된 참조는 sha1-old가 다음과 같습니다.
0{40}, 삭제된 참조는 1{0}과 동일한 sha40-new를 가지며 그렇지 않으면 sha1-old
sha1-new는 저장소에서 유효한 개체여야 합니다.
GIT_PUSH_CERT* 환경 변수는 pre-receive hook과 마찬가지로 검사할 수 있습니다.
서명된 푸시를 수락한 후.
이 후크를 사용하면 저장소에 대한 업데이트를 설명하는 메일을 쉽게 생성할 수 있습니다.
이 예제 스크립트는 ref당 하나의 메일 메시지를 보냅니다. 여기에는 푸시된 커밋이 나열됩니다.
저장소, 그리고 좋은 서명이 있는 서명된 푸시의 푸시 인증서를
로거 서비스:
#!/ 빈 / SH
# 커밋 업데이트 정보를 메일로 보냅니다.
타원형 nval 참조를 읽는 동안
do
if expr "$oval" : '0*$' >/dev/null
그때
echo "다음 커밋으로 새 참조를 만들었습니다."
git rev-list --예쁜 "$nval"
그렇지 않으면
echo "새 커밋:"
git rev-list --pretty "$nval" "^$oval"
파이 |
mail -s "ref $ref에 대한 변경 사항" commit-list@mydomain
한
# 서명된 푸시 인증서(있는 경우)를 기록합니다.
if test -n "${GIT_PUSH_CERT-}" && 테스트 ${GIT_PUSH_CERT_STATUS} = G
그때
(
에코 예상 nonce는 ${GIT_PUSH_NONCE}입니다.
자식 고양이 파일 blob ${GIT_PUSH_CERT}
) | mail -s "$GIT_PUSH_CERT_SIGNER에서 인증서 푸시" push-log@mydomain
fi
0 번 출구
이 후크 호출의 종료 코드는 무시되지만 XNUMX이 아닌 종료 코드는
오류 메시지를 생성합니다.
이 후크가 실행될 때 refname에 sha1-new가 없을 수 있습니다. 이것은 할 수 있습니다
다른 사용자가 참조를 업데이트한 후 수정하면 쉽게 발생합니다. 자식 수신 팩,
그러나 후크가 그것을 평가할 수 있기 전에. 후크는 sha1-new에 의존하는 것이 좋습니다.
refname의 현재 값이 아닌
업데이트 후 후크
다른 모든 처리 후에 적어도 하나의 ref가 업데이트되고
$GIT_DIR/hooks/post-update 파일이 존재하고 실행 가능하면 post-update가 호출됩니다.
업데이트된 심판 목록과 함께. 이것은 모든 저장소를 구현하는 데 사용할 수 있습니다.
광범위한 정리 작업.
이 후크 호출의 종료 코드는 무시됩니다. 유일하게 남은 것
자식 수신 팩 그 시점에서 하는 것은 어쨌든 스스로를 종료하는 것입니다.
예를 들어 이 후크는 저장소가 다음과 같은 경우 git update-server-info를 실행하는 데 사용할 수 있습니다.
포장되고 벙어리 운송을 통해 제공됩니다.
#!/ 빈 / SH
exec 자식 업데이트 서버 정보
onworks.net 서비스를 사용하여 git-receive-pack 온라인 사용