문제
푸시는 userID를 분기가 아닌 인수로만 인식 할 수 있기 때문에 GIT 업데이트 후크에 잠금 스크립트를 사용하여 파일을 푸시하는 사용자로부터 저장소를 잠그는 아이디어가 있습니다. 그래서 디렉토리를 잠그는 전체 repo를 잠글 수 있습니다.
GIT에서 특정 지점을 잠그는 방법이 있습니까?
또는 업데이트 후크가 사용자가 푸시하는 지점과 코드가 푸시되는 지점을 식별 할 수있는 방법이 있습니까?
해결책
푸시되는 분기는 첫 번째 매개 변수입니다. 업데이트 후크. 지점을 잠그고 싶다면 myfeature
푸시를 위해이 코드 (배치 hooks/update
) 할 것입니다 :
#!/bin/sh
# lock the myfeature branch for pushing
refname="$1"
if [[ $refname == "refs/heads/myfeature" ]]
then
echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
echo "You cannot push to myfeature! It's locked"
echo "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
exit 1
fi
exit 0
다른 팁
문서의 업데이트 후크 :
후크는 각 심판이 업데이트되도록 한 번 실행하고 세 가지 매개 변수를 가져옵니다.
- REF의 이름이 업데이트되고 있습니다.
- Ref에 저장된 오래된 개체 이름,
- 그리고 새로운 개체 이름은 Ref.
그렇습니다. 그렇습니다. 분기가 무엇을 밀고 있는지 정확히 알고 있으며, 분기가 밀려 나가는 것을 원하지 않으면 해당 매개 변수와 종료 실패를 단순히 확인할 수 있습니다.
그리고 당신이 (지능적으로) 이것을하고 싶다면 ~ 전에 사용자는 객체를 업로드했으며, 사전 수신 후크를 사용할 수 있습니다.
이 후크는 수신 작업을 위해 한 번 실행됩니다. 인수는 필요하지 않지만 각 심판이 업데이트되면 표준 입력에 수신됩니다.
<old-value>
sp<new-value>
sp<ref-name>
LF어디
<old-value>
기존 객체 이름은 Ref에 저장되어 있습니다.<new-value>
새 개체 이름은 Ref에 저장되어 있고<ref-name>
심판의 성명입니다.
(공간과 선 피드)
Gitolite와 같은 도구에는 다음과 같은 기능이 있습니다. http://github.com/sitaramc/gitolite