No verso de https://github.com/golang/go/issues/15201#issuecomment -208602586
Propomos um meio pelo qual o cmd/go e seus amigos aproveitam arquivos regulares para simular o comportamento semelhante a links simbólicos dentro de um repositório durante a resolução de pacotes GOPATH de maneira agnóstica de plataforma
https://docs.google.com/document/d/1n5y3mZPs_4PjI80a0vZEaHLe7r9PeiiE9xsIrQFT8Is/edit
Obrigado a @kardianos por compartilhar seus pensamentos iniciais offline
_O nome "symlink" é obrigado a gerar uma boa discussão por si só: espero que possamos discutir nomes/nomeação separadamente do cerne da proposta_
Alguns comentários/perguntas:
@kostya-sh
O termo "repositório" não está definido
A primeira nota de rodapé fornece detalhes - é a mesma definição assumida aqui . Mas eu concordo que a questão ainda permanece se "repositório" está formalmente definido em algum lugar?
E se o código fonte no GOPATH não estiver vindo de um VSC ou vindo do Subversion que suporta o check-out de um diretório?
Pergunta em aberto - admito que a única consideração até agora foi para o código que faz parte de um "repositório". Eu adicionei uma seção de "perguntas abertas" na parte inferior fazendo referência a essa pergunta.
se um repositório contiver vários binários públicos, não será necessário copiar as dependências várias vezes. dependências fornecidas podem ser colocadas em cmd/vendor
Na verdade, essa é uma abordagem para compartilhar código fornecido entre binários. Mas a abordagem de "link simbólico" ajuda a facilitar a abordagem de compartilhamento desse "fornecedor" com o código da biblioteca (veja o próximo ponto)
Tanto quanto posso dizer, esta proposta não resolve o problema de "biblioteca e programa no mesmo repositório".
Essa proposta por si só não, não. Mas o repositório vinculado na seção "Exemplo motivador" descreve como esse problema pode ser resolvido usando uma combinação de "links simbólicos" e aumento do GOPATH.
Os links simbólicos são muito problemáticos. Parece insensato permiti-los.