git sabit bağlantılar - bir dosyanın sabit bir bağlantı olduğunu biliyor mu?


16

Dosyaları düzenlemek için sembolik bağlantılar yerine sabit bağlantılar kullanmaya başladım ...

Bunları kategorilere ayırmak ve hangilerini basmak istediğimi belirtmek için çektiğim resimler için yapıyorum.

Resimlerimi yedeklemek için git kullanıyorum ve git depo yaklaşık 1GB büyüdükçe yeni dosyalar olduklarını düşündüm. Git dosyayı yeniden adlandırmak için kullanmazsam, yeniden adlandırmaları algılamakta çok başarılıdır, ancak sabit bağlantıları da işler mi?

Walter


2
Tüm normal dosyalar sabit bağlantılardır. Belki de "birden fazla sabit bağlantılı dosyalar" demek istediniz?
Ignacio Vazquez-Abrams

Evet, demek istediğim buydu.
Walter

1
Yanlışsam beni düzeltin, ama daha fazla parça gitmiyor contentmu? Dosyaların aynı içeriğe sahip olması neden önemlidir - sonuçta, teknik olarak aynı dosyadır.
yeni123456

1
Buna rastlayan insanlar için - belki de bunun yerine Sembolik bağlantılar kullanmayı düşünün? stackoverflow.com/q/954560/492
CAD bloke

Etiket tabanlı bir dosya sistemi istediğiniz gibi geliyor.
Nayuki

Yanıtlar:


14

Bağlantılı izlenen dosyaları çoğalt, Git'in nesne deposunun çok büyümesine neden olmaz, çünkü her bağlantı aynı blob nesnesi tarafından temsil edilir. Bununla birlikte, çalışma ağacınız kopuk bağlantılar nedeniyle büyüyebilir.

Git, izlenen, çalışan ağaç dosyalarının aynı dosyaya sabit bağlantılar olup olmadığını izlemez.

Git, bu yol adlarındaki içeriği değiştirmeyi veya yol adlarının dizin girişlerini silmeyi içeren herhangi bir şey yapmasını istemezseniz, çoğaltılmış, izlenen, çalışan ağaç dosyalarını tek başına bırakacaktır. Ancak, eski bir taahhüdü veya dalı ödeyip (sonra) normal, en son şubenize / taahhüdünüze geri dönecek olsaydınız, Git sabit bağlantıları “etkisiz hale getirir” (etkilenen yol adlarını yenisiyle (ancak aynı ), birden çok bağlantılı durumunuzu yeniden oluşturmak yerine).

Birden çok bağlantılı durumunuzu kurtarmak için, özdeş dosyaları taramak ve dosyalardan herhangi birine bağlamak için bir program yazabilirsiniz. Tüm bağlantılar çalışma ağacının kendisinde değilse veya en azından kolayca tanımlanabilir bir “harici” konumda değilse, bu tür bir “yeniden bağlama” işlemi daha karmaşık olabilir (yani, bağlantı oluşturuyorsanız bağlantıları kurtarmak zor olacaktır Ana dizininizin her yerinden “yedek” bir depoya “rastgele” dosyalar ve çalışma ağacını değiştirmek için Git'i kullanarak).

Fikir Git posta listesinde ortaya çıktı:


Debian tabanlı linux'lar için, bu yeniden bağlanma işlemini gerçekleştirebilen sabit bağlantı aracı ( paketleri.debian.org/search?keywords=hardlink ) vardır. ne yazık ki, çok hızlı değil
Daniel Alder

Her hardlinkgece bir iş olarak koşuyorum /var/lib/jenkins.
Amedee Van Gasse
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.