Go에 대한 좋은 점 중 하나는 모든 것이 잘 들어간다는 것입니다. Go :-) 거의 모든 표준 라이브러리와 도구를 포함합니다.
cmd/go/vcs.go
에서 우리는 이것이 어떻게 행해지는지 알 수 있고, cmd/go/alldocs.go
에서는 그것이 문서화되어있다.
특히, repoRootForImportPath
보고 :
// repoRootForImportPath analyzes importPath to determine the
// version control system, and code repository to use.
func repoRootForImportPath(importPath string, security securityMode) (*repoRoot, error) {
이것이 않는 것은 :
vcsPaths
는 "알려진 호스트"의 정적 목록을 보유하고 있습니다. 일부 (예 : GitHub)의 경우이 작업은 간단하며 VCS 만 설정할 수 있습니다. 다른 사람들 (예 : BitBucket)은 어떤 repo를 사용할 수 있는지 확인하기 위해 URL을 검사하는 콜백 함수가 사용됩니다.
경로가 실패하면 경로의 "VCS 확장자"(예 : example.com/foo.git
또는 example.com/foo.git/dir
)를 찾습니다.
그리고 마지막으로 go get
처럼 보이는 go-import
메타 태그를 찾습니다 :
<meta name="go-import" content="example.com/path git https://github.com/Example/repo.git">
는 또한 parseMetaGoImports()
를 참조하십시오. Vanity Imports with Hugo은 이것을 사용하는 방법에 대한 좋은 소개입니다.
실제 "자동 감지"메커니즘이 없습니다. 그러므로 만약 Repo가 https://example.com/stuff
에 있다면 go get example.com/stuff
은 이 아니고이 될 것입니다. 에 확장자 또는 메타 태그가 필요합니다.
매개 변수가 추가되어 웹 사이트 작성자가 go get
의 요청임을 쉽게 알 수 있으며, 경우에 따라 유용 할 수 있습니다.
구현 위치를 지적 해 주셔서 감사합니다. 실제 예제로'https : // golang.org/x/net/html'의 HTML 페이지는'go-import' 메타 태그를 포함하고 있습니다. – smwikipedia