Como você configura o npm para instalar a partir de um repositório do GitHub que usa o Git LFS?

0

Quando executo npm install --save git+ssh://[email protected]:bmahsman/bubblegum.git , npm verifica os arquivos de texto que git lfs coloca no lugar dos ativos reais. Parece que npm não está usando ~/.gitconfig da minha conta de usuário local, ou seja, os filtros lfs não estão sendo usados e git-lfs não está sendo chamado.

Eu verifiquei que git-lfs e git lfs funcionam em cmd e bash . Eu tentei o comando npm install acima em cmd e bash e obtive o mesmo resultado. Eu verifiquei que git clone [email protected]:bmahsman/bubblegum.git do zero produz os arquivos binários reais em vez dos arquivos de texto.

Meu repositório está localizado em https://github.com/bmahsman/bubblegum e eu uso o Git LFS para gerenciar arte binária e recursos de som, por isso ele tem um .gitattributes modificado com git lfs track :

$ cat ./.gitattributes
*.png filter=lfs diff=lfs merge=lfs -text
*.ogv filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text

Minha conta de usuário local está configurada para git desta maneira:

$ cat ~/.gitconfig
[user]
    name = Brynn Mahsman
    email = [email protected]
[merge]
    ff = no
[credential]
    helper = cache
[alias]
    sc = git clone --recursive
    sp = push --recurse-submodules=on-demand
    su = submodule update --remote --merge
[push]
    default = simple
[filter "lfs"]
    clean = git-lfs clean %f
    smudge = git-lfs smudge %f
    required = true

Estou usando o Windows 7.

$ npm -v
2.14.7

$ git --version
git version 2.6.2.windows.1

Editar: caso seja um bug, eu fiz um problema no GitHub .

    
por Brynn Mahsman 12.11.2015 / 14:02

2 respostas

1

(Isto não é uma resposta. Era para ser um comentário sobre a questão, mas esta conta não tem a reputação de comentar ainda. Desculpe por isso.)

Isso parece um bug no npm. Eu não vejo nada que você esteja fazendo errado. Tente aqui .

    
por 16.12.2015 / 04:13
0

Depois de examinar a saída de git e npm com export GIT_TRACE=1 e npm config loglevel verbose , acredito que descobri como fazer isso funcionar, pelo menos com o GitLab (já mudei do GitHub para GitLab, que também suporta o Git LFS).

Etapa 1. Dentro do seu repositório, execute o seguinte comando (substitua bubblegum pelo nome do seu repositório) e, em seguida, confirme o .gitconfig e o push resultante:

$ git config -f .gitconfig lfs.url https://gitlab.com/brynn.mahsman/bubblegum.git/info/lfs

Etapa 2. No diretório em que você deseja npm install do seu projeto, execute, por exemplo:

$ npm install -S https://gitlab.com/brynn.mahsman/bubblegum.git

Para que isso funcione com o GitHub, parece que o lfs.url a usar é: https://api.github.com/lfs/<user or organization>/<repository name> , por exemplo:

$ git config -f .gitconfig lfs.url https://api.github.com/lfs/brynn.mahsman/bubblegum

Você pode querer instalar um gerenciador de credenciais para que não precise digitar seu nome de usuário e senha sempre que git-lfs for recuperar um arquivo. No Windows, eu uso o gerenciador de credenciais da Microsoft .

O .gitconfig que você confirma no repositório permite que os comandos git usados por npm install saibam o que usar lfs.url . Não tenho certeza se essa solução apenas mascara o fato de que npm install não consegue descobrir o lfs.url sem que você o especifique explicitamente em .gitconfig . Em outras palavras, quando executo o comando git clone https://gitlab.com/brynn.mahsman/bubblegum.git , git de alguma forma conhece o lfs.url mesmo se eu não tiver o .gitconfig no repositório.

    
por 14.01.2016 / 09:20

Tags