2014-12-23 2 views
2

편집 : @ VonC에 따르면 의견에 중첩 된 리포가 아니라 하위 모듈이 있습니다. 그러나 내 문제는 아래에 동일하게 유지됩니다 :나뭇 가지에있는 자식 서브 모듈

새로운 기능을 사용하기 위해 로컬 저장소에서 분기를 만들었습니다. 새로운 기능을 사용하려면 Azure PHP SDK를 작곡가를 통해 설치해야했습니다. Azure SDK가 /vendor 폴더 내에서 Azure SDK 자체의 git repo를 생성했다는 것을 알았습니다. 그래서 저는 이제이 새로운 지부에 Submodule을 가지고 있습니다.

나는이 지점에서 모든 것을 최선을 다하고 있고, 내가 git status을 할 때 나는이 새로운 기능 분기를 병합하고 git status 내가보고 할 내 마스터 분기로 전환 할 때 지금

nothing to commit, working directory clean 

가 나타납니다

Untracked files : vendor/ 
내가 봤 나는 addcommit 마스터 지점이 vendor/ 디렉토리 경우, 나는 새로운 기능 지점 벡를 병합 할 수 없습니다 것을 보았다

어떤 종류의 갈등을 일으킨다. 나는 또한 지형지 ​​물에있는 서브 모듈을 엉망으로 만들 것이라고 생각한다. 나는 작동하지 않을 것이라고 확신하지 못하기 때문에 vendor/을 떠나는 새로운 지형지 물을 합치려고하지 않았으며, 그것이 무엇을 망칠 지 모르겠습니다.

어떻게 진행해야합니까? 나는 master branch에 앉아 있는데, 새로운 feature branch는 submodule이있는 vendor/에있다. 그리고 master 브랜치에서 vendor/ 폴더는 untracked 파일에 있습니다.

지형지 물 분기를 마스터에 병합하려면 어떻게해야합니까?

+0

메인 저장소에 .gitmodules 파일이 있고 벤더가 색인에서 gitlink 항목 (http://stackoverflow.com/a/16581096/6309)으로 선언 된 경우에만 하위 모듈입니다 (http://stackoverflow.com/a/17442045/6309). 귀하의 경우 공급 업체가 실제로 서브 모듈입니까? 또는 단순히 중첩 된 자식 repo? (이 경우 서브 모듈로 변환 할 수 있습니다 : http://stackoverflow.com/a/27561728/6309) – VonC

+0

.gitmodules 파일이없는 것 같습니다. 그러나 나는 bitbucket 내 지사 지점을 밀어 냈고'vendor /'의 Azure SDK 폴더가 하위 모듈이라고 말합니다 ... 나는 지사 브랜치에서 작업 디렉토리가 깨끗한 것을 걱정하지만 마스터로 돌아 가면 브랜치는'경고 : rmdir irn/vendor/microsoft/windowsazure : 디렉토리가 비어 있지 않다 '라는 에러를 발생시키고, 갑자기'vendor /'가 비 추적 파일에 ... – superphonic

+0

'feature' 브랜치에 '.git /'* folder *,'vendor /'디렉토리 내의'azure sdk' 디렉토리의'.git' * 파일 – VonC

답변

2

당신의 자식 레포에서 "vendor" 디렉토리를 추적 할 필요가 없다고 생각합니다.

그래서 난 그냥 (그것을 untrack), 해당 변경 사항을 커밋하고 미래에 untracked 남아 있도록 해당 프로젝트의 .gitignore 디렉터리에 공급 업체 디렉터리를 추가하십시오. 이것에 대한

단계는 단순히 다음과 같습니다

git checkout feature_branch 
git rm -r --cached vendor 
echo "vendor" >> .gitignore && git add .gitignore 
git commit -m "untrack vendor directory" 

--cached 플래그 위에서 심지어 비 추적 상태에서 git rm 후 로컬 파일을 유지합니다.

FWIW의 경우 공급 업체 디렉토리의 내용은 Composer이 설치하는 종속성이며 즉석에서 생성 될 수 있습니다. 따라서 배치 스크립트의 일부 여야하므로 작성자를 사용하여 환경을 설정할 수 있으므로 repo를 확인하지 않아야합니다.

(참고 : 각 빌드하는 동안 신선한 다운로드 시간 피하기 위해 배포에서 일반적 vendor위한 공유 소프트 링크를 유지 탐험 할 수 있습니다) 일반적인 권장 사항 인 composer docs for Should I commit the dependencies in my vendor directory?

인용

을 더 . 공급 업체 디렉토리 (또는 종속성이 설치된 곳)는 .gitignore/svn:ignore/etc에 추가해야합니다.

그러면 모든 개발자가 종속성을 설치하기 위해 Composer을 사용하게하는 것이 가장 좋습니다. 마찬가지로 빌드 서버, CI, 배포 도구 등은 프로젝트 부트 스트랩의 일환으로 Composer를 실행하도록 조정되어야합니다.

+0

좋아요. 고맙습니다. – superphonic

관련 문제