telegraph telegraf golang git go github influxdb

telegraf - Cómo hacer "ir a buscar" en una etiqueta específica de un repositorio de github



telegraph influxdb (5)

Estoy tratando de compilar la base de datos InfluxDB (versión v0.8.8) usando go get github.com/influxdb/influxdb

Pero esto tira de la rama maestra, y necesito la etiqueta v0.8.8 .

He intentado hacer: go get github.com/influxdb/influxdb/releases/tag/v0.8.8 pero esto falla diciendo que no se puede encontrar.

También intenté hacer una GOPATH/src/github... regular de la rama maestra, y luego verificar manualmente la etiqueta usando git en GOPATH/src/github... para configurar la versión correcta.

El problema con el último enfoque es que cuando trato de extraer las dependencias con go get -u -f ./... intenta encontrarlas en la rama maestra, y algunas de ellas no existen en la rama maestra. .

TL; DR : realice go get en una etiqueta específica de github y extraiga las dependencias correctas.


He tenido éxito con esto:

  • Ejecute el comando get sin la etiqueta: debe clonar la rama maestra.
  • Vaya al directorio de clonación y extraiga la etiqueta o rama que desee.
  • Ejecute el comando go get nuevamente, debe procesar el comando en la rama desprotegida.

No es posible usar la herramienta go get . En su lugar, debe utilizar una herramienta de administración de paquetes de terceros o crear sus propios tenedores para los paquetes que desea administrar de forma más precisa.

Habló con un tipo que trabaja en Google y reconoció este problema / requisito, dijo que la venta que utilizó su equipo era voluminosa y que probablemente lo resolverán pronto con las herramientas oficiales.

Lee mas:

Vender en Go 1.6

El envío se ha lanzado desde experimental en go 1.6 (después de que esta publicación se escribió inicialmente) que facilita el proceso de usar etiquetas / versiones específicas de paquetes usando herramientas de terceros. go get todavía no tiene la funcionalidad para buscar etiquetas o versiones específicas.

Más información sobre cómo funciona la venta: comprensión y uso de la carpeta del proveedor

Módulos en Go 1.11

Go 1.11 ha lanzado características experimentales llamadas módulos para mejorar la gestión de dependencias, esperan lanzarlo como estable en Go 1.12: información sobre módulos en Go 1.11


Tengo un enfoque (algo hack, pero funcional) para abordar este problema, al menos para los repositorios git: como los paquetes go get''ed son repositorios normales de control de fuente, uno puede revisar las etiquetas usando herramientas git normales (podría usar git desde la línea de comandos , Estoy usando Atlassian SourceTree).

Para compartir la configuración de mi paquete con mis compañeros de equipo, he creado un repositorio git de mi GOPATH . Luego agregué todos los paquetes (al menos los que quería administrar de esta manera) a este repositorio como submódulo git. Esto requiere mover las carpetas de repositorios existentes fuera del camino y volver a agregarlas como submódulo git, para no confundir git. Este proceso es algo tedioso, pero demostró que vale la pena:

Ahora puedo comprometerme y presionar a mi repositorio GOPATH cada vez que uso un nuevo paquete go. Cuando mis compañeros de equipo se retiran de este repositorio y emiten una actualización de submódulo git (o simplemente actualizan a través de SoureTree, que lo hace automáticamente), su versión del paquete se extrae en la misma etiqueta que la mía.

Por supuesto, esto solo funciona para paquetes bajo control de fuente git ...



go mod está disponible.

Para aquellos que necesitan construir un binario de una etiqueta específica , aquí está mi manera:

mkdir temp cd temp go mod init . go get -d -v github.com/nsqio/[email protected] mkdir bin go build -o bin/nsqd.exe github.com/nsqio/nsq/apps/nsqd

Explicación:

  • El código anterior extrae NSQ v1.1.0 y construye nsqd .
  • go mod init . crea un archivo go.mod en el directorio actual, que permite usar go get con revision / tags. (ver este enlace )
  • -d significa "solo descarga", si desea una instalación directa, omita este indicador y los comandos de compilación debajo de esta línea.
  • -v significa "ser detallado".
  • El código anterior es para Windows. Si usa Linux, reemplace bin/nsqd.exe con bin/nsqd .

El módulo descargado se almacena en %GOPATH%/pkg/mod . Si no desea contaminar su directorio GOPATH , GOPATH uno nuevo y configure su GOPATH en él.