2012-10-14 6 views
2

내 로컬 컴퓨터에서 수행중인 작업에 대해 내 로컬 컴퓨터에 힘내 저장소를 설정하려고합니다. 원격 개체가 없습니다.우분투에서 로컬 자식 저장소 설정하기

원격 Repos를 여러 번 설정했지만 로컬로 가져가는 단계가 항상 오류로 끝나는 것 같습니다. 내 모든 자식 REPOS (나는 수십있을 것으로 예상) 관리 할 수있는 자식 사용자를 만들었습니다 /home/rico/project/home/git/project_repo

:

나는이 디렉토리가 있습니다. 나는 다음과 같은 명령을 수행 rico 사용자로 /home/rico/project에서

다음 git 사용자로 /home/git/project_repo에서

[email protected]:~/project$ git init 
Initialized empty Git repository in /home/rico/project/.git/ 

을 나는 다음을 수행하십시오

[email protected]:~/project_repo$ git --bare init 
Initialized empty Git repository in /home/git/project_repo 

지금 나는 내 프로젝트로 돌아가서 추가 파일. 23 files changed, 989 insertions(+)

지금, 나는 project_repo 폴더에이 밀어 싶어 -이 시점에서

[email protected]:~/project$ git status 
# On branch master 
# 
# Initial commit 
# 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  .project 
#  .pydevproject 
#  inc/ 
#  manage.py 
#  rocksolidbox/ 
#  rsb/ 
#  templates/ 
[email protected]:~/project$ git add inc media rocksolidbox/ rsb/ templates/ 
[email protected]:~/project$ git commit -a -m "Initialize the project." 

나는 정상적인 커밋 메시지가 표시됩니다.

[email protected]:~/project$ git remote add origin /home/git/rocksolidbox/ 
[email protected]:~/project$ git push -u /home/git/rocksolidbox/ master 

그러나 다음과 같은 오류가 나타납니다

Counting objects: 31, done. 
Delta compression using up to 4 threads. 
Compressing objects: 100% (26/26), done. 
error: insufficient permission for adding an object to repository database ./objects 

fatal: failed to write object 
Writing objects: 100% (31/31), 12.24 KiB, done. 
Total 31 (delta 2), reused 0 (delta 0) 
error: unpack failed: unpack-objects abnormal exit 
To /home/git/project_repo/ 
! [remote rejected] master -> master (n/a (unpacker error)) 
error: failed to push some refs to '/home/git/project_repo/' 

는 분명히 이것은 권한 오류입니다. 내 로컬 IP를 사용

[email protected]:~/project$ git push -u [email protected]:/home/git/rocksolidbox/ master 

심지어 : 나는 같은 푸시을 시도한

[email protected]:~/project$ git push -u [email protected]:/home/git/rocksolidbox/ master 

그것은 내가 제대로 공급하고있어 알고있는 암호를 요구 내가 지속적으로 얻을 수 메시지 Permission denied, please try again.

단지 내 project을 내 project_repo으로 푸시하고 싶습니다. 이 설정에서 내가 뭘 잘못하고 있니?

답변

0

좋아요, 사용 권한 문제를 해결할 방법을 찾았습니다.

[email protected]:~/$ chmod -R 777 project_repo 

가 그럼 난 내 project 다음과 같은 명령을 수행 할 수 있습니다 :

[email protected]:~/some_other_location$ git clone /home/git/project_repo 

그리고 당신은 황금 위치 :

[email protected]:~/project$ git remote add origin /home/git/project_repo/ 
[email protected]:~/project$ git push -u /home/git/project_repo/ master 

그럼 간단하게 할 다른 프로젝트를 복제하는 데 기본적으로이 작업을 수행 .

지금, 내 질문은 남아 있습니다 ...이 권한 문제를 처리하는 가장 좋은 방법은 무엇입니까? 나는 아무에게도 777을주는 아이디어를 정말로 좋아하지 않습니다. 같은 그룹에 gitrico을 넣고 775을 대신 써야하나요?

제안 사항?

EDIT1 : 이 같은 그룹에 gitrico 퍼팅과 775 도움이되지 않았다 일. 그것은 777와 함께 잘 작동하지만이 솔루션을 좋아하지 않습니다.

+0

당신은 다른 사람이 당신의 repo에 밀어 기대하고 있습니까? 그렇지 않다면, 다른 사용자가 베어 리포를 만들지 않아도됩니다. 일반적으로 여러분이 한 패턴 (자신의 사용자와'git' 사용자를 가짐)은 다른 사람들이 자신의 개인 계정에 접근하는 것을 원하지 않는 팀 환경에 사용됩니다. 'rico'는 non-bare repo에 대해서만 명령을 내리고'git' 명령은 bare repo에서만 명령을 내야합니다. 그렇지 않으면 push 또는 pull을 할 때 파일 권한 _will_가 변경됩니다. –

+0

나는 팀과 함께 일할 것이다. 그렇다면'rico @ verbal : ~/project'에서 베어 레포에 '777'을 갖지 않고 베어 레포로 어떻게 밀어 넣을 수 있을까요? – Rico

1

멋진 사용 권한을 가진 발놀이를하지 마십시오. gitolite을 원합니다.

+0

그 문서는별로 좋지 않습니다. '** NOTE ** : 암호를 묻는다면, 뭔가 잘못되었습니다. 'Ok ... 그래서 무엇이 잘못 됐고 어떻게 수정합니까? 나는 지금까지 감명주지 않았다. – Rico

+0

@Rico http://git-scm.com/book/en/Git-on-the-Server-Gitolite의 지침을 따르십시오. – echristopherson

+0

@echristopherson 죄송합니다. 그러나 그러한 지시 사항조차도 매우 열악합니다. 나는'installation' 섹션에서 명령을 지나칠조차 수 없습니다. '이것은 설치 스크립트에서 필수적이므로 암호 프롬프트를 표시하지 않고 명령을 실행할 수 있는지 확인하십시오. – Rico

0

나는 같은 지점에서 붙어있어. "뭔가 잘못 됐어."지금까지별로 유익하지 못하다. 수십개의 "it 's a cake of cake"라는 제목의 하우투를 비교해 본 결과 주요 문제점을 파악했습니다. 대부분의 예제에는 동일한 호스트에 클라이언트와 서버가 있습니다. 그건 내가 원하는 것이 아니에요. ~/.ssh/config 파일을 편집 한 후 아래처럼 보이는 것은 매력처럼 작동했습니다. 서버 호스트가 gitolite로 알려진이 예를 들어

, 서버에 gitolite를 설치하기위한 특별 계정은 자식, HARRIE라는 클라이언트의 사용자 및/가정/HARRIE의 키 쌍이라고합니다 /.ssh는 "ssh-keygen-t rsa -f harrie"에 의해 생성되었습니다.

~/스푸핑/설정

Host gitolite 
     User git 
     Hostname gitolite 
     Port 22 
     IdentityFile ~/.ssh/harrie