Symlinked klasöründeki git kesinleştirme dosyalarını nasıl yapabilirim


20

İki klasörüm var:

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

Gelen /home/me/code/projectklasöründe, ben sembolik olarak var staticetmek/srv/www/projectfiles/

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

Şimdi işlemeye çalıştığımda, symlink'in arkasındaki dosyaları görmüyor ve bunun yerine symlink'in kendisini bir dosya olarak işlemeye çalışıyor.

/srv/www/projectfiles/style.cssSymlink'in arkasındaki bir dosyayı (örneğin ) nasıl işlerim ?

Yanıtlar:


12

Geçici çözüm / srv / www / projectfiles / home / me / code / project / static için bir sembolik bağlantı olacaktır.


Yani temelde mantığı tersine çeviriyor musunuz? Gerekli dosyaları / klasörleri Git klasöründe tutup başka bir yere (orijinal dosyaların / klasörlerin bulunduğu yere) bir simge bağlantısı mı koyuyorsunuz?
RusI

@Rusl Evet aynen öyle
user151019

Ama sonra dosyaları yerel olarak nasıl özelleştirebilirim? Her makine için ayrı repo olmalı mı? Bütün noktayı kaybeder.
Ashnur

Peki yerel özelleştirme git olmayacak
user151019

4

Linux kullanıyorsanız, özellikle GitBLSR tarafından sağlanan çözümü seviyorum . LD_PRELOAD aracılığıyla yüklenen ve bir havuzun dışındaki dosya ve klasörlere sembolik bağlantıları dereferences eden bir kitaplıktır.

Yerel bir kullanıcı hesabına yüklemek basittir:

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

Bu, kütüphaneyi derler ve aşağıdakine benzer bir takma ad oluşturur ~/.bashrc:

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

Bu takma adı kullanmak, şeffaf bağlantıyı silme işlemini etkinleştirir.


1
Bu korkunç! Ama iyi çalışıyor, bu yüzden harika. Teşekkür ederim!
kay,

Bu tuhaf! Ben düz seviyorum
Marcos Besteiro López

2

Git klasörünün altında olmasını istediğiniz yerde görünmesi için hedef klasörü (şu anda bağlandığınız) bağlamak için bir bağlama noktası kullanmayı düşünün. Bu yaklaşımı başarıyla kullandım.


1

Dosyaları klasöre taşıyın ve sembolik bağlantıyı kaldırın. Git sembolik bağlantıları çaprazlamaz.

Bu (ve ben), denetlemediğiniz veya değiştirmek istemediğiniz bir dosya kümesine bağlandığınızı varsayarız, çünkü bunların sürümlendirilmesi gerekmez.


1
Bu dosyaları kontrol ediyorum. Bunlar stil sayfaları vs.'dir ve sunucunun sunucu olarak göndereceği bir dizinde olmaları gerekir.
Macha

1

Başka bir geçici çözüm - dizinler için de çalışan bulduğum tek çözüm - git çalışma ağacını belirli eylemler için değiştirmektir.

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/
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.