gitosis 관리git

3806 단어
Git는 매우 유명한 분포식 버전 제어 시스템이다.
Gitosis는 Git와 ssh를 통해 중앙 서버를 쉽게 설치할 수 있는 소프트웨어다.이 문장
의 설치 절차는 매우 명확하게 썼지만 사용 중에 약간의 문제에 부딪혔기 때문에 본고는 이 절차의 보충이라고 할 수 있다.만약 Gitosis를 통해 서버를 가설하려고 한다면 본문을 통해 많은 시행착오를 줄일 수 있을 것이다.

1. 설치 절차


1.python setuptools 다운로드 및 설치


sudo apt-get install python-setuptools

2.gitosis 다운로드 및 설치


cd ~/src
git clone git://eagain.net/gitosis.git
cd gitosis
python setup.py install

3. 사용자git 추가

sudo adduser \
    --system \
    --shell /bin/sh \
    --gecos 'git version control' \
    --group \
    --disabled-password \
    --home /home/git \
    git

4. 기본 키 생성


만약 ~/.ssh/id_rsa.pub 이 단계를 생략합니다.
ssh-keygen -t rsa

5. 서버 임시 디렉터리에 키 업로드


scp ~/.ssh/id_rsa.pub 사용자 이름@ 호스트:/tmp

6. 초사화gitosis


서버로 돌아가기
sudo -H -u git gitosis-init

7. post-update 권한 수정


sudo chmod 755/home/git/repositories/gitosis-admin.git/hooks/post-update

8. clonegitosis 관리 플랫폼


git clone git@ 호스트 이름:gitosis-admin.git
cd gitosis-admin

9. 설치 완료


gitosis-admin 수정을 통해 gitosis 사용자 권한 관리
키디르에 공밀 추가, 사용자 추가
수정이 끝난 후commit,push는 중 서버에 가서 창고 권한에 대한 작업을 완성할 수 있습니다.

2. 실례


목표: 사용자john과 창고foo를gitosis에 추가하고 관리자miao와 합작 관리

1. 사용자 john id_ 추가 및 보내기rsa.pub

john:~$ ssh-keygen -t rsaGenerating public/private rsa key pair.
Enter file in which to save the key (/home/john/.ssh/id_rsa):
 
Created directory '/home/john/.ssh'.
Enter passphrase (empty for no passphrase):
 
Enter same passphrase again:
 
Your identification has been saved in/home/john/.ssh/id_rsa.
Your public key has been saved in/home/john/.ssh/id_rsa.pub.
john:~$ cp/home/john/.ssh/id_rsa.pub/tmp

2.gitosis 관리자miao가 john 권한을 할당

miao:~$ cd ~/projectsgit clone [email protected]:gitosis-admincd gitosis-admincat gitosis.conf
[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = miao@u32-192-168-1-110

ls keydir/[email protected]
cp/tmp/id_rsa.pub keydir/john.pubvi gitosis.conf
[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = miao@u32-192-168-1-110

[group foo]
writable = foo
members = miao@u32-192-168-1-110 john

git add .git commit -am "add member john and project foo"git push

3. 사용자 miao 항목 추가 foo

miao:~$ cd ~/projectsmkdir foocd foogit inittouch hello.txtgit add hello.txtgit commit -am 'first commit'git remote add origin [email protected]:foo.gitgit push origin master

4. 사용자 john clone Foo 및 hello를 수정합니다.txt

john:~$ git clone [email protected]:foo.gitcd foolsdate > hello.txtgit commit -am 'add time to hello.txt' && git push

5. 사용자 miao pull Foo

miao:~/projects/foo$ vi .git/config
[core]
	repositoryformatversion = 0
	filemode = true
	bare = false
	logallrefupdates = true
[remote "origin"]
	url = [email protected]:foo.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master

git pull

3. FAQ


우선/home/git/repositories/gitosis-admin을 확정합니다.git/hooks/post-update는 실행 가능한 속성입니다.

1.git 작업은 비밀번호를 입력해야 한다

원인 공밀을 찾지 못했습니다.
업로드 해결 id_pub.rsa에서 keydir로'gitosis 계정으로 변경합니다.pub'형식, 예를 들어miao.pub.확장자pub 생략불가

2. ERROR:gitosis.serve.main:Repository read access denied

원인gitosis.conf의members와keydir의 사용자 이름이 일치하지 않습니다. 예를 들어gitosis의members=foo@bar하지만 키디르의 공밀명은foo라고 합니다.pub
키디르의 이름이gitosis에서members가 가리키는 이름과 일치하도록 해결합니다.
members = foo 또는 공밀 이름으로 변경[email protected]

좋은 웹페이지 즐겨찾기