Estou tentando compilar o banco de dados InfluxDB (versão v0.8.8) usando go get github.com/influxdb/influxdb
Mas isso puxa o branch master e eu preciso da v0.8.8
tag.
Eu tentei fazer: go get github.com/influxdb/influxdb/releases/tag/v0.8.8
mas falha dizendo incapaz de encontrar.
Eu também tentei fazer um regular go get
do branch master, e em seguida, verificar manualmente a tag usando na fim de definir a versão corret.git
GOPATH/src/github...
O problema com a última abordagem é que quando tento puxar as dependências com go get -u -f ./...
ele tenta encontrá-las no branch master, e algumas delas não existem no branch master ...
TL; DR : execute go get
em uma tag github específica e extraia as dependências corretas.
go get
, não como criar uma.Respostas:
Não é possível usar a
go get
ferramenta. Em vez disso, você precisa usar uma ferramenta de gerenciamento de pacotes go de terceiros ou criar seus próprios garfos para os pacotes que deseja gerenciar de forma mais refinada.Falei com um cara que trabalha no Google e ele reconheceu esse problema / requisito, ele disse que a venda que sua equipe usava era volumosa e eles provavelmente vão resolver isso com as ferramentas oficiais em breve.
Consulte Mais informação:
Venda em Go 1.6
A venda foi liberada do experimental no go 1.6 (depois que este post foi escrito inicialmente), o que torna mais fácil o processo de uso de tags / versões específicas de pacotes usando ferramentas de terceiros.
go get
ainda não tem a funcionalidade de buscar tags ou versões específicas.Mais sobre como o vendedor funciona: Entendendo e usando a pasta do vendedor
Módulos no Go 1.11
Go 1.11 lançou recursos experimentais chamados módulos para melhorar o gerenciamento de dependências, eles esperam lançá-lo como estável no Go 1.12: Informações sobre módulos no Go 1.11
fonte
go mod
já está disponível.Para quem precisa construir um binário de uma tag específica , aqui está o meu jeito:
mkdir temp cd temp go mod init . go get -d -v github.com/nsqio/nsq@v1.1.0 mkdir bin go build -o bin/nsqd.exe github.com/nsqio/nsq/apps/nsqd
Explicação:
nsqd
.go mod init .
cria umgo.mod
arquivo no diretório atual, que permite o usogo get
com revisão / tags. (veja este link )-d
significa "apenas download", se você deseja uma instalação direta, omita este sinalizador e os comandos de construção abaixo desta linha.-v
significa "ser prolixo".bin/nsqd.exe
porbin/nsqd
.O módulo baixado é armazenado em
%GOPATH%\pkg\mod
. Se você não quiser poluir seuGOPATH
diretório, crie um novo e defina seuGOPATH
para ele.fonte
go mod init
necessário um id de módulo, por exemplogo mod init local/build
Tive sucesso com isso:
fonte
go get -d <git-url>
apenas para baixar os pacotes e pular a instalação.Esta pergunta é anterior aos Módulos Go, mas para referência futura, o procedimento correto no Go 1.11 para buscar uma versão específica é este:
go get github.com/influxdb@[version]
Ou para obter uma tag git específica:
go get github.com/influxdb@[gitref]
fonte
Eu tenho uma abordagem (um tanto hackeada, mas funcionando) para resolver este problema, pelo menos para repositórios git: como os pacotes go get'ed são repositórios de controle de origem normais, pode-se verificar as tags usando ferramentas git normais (poderia usar git da linha de comando , Estou usando o Atlassian SourceTree).
Para compartilhar minha configuração de pacote com meus colegas de equipe, criei um repositório git de meu GOPATH . Em seguida, adicionei todos os pacotes (pelo menos os que queria gerenciar dessa forma) a este repositório como submódulo git. Isso requer que você mova as pastas repo existentes para fora do caminho e as adicione novamente como submódulo git, para não confundir o git. Este processo é um tanto tedioso, mas valeu a pena:
Agora posso enviar commit e push para meu GOPATH-repo sempre que uso um novo pacote go. Quando meus colegas de equipe puxam esse repositório e emitem uma atualização de submódulo git (ou simplesmente atualizam via SoureTree, que faz isso automaticamente), sua versão do pacote é verificada na mesma tag que a minha.
Claro que isso só funciona para pacotes sob controle de origem git ...
fonte
O plugin maven golang permite brincar com branch, tag e revisão durante GET, você pode dar uma olhada em seu teste para tais casos com o repositório GIT
fonte