Ce qui est une bonne pratique avec des espaces de travail?
Je suis juste d'entrer dans l'apprentissage de l'Aller, et à la lecture par code existant pour apprendre "comment les autres le font". En agissant de la sorte, l'utilisation d'un "espace de travail", surtout en ce qui concerne un projet de dépendances, semble être tout plus de l'endroit.
Ce (ou est-il) d'un commun les meilleures pratiques autour de l'aide d'un seul ou de multiples Aller espaces de travail (c'est à dire les définitions de $GOPATH) tout en travaillant sur divers Go projets? Devrais-je m'attendre à avoir un seul espace de travail c'est un peu comme un référentiel central de code pour tous mes projets, ou explicitement le briser, et de définir $GOPATH que je vais travailler sur chacun de ces projets (comme une sorte de python virtualenv)?
- C'est toujours une question importante dans la communauté, et il n'y a pas encore de réponse définitive quant à la meilleure façon de le faire.
Vous devez vous connecter pour publier un commentaire.
Je pense que c'est plus facile d'avoir un
$GOPATH
par projet, de cette façon, vous pouvez avoir différentes versions d'un même package pour les différents projets, et mettre à jour les packages nécessaires.Avec un référentiel central, il est difficile de mettre à jour un package que vous pourriez casser un autre projet en faisant de la sorte (si le package de mise à jour a rupture de changements ou de nouveaux bugs).
GOPATH
par projet extrêmement facile. Voir ma réponse ci-dessous pour quelques-uns des avantages.J'ai utilisé plusieurs GOPATHs -- des dizaines, en fait. La commutation entre les projets et le maintien de l'dépendances a été beaucoup plus difficile, parce que tirant dans une utile mise à jour dans un espace de travail exigé que je le fais dans les autres, et parfois j'avais oublier, et le rayer de ma tête, se demandant pourquoi cette dépendance qui fonctionne dans un projet, mais pas l'autre. Fiasco.
J'ai maintenant juste un GOPATH et j'ai mis tous mes dev projets - Aller ou non en son sein. Avec un central de l'espace de travail, je peux encore garder chaque projet dans son propre dépôt git (
src/<whatever>
) et l'utilisation de git ramification de gérer les dépendances lorsque cela est nécessaire (dans la pratique, il est très rare).Ma recommandation: utiliser un espace de travail, ou peut-être deux (comme si vous avez besoin de garder, par exemple, du travail et du code personnel plus distinct, mais le package conseillé chemin convention de nommage devrait le faire pour vous).
L'aide d'un GOPATH sur l'ensemble de vos projets est très pratique, mais je trouve que cela ne sera le cas que pour mes propres projets personnels.
Je utiliser un GOPATH pour chaque système de production, je maintiens le fait que j'utilise submodules dans chaque GOPATH l'annuaire de l'arbre afin de geler les dépendances.
Donc, quelque chose comme:
Par la mise en GOPATH à ~/code/mon-projet, il utilise alors la dépendance et la dépendance-deux submodules dans ce projet à la place de l'aide globale des dépendances.
Essayer envirius (universelle des environnements virtuels manager). Il permet de compiler une version de
go
et de créer un nombre quelconque d'environnements basés sur elle.$GOPATH
/$GOROOT
sont dépendent de chaque environnement particulier.De plus, il permet de créer des environnements avec un mélange de langues (par exemple,
python
&go
dans un environnement).Dans mon entreprise, j'ai créé Virtualgo pour faciliter la gestion de plusieurs
GOPATH
s super facile. Un couple d'avantages par rapport à la manipulation manuellement sont:GOPATH
lorsque vouscd
à un projet.GOPATH
comme une sauvegarde. Si un paquet n'est pas trouvée dans le projet spécifique de l'espace de travail il va rechercher le principalGOPATH
.Si vous venez de définir
GOPATH
à$HOME/go
ou similaires et de commencer à travailler, tout fonctionne hors de la boîte et est vraiment facile.Si vous faites beaucoup de
GOPATH
s avec beaucoup de bin dirs pour beaucoup de projets avec beaucoup de communes de dépendances dans les divers états de fraîcheur vous, que devrait être assez évident, de rendre les choses plus difficile sur vous-même. C'est juste plus de travail.Si vous trouvez que, à l'occasion, vous avez besoin d'isoler certaines choses, alors vous pouvez faire un autre
GOPATH
à gérer cette situation.Mais en général, si vous vous retrouver à faire plus de travail, c'est souvent parce que vous êtes le choix de rendre les choses plus difficiles.
J'ai obtenu ce que doit être proche de 100 projets, j'ai accumulé au cours des quatre dernières années de go. J'ai presque toujours dans les
GOPATH
, qui est$HOME/go
sur mes ordinateurs.Un espace de travail + godep est mieux pour moi.
Vous pourriez vouloir essayer le
direnv
paquet.https://direnv.net/
Suffit d'utiliser GoSwitch. Enregistre un diable de beaucoup de temps et de santé mentale.
Ajouter le script à la racine de chacun de vos projets et de la source.
Il fera de ce projet dir votre gopath et également ajouter/supprimer l'exacte dossier bin du projet de chemin.
https://github.com/buffonomics/goswitch