Besteci tarafından yüklenen Magento Modülündeki Sembol Bağlantılarını Git-Yoksay


11

Modülleri kullanarak yüklüyorum composer.phar.

Bu, publichtml/app/code/community(örneğin) içinde hedefi olan sembolik dosyalar oluşturur vendor/themodule....

Benim .gitignoresatıcı dizin hariç - ama bağlantılar tabii ki hala git sonunda.

Bu bağlantıları otomatik olarak hariç tutmanın kolay bir yolu var mı ? (her şeyi .gitignore'a manuel olarak eklemek dışında)

Ben require-devson sunucuda sona ermesi gereken bazı modüller var söylemek zorunda - yani bu bağlantıları olması en azından çok hoş olmaz.


1
Bu modman için de geçerli midir?
philwinkle

Modman ile her uzantı için genellikle git alt modüllerini kullanır ve sembolleri depoya eklersiniz. Bunları orada hariç tutmaya gerek yok, aksine, bir modman konuşlandırma senaryosunda çoğunlukla mantıklı olmazdı.
Vinai

1
@philwinkle Kısa bir süre önce güvenlik nedenleriyle (ör. değiştirilmiş dosyaları kolayca tespit edin), index.php ve Mage.php'deki değişiklikleri izlemek ve modman için de kesinlikle daha kolay Magento yükseltmeleri için Magento kökünü izlemeye başladım. .
ColinM

Yanıtlar:


8

En iyi ben bir besteci yükleme / güncelleme sonra bunu çalıştırmak oldu

$ find * -type l -not -exec grep -q "^{}$" .gitignore \; -print >> .gitignore

Komut git kök dizininde çalıştırılmalıdır. Zaten bulunmayan .gitignore dosyasına tüm sembolik bağlantıları ekler.


Bu yolun yolunu oluşturur ./foo/bar.. Bence ilkini kaldırmamız lazım .- sizin için böyle mi çalıştı?
Alex

Lider ile benim için iyi çalışıyor ., evet. Else sed to the rescue:find . -type l -not -exec grep -q "{}" .gitignore \; -print | sed 's/^\.\///'
Vinai

Aslında, bu grep kopar ... şey, belki de yolu temizlemek için iyi bir yol var ...
Vinai

1
Basit çözüm: find * .... Cevabımı güncelleyeceğim.
Vinai

3

Bu yöntem yalnızca izlenmeyen semboller ekler, bu nedenle yinelenen girişler, alt modüllerde bulunan veya başka bir şekilde yok sayılan veya kasıtlı olarak izlenen semboller eklenmeden tekrarlanabilir.

for f in $(git status --porcelain | grep '^??' | sed 's/^?? //'); do
    test -L "$f" && echo $f >> .gitignore;
    test -d "$f" && echo $f\* >> .gitignore;
done


1

Benim için çalışan @ColinM ve @Vinai'nin birleşik çözümü

for f in $(git status --porcelain | grep '^??' | sed 's/^?? //'); do
    if test -L "$f"
    then
        test -L "$f" && echo $f >> .gitignore;
    elif test -d "$f"
    then
        find ${f%/} -type l -not -exec grep -q "^{}$" .gitignore \; -print >> .gitignore
    fi
done

Son besteci yükleyicilerinin simgeleri otomatik olarak hariç tuttuğunu fark ettiniz mi?
Alex

Tabii, ama bazı projelerim besteci kontrolü altında değil. Burada sunulan çözümler sadece besteci projeleri için değil, sembolik bağlantıları tamamen göz ardı etmek içindir. Umarım birine yardımcı olur
martin_mageworx
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.