2013-11-21 19 views
7

Çok fazla bağımlılığı olan oldukça büyük bir projem var. Proje bir git deposunda saklanır ve bağımlılıklar alt modüller olarak bağlı ayrılmış git depolarında depolanır. Bağımlılıklar daha fazla bağımlılığa sahip olabilir (tekrar, git alt modülleri kullanılarak).Git depolarında bağımlılık yönetimi (alt modüller kullanarak)

Bu iyi çalışıyor. Ancak, iki bağımlılık hem üçüncü bir bağımlılık gerektiriyorsa, güncellemelerde sorun yaşıyorum.

bir bağımlılık grafiği aşağıdaki gibidir:

[Main Repo] 
    | 
    |-- [ModuleA] 
    |  | 
    |  \-- [ModuleC] 
    | 
    \-- [ModuleB] 
      | 
      \-- [ModuleC] 

Şu anda ben ModuleA ve ModuleB içinde alt modül işaretçisi güncelleyin. Bu şekilde, her iki modül de kendiliğinden kalır. Ancak, bu çok iş.

Bu sorun genellikle daha büyük projelerde nasıl çözülür? Bu tür bir probleme yaklaşmak için en iyi uygulamaları arıyorum.

Teşekkürler!

+0

Modülün, projemde nerede kullanıldığı her zaman her zaman aynı olduğundan emin olmak isterim (alt modüller mekanizmasının farklı sürümleri kontrol etmesini sağladığını biliyorum). –

cevap

1

Daha büyük bir projede, istediğiniz tüm bağımlılıkları bir düzeyinde tutmaktır.

Bu, ModuleA ve ModuleB'un kendi bağımlılıklarını ModuleC'a saklamadığı anlamına gelmez.

Geçerli ana ebeveyn repo, C için başvurulan sürüm olarak işlev gören ModuleC bağımlılığını içerir. Ana Repo gelen ModuleC birinden tarafından geçersiz gerekecektir ModuleA veya ModuleB için ModuleC için bağımlılık: aynı zamanda bir bağımlılık da iki Altmodüllerin biri için, senin durumunda, olarak geçersiz gereken zaman algılamasını sağlar
.

0

Belirli bir modülü diğer git deposundan çekmek için Quack kullanıyoruz. Sağlanan tüm depo tabanı olmadan kodu almamız gerekiyor - bu büyük depodan çok özel bir modül/dosyaya ihtiyacımız var ve güncellemeyi her çalıştırdığımız zaman güncellenmeliyiz.

yüzden

Konfigürasyonu, yukarıdaki örneğe

name: Project Name 

modules: 
    local/path: 
    repository: https://github.com/<username>/<repo>.git 
    path: repo/path 
    branch: dev 
    other/local/path/filename.txt: 
    repository: https://github.com/<username>/<repo>.git 
    hexsha: 9e3e9642cfea36f4ae216d27df100134920143b9 
    path: repo/path/filename.txt 

profiles: 
    setup: 
    tasks: ['modules'] 

, ilk modül yapılandırma belirtildiği şekilde sağlanan github deposundan 1 dizini oluşturmak, diğeri ise oluşturun, bu şekilde elde Verilen repodan dosya çekmek ve oluşturmak.

Diğer geliştiriciler sadece

$ quack setup 

çalıştırmak için gereken Ve yukarıdaki yapılandırmaları kodu çeker.

Bu, birden çok modülü yeniden kullanma sorununuzu düzeltir.

İlgili konular