2016-04-06 24 views
0

Bunu neden yapıyorum? Ayrı bir depoda, mümkün olan en kolay şekilde senkronize etmek istediğim bir klasör var.Mevcut ağaca dizin eklemek mümkün mü

Git Internals Git Objects belgesine bağlı olarak, klasörlerin git'te yalnızca altyazı oldukları izlenimindeydim. Ve zaten varolan ağacın işaret ettiği bir dizin oluşturmanın mümkün olacağını varsayıyordu.

Bu denedim budur:

git update-index --add --cacheinfo 040000 b5fd8e9305 rc 

b5fd8e9305 ağacın kimliğidir. Bu yaklaşım sadece boş dizin oluşturdu. Yani soru olurdu: git update-cache komutunu kullanarak tipe subtree eklemek mümkün mü?


Ben de denedim yöntem Git subtree merging: low level plumbing makalede anlatılan. Yine de iyi çalışıyor, ancak hala neden beklediğim gibi çalışmıyor update-index. ağaç daha ağaç içerebilir itiraz etse

cevap

1

, endeksi özel ve normalde hiçbir (referanslar için) İçinde ağaç nesneleri vardır.

Ağaçları içine sürmek mümkündür ama iyi davranmazlar (magically change into gitlink entries).

Git bir dizinden yeni bir işlem gerçekleştirdiğinde, her yeni ağaç nesnesini anında oluşturur. Yani, dizin, bu noktaya kadar depoya halihazırda eklenen blobların kimliklerini (SHA-1'ler) ve bunların altında tutulmaları gereken yol adlarını içerir; ve git commit - daha doğrusu, git write-tree - dizindeki yol adlarına (ve +x veya -x kip bitine) göre gerekli olan ağaç kümesini yapılandırır. Taahhüt kodu daha sonra üst düzey ağaç anlamına gelen taahhüdün kendisini yapabilir.

(Alt satır, olduğu gibi, dizini ağacın yerine her blob kimliği ile güncellemeniz gerektiğidir.)

İlgili konular