>  기사  >  백엔드 개발  >  Golang, 로컬 가져오기 경로에서 원격 가져오기 경로로 이동하는 문제

Golang, 로컬 가져오기 경로에서 원격 가져오기 경로로 이동하는 문제

王林
王林앞으로
2024-02-09 08:27:38616검색

Golang, 로컬 가져오기 경로에서 원격 가져오기 경로로 이동하는 문제

php 편집기 Baicao가 Golang의 로컬 가져오기 경로에서 원격 가져오기 경로로 전송하는 것에 대한 질문에 답변해 드립니다. Golang 개발에서는 특히 여러 사람이 개발이나 프로젝트 마이그레이션을 위해 협력할 때 로컬 가져오기 경로에서 원격 가져오기 경로로 이동하는 상황에 자주 직면합니다. 이 문서에서는 코드가 원활하게 실행되도록 이 문제를 올바르게 처리하는 방법을 자세히 설명합니다. 한 번 보자!

질문 내용

저는 방금 애플리케이션을 여러 저장소로 나누기 시작했습니다. 많은 사람들처럼 저도 Go를 다루고 Repository를 변경하는 수고를 겪고 있습니다. 하지만 이러한 질문에 대한 질문과 답변이 많기 때문에 여기서는 질문하지 않겠습니다.

대신 간단한 질문이 있는데 이해가 안 되네요. 내 모든 모듈은 대규모 애플리케이션이므로 로컬 참조일 뿐입니다. 예를 들어 core/validate등.

콘텐츠를 여러 저장소로 이동하세요. 로컬 참조에 문제가 있는 것 같아서 gitlab.com/<group>/core.git/validate</group> 여러 Q&A에서 제안한 대로 경로를 원격 경로로 변경했습니다.

그러나 이로 인해 문제가 발생합니다. gitlab.com/<group>/core.git/config</group>gitlab.com/<group>/core.git/config</group> 引用了 gitlab.com/<group>/core.git/validate</group> 并不意味着 gitlab.com/ <group>/core.git/config</group> 现在指向 pck/mod/gitlab.com/... 中的某些内容或指向远程服务器,或者指向彼此以外的任何地方,就像它们只有像 core/validate를 참조한다고 해서 gitlab.com/<group>는 이제 <code>pck/mod/gitlab.com/...의 항목이나 원격 서버 또는 서로 다른 곳을 가리킵니다.

와 같은 상대 경로만 있나요? 이를 변경하면 내 IDE(GoLand)에서 찾을 수 없는 참조가 표시되기 때문에 다음과 같이 보입니다.

go mod init 并从头开始重建 mod,但是 go mod tidy 不起作用,我不知道我是否也必须在 go.work해본 적은 없습니다.

원격 경로 변경은 잘 작동하지만 지금은 IDE에 표시된 가져오기를 찾을 수 없습니다.

go get 개발 중에 코드를 변경하기 위해 원격 참조를 사용하는 경우 변경 사항을 푸시하여 참조 지점이 될 수 있도록 해야 하는 것처럼 보입니다.

로컬 원격 경로가 참조되는 위치로 변경합니다. 그런 것 같습니다. 발전하는 방식이 좋지 않아서 옳다고는 할 수 없습니다.

그렇다면 이러한 원격 경로는 개발과 어떻게 작동하나요? 제가 놓치고 있는 것은 무엇인가요?

Solution

혼란을 일으킬 수 있는 몇 가지 개념이 있습니다.

모듈은 패키지의 모음입니다. 모듈 이름을 "mymodule"로 지정하면 "mymodule" 아래의 모든 패키지 이름은 "mymodule/pkg1", "mymodule/pkg2/otherpkg" 등으로 지정됩니다.

그러면 패키지에 대한 가져오기 경로가 있습니다. 가져오기 경로에는 패키지의 위치가 표시됩니다. 예를 들어 소스 코드가 "mymodule/pkg1"에 있고 "mymodule/pkg2"를 가져오는 경우 이는 동일한 모듈 아래의 패키지에 대한 참조입니다.

이제 "github.com/mygroup/othermodule"에 "othermodule"이라는 또 다른 모듈이 있다고 상상해 보세요. 이 모듈의 패키지를 "github.com/mygroup/othermodule/pkg1"로 가져옵니다. "othermodule/pkg1"이 "othermodule/pkg2"를 참조하는 경우 동일한 모듈에 있기 때문에 "othermodule/pkg2"를 계속 가져옵니다. 하지만 "mymodule/pkg1"에서 "github.com/mygroup/othermodule/pkg2"로 가져옵니다.

Go 모듈 시스템은 다른 모듈의 버전 참조를 사용합니다. 모듈의 패키지를 포함하면 해당 모듈의 특정 버전이 go.mod에 추가됩니다. 모듈에 새로운 변경 사항을 푸시하는 경우 해당 변경 사항을 포함하도록 참조를 업데이트해야 합니다. 그렇기 때문에 긴밀하게 결합된 프로젝트를 여러 모듈로 분할하지 않는 것이 가장 좋습니다.

여러 모듈을 함께 개발하려면 "replace" 지시문을 사용하여 저장소의 버전을 가리키는 대신 모듈의 로컬 복사본을 사용하세요. 🎜

위 내용은 Golang, 로컬 가져오기 경로에서 원격 가져오기 경로로 이동하는 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제