내 사무실 용으로 관리하는 GIT 저장소가 있습니다. 회사 정책으로 인해 GitHub와 같은 외부 호스팅 제공 업체는 사용할 수 없습니다. 그래서, 나는 우리의 로컬 네트워크로 할 수있는 일을하기 위해 남았습니다.GIT 원격 저장소 공유에 대한 파일 사용 권한 문제
누구나 자신의 로컬 리포지토리를 관리하지만, 우리는 또한 사용자가 푸시 할 때 (예 : 허드슨과 어안과 같은 애플리케이션에서 액세스 할 수있는) 원격 리포지토리를 중앙 리포가 전복에서 작동하는 것과 비슷하게 만듭니다. 각 사용자는 원격 저장소를 호스팅하는 상자에 대해 암호없는 인증을 수행 할 수 있도록 공개 키를 설정합니다.
우리의 원격 저장소에, 나는 그들이 구성된이 "그룹"모드에서 공유 할 수 있습니다 망할 놈 그룹의 구성원은 또한
git config core.sharedRepository group
모든 사용자,하지만 많은 기본 그룹 아니다 사용자의 git이 "푸시 (push)"에있는 객체를 생성하거나 업데이트 할 때 사용자의 기본 그룹을 사용하는 것으로 보입니다. 대신, 나는 각 사용자가 구성원 인 공통 "자식"그룹을 사용해야한다. 이전에 웹에서 끈적 끈적한 비트 설정에 대해 논의한 문서를 보았습니다.하지만 소스에 따라 달라진 것 같았으며 공통 그룹을 만드는 문제를 실제로 해결하지 못했습니다 (파일을 임의로 쓰기 가능하게 만드는 경우, 나는 그들을 777로 만들 수도있다).
업데이트 : 사용
매튜 Flaschen의 answer below
chgrp -R git repo.git
find repo.git -type d -exec chmod g+rws {} +
나는 모든 사람들이 밀어 함께에서 풀 수있는 저장소를 만들 수 있었다. 나는 또한 gitolite를 조사 할 것이지만 나의 요구는 아주 기본적이며 우리 환경은 사용자와 키를 자동으로 구성 할 수 있으므로 사용은 중요하지 않습니다. 그러나, 나는이 문제를 다루고 있는지 확인하고 싶습니다.
내 저장소 구조에는 최상위 디렉토리 (remote-repos)와 각 저장소 (app-1.git, app-2.git, library-1.git 등)에 대한 하위 디렉토리가 있습니다. 각 개별 repo 대신 최상위 디렉토리 (remote-repos)에 chmod g + rws {} +를 적용 할 수 있어야합니다. 맞습니까? 찾기 명령
find /opt/remote-repos -type d -exec ...
/opt/remote-repos 위치에있는 모든 디렉토리를 찾아 명령을 실행합니다. 명령 (chmod g + rws)은 그룹이 이러한 파일을 읽고 쓸 수 있도록하며, 고정 된 내기를 설정하여 실행시 지정된 그룹이 항상 사용되도록합니다. (나는 {} + 부분의 사용에 관해서는 단서가 없다. 나는 find exec 옵션과 관련 있다고 가정하고있다).
어쨌든이 솔루션에 대한 내 이해가 올바른지 확인하고 싶습니다.
더 많은 참조 : 위키 피 디아에서
- chmod는 위키 백과에서
- SetGID (또는 SETUID)는
- Git SharedRepository 옵션 토론
HTTP 기반 솔루션을 설정하고 서버 프로세스 만 중앙 저장소 파일에 쓰기 쉽습니다. – Thilo
[gitolite] (https://github.com/sitaramc/gitolite)를 시도해야합니다! – Simon
gitolite가 좋아 보이는 동안, 나는 이미 enviro에 구운 많은 기능 (ssh 액세스, 키 등)이 있습니다. 정말로 빠진 유일한 부분은 적절한 그룹 권한이었습니다. –