2016-03-26 14 views
0

Çok fazla gitme reposundan oluşan çok hızlı bir şekilde hareket eden 3. parti projeyi taşıyorum/koruyorum. Yönetici olarak repo kullanıyorlar ve sistemi oldukça iyi çalışıyor. Benimki ancak çok değil. Porting sırasında, bir seferde çoklu reposları değiştiriyorum ve kongre adını yazarak bu değişiklikleri bir araya getirmeye çalışıyorum. Ama bu çok zaman alıcıdır. Ve şimdi organizasyonumdan da yeni bir gereksinim var. İnsanlar uzun süren gazillion git reposlarını çekmekten memnun değiller. Bu yüzden, herşeyi tek bir git repo ile birleştirmemi ve reposun kullanılmayan kısımlarını kaldırmamı istiyorlar (oldukça fazla test kodu ve altın çıkışı var).Birden fazla dış git reposunu bir git repo'ya birleştirmek ve hala kökenleri takip edebilmek

Şimdi soru şu: Bu yapılabilen git? Bu

A-B-C 
     \ 
     L1 

    D-E-F 
     \ 
     L1'-L2 

dönüştü Olabilir:

A-D-E-B-C-F-L1-L2 

dış repo dan çekin ve rebase hala mümkün iken?

Bunun agresif olduğunu ve muhtemelen en iyi fikir olmadığını biliyorum; ama yine de, yamalı kaynakların tamamının sığ bir kopyası olacak ve bir geçmişi olmayacak olan başka bir git repo'yu korumaktan kaçınmaya çalışıyorum.

+1

Sanırım sorgunuz görüşe dayalı. Bazı insanlar, bazılarını zaten farkettiğiniz gibi, repo'yu beğenebilirler. Aynı şey [git submodule] (https://git-scm.com/docs/git-submodule) ve [git birleştirme alt ağacı] (https://git-scm.com/docs/git-merge) için de geçerlidir. . Subtree-birleştirme sizin durumunuz için işe yarayabilir, ama eğer sadece bazı değişiklikleri geri akışa itmemeniz gerekiyorsa (otomatize etmek hala mümkündür, fakat bazı acılarla) – user3159253

+0

başka bir olası çözüm yerel otomatik oluşturmaktır. Tüm depoların aynaları, böylece bir geliştirici repo (s) senkronizasyonu, LAN'ınızda daha hızlı gerçekleştirilecektir. – user3159253

+0

Şey, gerçekten bir fikir istemiyordum. Bu biraz git sihir tarafından teknik olarak mümkün olup olmadığını merak ediyorum. Bunu parçalarını filtre-şubesi ile yapabilirim. Ama ağacın ucunu nasıl güncel tutacağımı anlayamadım. –

cevap

0

git subtree çözümünü belirtmeliyim. Benim dağıtımımda diğer git alt komutları arasında kullanılabilir, bu durumun içeriğinden almanız gerekebilir. git subtree merge'dan farklıdır ve büyük olasılıkla son kullanıcılar ve depo yöneticileri için daha "sorunsuz" bir deneyim sağlar.

+0

Sanırım alt ağaç istediğime ulaşabileceğim kadar yakın. Kullanırken yeniden oluşturabilirim gibi görünmüyor. Dış kaynaklardan her çıkardığım zaman birleşiyor gibi görünüyor. Ve ben de bireysel dosyalarda günlükleri alamıyorum. Bu yüzden kullanmamaya karar verdim. Ama doğru yöndeydi. Teşekkürler –