Jak zrobić pliki git commit w folderze z dowiązaniem symbolicznym


20

Mam dwa foldery:

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

W /home/me/code/projectfolderze, mam dowiązane staticdo/srv/www/projectfiles/

tj. /home/me/code/project/static/->/srv/www/projectfiles/

Kiedy próbuję zatwierdzić teraz, nie widzi on żadnych plików za dowiązaniem symbolicznym, a zamiast tego próbuje zatwierdzić samo dowiązanie symboliczne jako plik.

Jak zatwierdzić plik (np. /srv/www/projectfiles/style.css), Który znajduje się za dowiązaniem symbolicznym?

Odpowiedzi:


12

Obejściem tego problemu byłoby posiadanie / srv / www / projectfiles jako dowiązanie symboliczne do / home / me / code / project / static, więc git nie widzi żadnych dowiązań symbolicznych


Więc w zasadzie odwracasz logikę? Zachowaj wymagane pliki / foldery w folderze Git, a następnie umieść dowiązanie symboliczne w innym miejscu (gdzie znajdują się oryginalne pliki / foldery)?
Rus

@Rusl Tak właśnie to
user151019

Ale w jaki sposób mogę wykonać lokalne dostosowywanie plików? Czy powinienem mieć osobne repo dla każdej maszyny? Traci cały sens.
Ashnur

Cóż, lokalne dostosowywanie nie będzie możliwe
user151019

4

Jeśli używasz Linuksa, szczególnie podoba mi się rozwiązanie dostarczone przez GitBLSR . Jest to biblioteka ładowana przez LD_PRELOAD, która w przejrzysty sposób usuwa dowiązania symboliczne do plików i folderów poza repozytorium.

Aby zainstalować go dla lokalnego konta użytkownika, jest proste:

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

Spowoduje to skompilowanie biblioteki i utworzenie aliasu, takiego jak poniżej ~/.bashrc:

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

Użycie tego aliasu umożliwia transparentne odsyłanie linków.


1
To straszne! Ale działa dobrze, więc jest świetnie. Dziękuję Ci!
Kay jest rozczarowany w SE

To jest dziwne! Po prostu to uwielbiam
Marcos Besteiro López

2

Rozważ użycie punktu montowania, aby zamontować folder docelowy (do którego obecnie łączysz symbolicznie), aby pojawił się w miejscu, w którym chcesz go umieścić pod projektem git. Z powodzeniem zastosowałem to podejście.


1

Przenieś pliki do folderu i usuń dowiązanie symboliczne. Git nie przechodzi przez dowiązania symboliczne.

Zakładam (i ja), że tworzysz dowiązanie symboliczne do zestawu plików, których albo nie kontrolujesz, albo nie chcesz modyfikować, ponieważ nie wymagają one wersji.


1
Kontroluję te pliki. Są to arkusze stylów itp. I muszą znajdować się w katalogu, który serwer będzie serwował.
Macha,

1

Innym obejściem - jedynym, które znalazłem, które działa również dla katalogów - jest zmiana drzewa roboczego git dla określonych akcji.

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/
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.