2014-04-07 2 views
1

특정 사용자가 액세스 할 수있는 Google 서버 중 하나에 git 리포지토리를 설정하고 싶습니다. 우리는 Stash를 out git host로 사용하고 Stash 키를 가진 사용자 만 밀어 낼 수 있습니다. 상자에있는 모든 사용자가 액세스 할 수있는 위치 (/ data/repo)에 로컬 코드를 만들고 권한이 부여 된 사용자가 변경하여 자신을 숨김으로 푸시 (서비스 계정이 아님) 할 수있게하고 싶습니다. 공용 repo에서 사용자 별 git 설정을 사용하려면 어떻게해야합니까?여러 사용자가 git repo를 사용하도록 설정하려면 어떻게해야합니까?

+0

여기 개발자를 숨겨 둡니다. 처음에 왜 그렇게하고 싶어하는지 궁금합니다. Git의 전체적인 요점은 분산되어 있고, 각 개발자가 독립적으로 자신의 컴퓨터에서 실행할 수 있다는 것입니다. 동시에/data/repo에서 동시에 작업하는 여러 개발자를 어떻게 처리합니까? – charleso

답변

1

git repo의 코드가 Chef 서버에 업로드되므로이 설정을 사용하고 있습니다. 이 공유 된 repo는 우리 작전 담당자가 git repo의 마스터 지점에서 자료를 가져와 요리사 서버에 업로드하는 데 사용됩니다. 그들은 한 ops 사용자가 파일을 변경하고 그것을 git에 맡기지 않고 요리사에게 업로드하는 경우에 대해 우려했습니다. 다른 사용자가 마스터와 업로드를 요리사에게 가져 오면 변경 사항이 손실 될 수 있습니다 (요리사 서버는 충돌을 전혀 처리하지 않습니다). 이를 피하기 위해, 그들은 모두 동일한 디렉토리에서 작업 할 것이므로, 변경된 사항은이 경우 git에 의해 충돌로 표시됩니다.

어떻게 처리했는지 알아 보았습니다.

리포 설정 :

<git clone command, creates folder 'repo'> 
chmod -R g+rw repo 
chmod g+s `find repo -type d 
cd repo 
git config core.sharedRepository true 

이 설정은 공유로 REPO, 사용자의 그룹에 속하는으로의 repo에서 만든 새로운 설정 아무것도 표시합니다.

사용자 설정 :

cd ~ 
git config --global user.name <name> 
git config --global user.email <email> 

--global 플래그가 ~/.gitconfig 만듭니다. 여러 사용자가 공유 저장소에서 작업 할 수 있으며 모든 git 명령이이 파일을 참조합니다. 나는 2 명의 사용자와 이것을 테스트했습니다. 수정 된 내용은 모두에게 표시됩니다. 커밋은 각 사용자가 서명 할 수 있으며 누군가가 을 푸시하면 모두 커밋 된 변경 사항이 작성자 정보와 함께 그대로 푸시됩니다.

관련 문제