2013-11-28 3 views
2

가 나는 REPO 만든 기본 REPO과 함께 복제되지 않습니다 : 그런 다음 서브 모듈을 생성자식 서브 모듈의 내용이

cd /home/myuser/public_html 
git init 
git remote add origin /usr/local/gitroot/myrepo.git 
git commit --allow-empty -m "Initial commit" 

, 같은 서버에 다음

git init --bare myrepo.git 

을 생산하기위한 REPO을 만들어

cd subdirectory 
git init 
git add . 
git commit -m "Initial submodule commit" 
cd .. 
git submodule add /home/myuser/public_html/subdirectory subdirectory 
git add . 
git commit -m "Initial commit of base files and submodule" 
git push origin master 

내 로컬 컴퓨터에서

git clone --recursive ssh://[email protected]/path/to/git mygitdirectory 

그리고 깨끗한 클론처럼 보이는 있었는지의 꼬리 끝에, 나는 자식 서브 모듈 추가 및 하위 디렉토리에 자식 서브 모듈 업데이트가 같은 결과를 얻을 수 있습니다 시도

fatal: repository '/home/myuser/public_html/subdirectory' does not exist 
Clone of '/home/myuser/public_html/subdirectory' into submodule path 'subdirectory' failed 

얻을. 나는 모든 기본 파일들로 끝났지 만, 서브 디렉토리는 비어있다. 서버에서 git log는 기본 파일 + 서브 모듈의 커밋을 표시하고 기본 및 서브 모듈의 git status는 깨끗함을 보여줍니다.

난 도망 모든 것을 날려 다시에 서브 모듈 생성을 변경 시도

포스트 스크립트 : 복제에를 수행 할 때

[submodule "subdirectory"] 
path = subdirectory 
url = ./subdirectory 

의 서버에 .gitmodules을 산출

git submodule add ./subdirectory ./subdirectory 

로컬 컴퓨터에서 서브 모듈 부분에 도착했을 때 동일한 오류가 발생했습니다. 그래서,에 .gitmodules 변경 (다음 자식 서브 모듈의 동기화를했다) :

[submodule "subdirectory"] 
path = subdirectory 
url = ssh://[email protected]/path/to/git 

독서 (많은) 다른 워크 플로우 제안, 내가 찾을 자신을 확신 (a)는 각 .gitmodules의 내용이 있어야 할 것 (나는 서버 하나가 맞다고 가정한다.) (b) 서버상의 슈퍼 repo가 ​​푸시 된 원격 베어 레포가 유일한 베어 레포 일지 아니면 서브 모듈이 하나의 서브 마운트를 필요로하는지 (나는 서브 모듈이 super repo를 맨발의 repo (origin)로 푸시하는 슈퍼 레포는 서브 모듈 히스토리도 가져옵니다.) (c) 로컬 서브 모듈에 원격 정의가 필요한지 (서버에 표시되지 않았기 때문에 너무 국지적이지 않았다)

답변

2

Yo ur local git은 원래 복제 한 원격 URL을 사용하여 하위 모듈을 복제하려고합니다.이 URL은 서버의 로컬 경로이며 로컬 시스템에는 존재하지 않습니다.

대신 SSH를 통해 하위 모듈을 복제하면 원격 URL이 서버와 로컬 시스템에서 모두 작동합니다.

+0

어떻게하면됩니까? .gitmodules 파일의 url을 repo url과 submodule의 상대 경로로 변경해 보았습니다. 그런 다음 repo url로 시도해 보았습니다. 둘 다 실패했습니다. git submodule 업데이트가 초기에 파일을 가져 오는 것뿐만 아니라 동기화 진행 상태를 계속 유지할 수 있도록하려면 필요합니까? – Ayen

+0

.gitmodules의 하위 모듈에 대한 url을 ssh url로 변경했으며 git 하위 모듈을 동기화했습니다. 이제 gitmodule 업데이트를 수행 할 때 repo가 ​​없다는 오류 대신 치명적인 오류가 발생합니다. 참조는 트리가 아닙니다. – Ayen

+0

이 특정 오류가 발생하지 않았지만 가져올 때 복제하려고 시도합니다. 몇 시간 후에 집에 돌아온다. –

관련 문제