2014-12-03 1 views
3

내 gopath는 $HOME/go 디렉토리를 가리 킵니다. 그리고 나는 github 또는 다른 곳에서 (아직) 공유하고 싶지 않은 개인 패키지를 가지고 있습니다. 내가 go get -u all으로 원격 패키지를 업데이트 할 때 내가 얻을 : 이것은 아주 혼란 ​​작업 공간 문제로 이동 : 원격 패키지와 로컬 패키지를 구분하는 방법은 무엇입니까?

# cd /home/go/src/marcio/somePackage; git pull --ff-only 
fatal: No remote repository specified. Please, specify either a URL or a 
remote name from which new revisions should be fetched. 
package code.google.com/p/go.tools/astutil 
     ... 
     long list of dependencies 
     ... 
     imports marcio/somePackage: exit status 1 

. go get에서 내가 관리하는 패키지와 종속 패키지로 사용 된 패키지를 어떻게 다르게 설정합니까? go 도구가 원격 소스에서 모든 것을 가져와야한다고 생각하는 이유는 무엇입니까?


UPDATE :

이동 작업 공간 사용자 유지 코드 종속성을 섞어을 부과 할 것 같습니다. 이것은 불안해 보입니다. 때로는 사용하지 않는 쓰레기 패키지를 지우고 잘못된 폴더 또는 커밋되지 않은 항목을 지울 위험이 있으며 많은 다른 문제가 있습니다 ... 사용자 유지 관리 패키지를 원격 가져온 종속 항목과 분리하여 유지하는 방법이 있습니까?

답변

4

go get -u은 VCS를 통해 업데이트를 가져 오도록 설계되었습니다. 패키지를 선택적으로 업데이트하려면보다 구체적인 식별자를 사용해야합니다. 당신도 여전히 ... 와일드 카드를 사용할 수 있습니다.

예를 들어,이 github.com에서 모든 패키지를 시도하고 업데이트합니다 :하지만 일반적으로

go get -u github.com/... 

, 종속성가 파손되었을 때 어렵게 추적 할 수 것처럼 나는 맹목적으로 모든 업데이트 피할 것 현재 관련없는 프로젝트와 관련이 없으므로 종속성도 업데이트됩니다.

업데이트 답 :

당신이 작동 할 수 있지만 여러 GOPATH의 (그들은 대장 단지 PATH처럼 분리하고), 그것을하지 않는다; 그것은 도움이되는 것보다 더 많은 문제를 일으킬 것입니다. 하나의 GOPATH을 사용하고 프로젝트 당 하나의 GOPATH을 사용하는 것이 좋습니다. 그렇게하면 다른 프로젝트에 영향을 미치지 않고 종속성을 업데이트 할 수 있습니다. 이 문제를 해결하기 위해 조사 할 수있는 벤더링 도구가 있습니다 (예 : godep)

+0

사용자 유지 관리 코드와 종속성 간의 혼합이 매우 불안해 보입니다. 그래서 질문을 업데이트했습니다. 큰 대답, BTW. 와일드 카드에 대해 잘 알고 있습니다. – marcio

+0

@marcioAlmada : 업데이트에 응답했습니다. 즉, 코드를 혼합하는 것에 대해 걱정할 필요가 없으며 원격 제어가 버전 제어에 있습니다 (그리고 로컬 코드도 적절해야합니다.)). 여러 버전이 필요한 경우 다른 GOPATH에서 여러 사본을 사용하십시오. – JimB

관련 문제