Como posso fazer arquivos de confirmação do git em uma pasta com link simbólico

19

Eu tenho duas pastas:

  • /home/me/code/project/
  • /srv/www/projectfiles/

Na /home/me/code/projectpasta, vinculei o link staticpara/srv/www/projectfiles/

ie /home/me/code/project/static/->/srv/www/projectfiles/

Quando tento confirmar agora, ele não vê nenhum dos arquivos por trás do link simbólico e, em vez disso, tenta confirmar o link simbólico como um arquivo.

Como comprometo um arquivo (por exemplo /srv/www/projectfiles/style.css) s que está por trás do link simbólico?

Macha
fonte

Respostas:

12

Uma solução alternativa seria fazer com que / srv / www / projectfiles seja um link simbólico para / home / me / código / projeto / estático, para que o git não veja links simbólicos

user151019
fonte
Então você está basicamente invertendo a lógica? Mantenha os arquivos / pastas necessários na pasta Git e coloque um link simbólico em outro lugar (onde os arquivos / pastas originais costumavam residir)?
Rusi
@Rusl Sim, exatamente isso
user151019 15/02/19
Mas então como posso fazer a personalização local dos arquivos? Eu deveria ter um repositório separado para cada máquina? Perde o ponto inteiro.
Ashnur 28/08/19
Bem, a personalização local não estará no git
#
3

Se você estiver usando Linux, eu particularmente gosto da solução fornecida pelo GitBLSR . É uma biblioteca carregada via LD_PRELOAD que desreferencia de forma transparente links simbólicos para arquivos e pastas fora de um repositório.

Para instalá-lo para uma conta de usuário local é simples:

git clone https://github.com/Alcaro/GitBSLR.git
cd GitBSLR
./install.sh

Isso irá compilar a biblioteca e criar um alias como o seguinte em ~/.bashrc:

alias git="LD_PRELOAD=/path/to/gitbslr.so git"

O uso desse alias permite a desreferenciação de links transparentes.

Marca
fonte
1
Isso é terrível! Mas funciona bem, então é ótimo. Obrigado!
kay está decepcionado em SE
Isso é estranho! Eu simplesmente amo isso
Marcos Besteiro López
2

Considere usar um ponto de montagem para montar a pasta de destino (à qual você atualmente faz o link simbólico) para aparecer no local em que deseja, abaixo do projeto git. Eu usei essa abordagem com sucesso.

Tony Garland
fonte
1

Mova os arquivos para a pasta e remova o link simbólico. O Git não percorre links simbólicos.

Ele (e eu) assumiria que você está vinculando um conjunto de arquivos que você não controla ou não deseja modificar, portanto, eles não precisam ser versionados.

Josh K
fonte
1
Eu controlo esses arquivos. São as folhas de estilo, etc., e precisam estar em um diretório que o servidor servirá.
Macha
1

Outra solução alternativa - a única que descobri que também funciona para diretórios - é alterar a árvore de trabalho do git para as ações específicas.

git --work-tree=/home/me/code/project/ add /home/me/code/project/static/
git --work-tree=/home/me/code/project/ commit /home/me/code/project/static/
Ohad Cohen
fonte