>  기사  >  백엔드 개발  >  Golang 모듈의 의사 버전을 git 커밋으로 변환하는 방법은 무엇입니까?

Golang 모듈의 의사 버전을 git 커밋으로 변환하는 방법은 무엇입니까?

王林
王林앞으로
2024-02-08 23:00:221125검색

如何将 Golang 模块的伪版本转换为 git 提交?

PHP 편집자 Youzi가 Golang 모듈의 의사 버전을 git 제출로 변환하는 방법을 공유할 것입니다. Golang의 모듈 관리에서는 아직 출시되지 않은 모듈의 종속성을 유지하기 위해 의사 버전이 사용됩니다. 그러나 모듈을 git 저장소에 게시할 준비가 되면 이러한 의사 버전을 구체적인 git 커밋으로 변환해야 합니다. 이 문서에서는 이 프로세스를 구현하는 방법을 자세히 소개하고 Golang 모듈의 종속성을 더 잘 관리하고 유지하는 데 도움이 됩니다.

질문 내용

go 모듈이 포함된 두 개의 git 저장소가 있습니다. 저장소에 포함된 controllerapicontroller 导入 api,因此 controller 存储库中的 go.mod 文件依赖于 api 모듈이라고 부르겠습니다.

내 문제는 controller 中的代码,我不仅需要 api 中的 go 代码,还需要存储库中包含的一些静态文件(从代码生成)。据我所知,没有办法将这些静态文件打包到go模块中,以便它们自动导入到我的vendor 폴더를 실행하기 위해서입니다.

현재 접근 방식은 정적 파일이 포함된 폴더를 드물게 체크아웃된 git 하위 모듈로 추가하는 것입니다. 그러나 해당 하위 모듈이 api 导入的 go 源代码保持同步,我想要一个小的 shell 脚本,自动检查 go.mod 文件中 api 모듈 버전에서 참조된 커밋과 함께 작동하도록 하려면

이 기능은 출시된 빌드에서 작동할 수 있지만 go.mod 文件中具有 <semantic version>-<commit 时间戳 >-<commit 哈希前缀 >의 의사 버전인 출시되지 않은 빌드에서도 작동하고 싶습니다.

이 유사 버전의 완전한 제출 해시를 계산할 수 있는 방법이 있나요? go modvendor가 올바른 버전을 체크아웃할 수 있기 때문에 어느 정도 가능하다고 가정합니다. 그러나 제가 생각할 수 있는 유일한 프로세스는 주어진 시간에 모든 브랜치에서 발생한 커밋을 검색한 다음 그 중에서 커밋을 선택하는 것뿐입니다. 해시 접두사가 일치합니다. ..bash에서는 어려운 것 같습니다.

이 문제를 해결하는 방법에 대한 아이디어가 있습니까? api에서 컨트롤러로 정적 파일을 가져오는 대안도 높이 평가됩니다. 이렇게 하면 제공된 api 모듈 버전과 동기화를 유지할 수 있습니다. . api 导入 controller 的替代方法也值得赞赏,这种方式使它们与 api 模块的供应版本保持同步。

解决方法

感谢 Volker 提供正确答案。使用 embed

Solution

정답을 제공해 주신 Volker에게 감사드립니다. embed 패키지를 사용하는 것은 실제로 매우 쉽고 잘 작동합니다. 🎜 🎜이 솔루션의 한 가지 단점은 go 패키지의 파일만 포함할 수 있다는 것입니다. 내가 생성한 파일은 go 코드가 포함되지 않은 최상위 폴더에 있으므로 이를 포함하려면 가상 패키지에 래핑해야 합니다. 🎜

위 내용은 Golang 모듈의 의사 버전을 git 커밋으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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