PHP 편집자 Youzi가 Golang 모듈의 의사 버전을 git 제출로 변환하는 방법을 공유할 것입니다. Golang의 모듈 관리에서는 아직 출시되지 않은 모듈의 종속성을 유지하기 위해 의사 버전이 사용됩니다. 그러나 모듈을 git 저장소에 게시할 준비가 되면 이러한 의사 버전을 구체적인 git 커밋으로 변환해야 합니다. 이 문서에서는 이 프로세스를 구현하는 방법을 자세히 소개하고 Golang 모듈의 종속성을 더 잘 관리하고 유지하는 데 도움이 됩니다.
go 모듈이 포함된 두 개의 git 저장소가 있습니다. 저장소에 포함된 controller
和 api
。 controller
导入 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
embed
패키지를 사용하는 것은 실제로 매우 쉽고 잘 작동합니다. 🎜
🎜이 솔루션의 한 가지 단점은 go 패키지의 파일만 포함할 수 있다는 것입니다. 내가 생성한 파일은 go 코드가 포함되지 않은 최상위 폴더에 있으므로 이를 포함하려면 가상 패키지에 래핑해야 합니다. 🎜위 내용은 Golang 모듈의 의사 버전을 git 커밋으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!