git - remove - Ir, ir a buscar, ir a instalar, paquetes locales y control de versiones
git remove tag (3)
Acabo de escribir una breve guía paso a paso sobre cómo estoy usando la nueva herramienta go y github.com . Tu podrias encontrar esto útil:
1. Configura tu GOPATH
Puede establecer la variable de entorno GOPATH
en el directorio que desee. Si tiene proyectos más grandes, probablemente sea una buena idea crear un GOPATH diferente para cada uno de ellos. Recomendaría este enfoque especialmente para la implementación, de modo que al actualizar una biblioteca para el proyecto A no se rompa el proyecto B, que podría requerir una versión anterior de la misma biblioteca.
También tenga en cuenta que puede establecer su GOPATH en una lista de directorios, delimitada por dos puntos. Por lo tanto, es posible que tenga un GOPATH que contenga todos los paquetes comúnmente utilizados, y GOPATHS por separado para cada proyecto con paquetes adicionales o versiones diferentes de paquetes existentes.
Pero a menos que esté trabajando en muchos proyectos Go diferentes simultáneamente, probablemente sea suficiente tener solo un GOPATH localmente. Entonces, creemos uno:
mkdir $HOME/gopath
Luego debe establecer dos variables de entorno para indicarle a la herramienta ir dónde puede encontrar los paquetes Go existentes y dónde debe instalar los nuevos. Probablemente sea mejor agregar las siguientes dos líneas a su ~/.bashrc
o ~/.profile
(y no olvide volver a cargar su .bashrc).
export GOPATH="$HOME/gopath"
export PATH="$GOPATH/bin:$PATH"
2. Crea un nuevo proyecto
Si desea crear un nuevo proyecto Go que debe estar alojado en github.com más adelante, debe crear este proyecto en $GOPATH/src/github.com/myname/myproject
. Es importante que la ruta coincida con la URL del repositorio de github.com, ya que la herramienta ir seguirá la misma convención. Entonces, creemos la raíz del proyecto e inicialicemos un nuevo repositorio git allí:
mkdir -p $GOPATH/src/github.com/myname/myproject
cd $GOPATH/src/github.com/myname/myproject
git init
Como no me gusta escribir rutas tan largas, normalmente creo enlaces simbólicos para los proyectos en los que estoy trabajando en la carpeta de inicio:
ln -s $GOPATH/src/github.com/myname/myproject ~/myproject
3. Escribe tu aplicación
Comience a codificar y no se olvide de git add
y git commit
sus archivos. Además, no use importaciones relativas como la import "./utils"
para import "./utils"
. Actualmente no están documentados y no deberían utilizarse en absoluto, ya que no funcionarán con la herramienta ir. Use importaciones como github.com/myname/myproject/utils
en github.com/myname/myproject/utils
lugar.
4. Publica tu proyecto
Cree un nuevo repositorio en github.com , suba su clave pública SSH si no lo ha hecho antes y envíe sus cambios al repositorio remoto:
git remote add origin [email protected]:myname/myproject.git
git push origin master
5. Continúa trabajando en tu proyecto
Si ha configurado GOPATH en su .bashrc y ha creado un enlace simbólico a su proyecto en su carpeta de inicio, puede simplemente escribir cd myproject/
y editar algunos archivos allí. Luego, puede enviar los cambios usando git commit -a
y enviarlos a github.com haciendo un git push
.
Tengo problemas para entender el flujo de trabajo para crear un proyecto go que tenga paquetes locales.
Digamos que creo un nuevo proyecto, usando git para control de versiones, que tiene un archivo main.go y un archivo tools.go que estará en utilidades de paquete. Entonces tengo una estructura de directorios como esta:
/myproject/
main.go
utils/
tools.go
main.go se ve así:
package main
import "./utils"
func main() {
utils.DoSomthing()
}
y tools.go se ve así:
package utils;
func DoSomething() {
}
Todo funciona perfectamente localmente, usando go build y go run . Pero esto está alojado en github, y me gustaría que otros usen el comando go get para instalarlo. Entonces, la importación del paquete local debe cambiarse para usar el formato "github.com/user/project/utils", que funciona, excepto que ahora tengo dos copias del código fuente, y el verdadero problema es que la copia con el historial de git tiene una importación que hace uso de la copia descargada. Entonces, si estoy trabajando en la copia con el historial de git, cualquier cambio realizado en tools.go pasará desapercibido, porque usará la copia descargada.
Así que me pregunto si alguien puede explicar la forma correcta de usar go get , control de versiones e importaciones de paquetes dentro del mismo proyecto.
Probablemente no quieras dos copias de la fuente. Después de Cómo escribir código Go , debe tener una ruta donde realice su desarrollo Go, digamos "godev", y debajo de eso, un directorio "src", y debajo de eso, su "github.com/user/project" y "github.com/user/project/utils". (Estoy de acuerdo, parece un poco rígido, pero la ventaja que se nos explica es la libertad de crear archivos). Elimine el proyecto, aquí es donde hará su trabajo.
Tendrás a GOPATH configurado como godev al menos, pero es probable que desees que tu GOPATH comience con una ruta para paquetes externos que no sean tuyos. Por ejemplo, el GOPATH que uso es <my place on the file system>/goext:<my place on the file system>/godev
.
Tiene razón en que su importación en main.go ahora debe leer "github.com/user/project/utils".
No se preocupe por obtener get o alguno de los comandos de ir sobrescribiendo sus archivos o arruinando el control de versiones. A través de GOPATH, ven dónde trabajas y saben cómo funciona el control de versiones.
Si desea mantener su código en el repositorio de la versión local, simplemente ponga su código en GOPATH.
GOPATH acepta múltiples rutas. p.ej. en linux
GOPATH=$HOME/go:$HOME/prj/foo
Entonces, podría obtener paquetes de terceros instalados en $ HOME / go / src / ... Y, podría mantener su código controlado en $ HOME / prj / foo / src.
ref: go help gopath