programing

Go.mod의 Go 모듈 종속성을 보고서의 최신 커밋으로 지정하는 방법은 무엇입니까?

closeapi 2023. 6. 25. 20:07
반응형

Go.mod의 Go 모듈 종속성을 보고서의 최신 커밋으로 지정하는 방법은 무엇입니까?

v1.11 Go부터는 모듈에 대한 지원이 추가되었습니다.명령

go mod init <package name>
go build

생할성수 있니다 습다 ▁generate▁would니있go.mod그리고.go.sum패키지 종속성에 대해 발견된 모든 버전이 포함된 파일입니다.모듈에 릴리스가 없는 경우 해당 모듈의 최신 커밋이 사용됩니다.모듈에 릴리스가 있는 경우 최신 릴리스가 종속성으로 선택됩니다.

그러나 아직 공개되지 않은 릴리스가 아니라 해당 릴리스 이후에 수행된 커밋 기능이 필요할 때가 있습니다.설정방법법을 합니까?go.mod모듈의 릴리스가 아니라 모듈의 저장소에 있는 특정 커밋을 가리킵니다.손으로 넣을 수 있을 것 같습니다.go.mod와 함께

module /my/module
    
require (
    ...
    github.com/someone/some_module v0.0.0-20181121201909-af044c0995fe
    ...
)

v0.0.0릴리스 태그인 막으게릴시태리그일와않치습하니다지에 해당하지 .20181121201909와 커밋타가될것이고가 .af044c0995fe커밋 해시가 될까요?그러한 정보를 손으로 찾아서 입력해야 합니까, 아니면 더 나은 방법이 있습니까?

원하는 커밋 해시를 '가져오기'만 하면 됩니다.

go get github.com/someone/some_module@af044c0995fe

'go get'은 종속성 파일(go.mod, go.sum)을 올바르게 업데이트합니다.

더 많은 정보: https://github.com/golang/go/wiki/Modules#how-to-upgrade-and-downgrade-dependencies

추가로 에버턴의 사용에 대한 답변.go get github.com/someone/some_module@af044c0995fe특정 커밋을 얻기 위해 다음과 같은 지점 이름을 사용할 수도 있습니다.

  • go get github.com/someone/some_module@master
  • go get github.com/someone/some_module@dev_branch

이러한 예제는 해당 분기에서 최신 커밋을 가져옵니다.

여전히 유사 버전으로 기록됩니다.go.mod:v0.0.0-20171006230638-a6e239ea1c69(이를 통해 표준 semver 순서를 기준으로 모든 버전에 걸쳐 간단한 토탈 오더를 제공할 수 있습니다.)

디렉토리에 대한 두을 동시에 ), 를 추가할 수 .replace 진술는에의 에 있는 go.mod파일 이름:

module example.com/mypkg

go 1.15

require (
  gitlab.com/someone/a_package v0.14.2
)

replace gitlab.com/someone/a_package => ../my_forks/a_package

저는 한동안 그것이 모두에게 어떻게 작용하는지에 대해 머리를 부딪쳤고 그것을 운영할 수 없습니다.저는 마스터 브랜치를 사용해야 했고, 그 후에야 마스터 브랜치를 사용할 수 있었습니다.

특정 지점, 커밋 ID 또는 태그로 작업하려면 아래 명령을 실행하여 플래그 for go 모듈을 활성화해야 합니다.

env -w GO111MODULE=로 이동합니다.

이 후에 우리는 할 수 있을 것입니다.

go get repo@branchname
go get repo@tag
go get repo@commithash

또한 go.mod 파일의 태그 대신에 최신 단어를 넣으면 모듈의 최신 태그로 변경됩니다.

예:

module /my/module

require (
...
github.com/someone/some_module latest
...
)

될 것입니다

module /my/module

require (
...
github.com/someone/some_module v2.0.39
...
)

달리기를 한 후에go mod tidy

  • 분기에서 소스 다운로드
    go get your-repo@branch-name추가할 Go 모듈 버전이 포함된 출력 읽기require또는replace:
    go: github.com/your-repo v1.2.3-0.20210609123456-123123 다운로드
  • 나중에 이 버전을 다음 명령의 출력 문자열로 찾을 수 있습니다.
    go list -m -json your-repo@branch-name | jq '.|"\(.Path) \(.Version)"'
  • 한다면jqPC에 설치되어 있지 않습니다. 수동으로 결합합니다.Path그리고.Version결과 값:
    go list -m -json your-repo@branch-name
    공백으로 구분:
    귀하의 보관소 v1.2.3-0.20210609123456-123123

언급URL : https://stackoverflow.com/questions/53682247/how-to-point-go-module-dependency-in-go-mod-to-a-latest-commit-in-a-repo

반응형