2011-02-23 28 views
5

Bitbucket depomu olan bir projem var ve bu bir subrepo olarak dahil ettiğim başka bir projeye bağlı. Şimdi, mazerete erişim hakkım yok, ne de ihtiyacım var ya da ihtiyacım var - bu sadece çekişmeli bir ilişki.Mercurial subrepo ve göreceli yol

Ana depoya bastığınızda, alt kaynakları da zorlamaya çalışacağını anlıyorum. Bunu yapamayacağımdan, bağımlı projenin yerel bir kopyasını ana depo diziniyle aynı seviyede çektim.

Main/   ; pushes to https://mine.org/Main 
    .hg/ 
    .hgsub 
    Lib/ 
    SubRepo/ ; clone of Main/../SubRepo/ 
     .hg/ 

SubRepo/  ; local copy of https://forbidden.org/SubRepo 
    .hg/ 

.hgsub içeriği gibi bir şey olduğunu,

Lib/SubRepo = ../SubRepo 

Sonra klonlanmış,
~/path/to/Main $ hg clone ../SubRepo/ Lib/SubRepo 

Şu ana kadar çok iyi: Özünde, Aşağıdaki düzeni var. Sorun şu ki, bunu ayarladıktan ve değişiklikleri tamamladıktan sonra, Ana Mercurial'ı, SubRepo'yu https://mine.org/SubRepo'a zorlamaya çalışacak şekilde itmeye çalışacağım, böylece tüm itme işleminde başarısız oluyor.

Eksik olduğum bir şey var mı?

cevap

4

bir https://mine.org/SubRepo - Bunu reklamını yapmak istemiyorsanız her zaman onun .hg/hgrc dosyada [web] bölümünde bunun için hide açabilirsiniz. Kullandığım kalıp, ana repo'yu ve bunları kullanacağınız her yerde aynı mizanpajtaki tüm alt bileşenleri klonladığınız yer: hem geliştirme kutunuz hem de web'e bakan hgweb yüklemesi.

Alternatif olarak, onun içinde böyle bir şey ile Main/.hg/hgrc bir [subpaths] bölümünü kullanabilirsiniz: Eğer itme için derrived hedefi yakalamak ve o kazanan bir yerde doğru tutun izin vermeli

[subpaths] 
https://mine.org/SubRepo = https://forbidden.org/SubRepo 

İtmeye izin vermeyin, hiçbir şeyin değişmediğini görmenizi sağlar, böylece itme devam edebilir.

+0

Teşekkürler. Ben bununla gideceğim düşünüyorum, keşke Mercurial başlangıçta beklediğim şekilde göreceli yolları tedavi etmeme izin verecekti. – Santa

+0

Evet, Mercurial'ın git subrepos ve svn subrepos için desteğini aldığında daha da zor bir problem. Web sunucunuzda 'Redirect/SubRepo https: // forbidden.org/SubRepo' gibi bir 'Yönlendirme' yerleştirebileceğinizi düşünüyordum. –

1

Mercurial'in yaptığı şeyin meşru olduğu gibi görünüyor: .hgsub'da listelenen yolları kullanarak, Main'den bir seviye olan 'SubRepo' adlı bir dizine basmaya çalışıyor. Belli ki senin istediğin gibi değil, bu yüzden muhtemelen burada sihir çalışması gerekecek. Bunu destekleyecek durumunda, böyle C:/Forbidden/Subrepo gibi bir yerde forbidden.org en depo yerel kopyasını yerleştirmek

  1. , ve .hgsub bu mutlak yolu kullanın: Ben iki seçenekten düşünebiliriz. Mercurial bunu zorlayabilecek ve işe yarayacaktır.

  2. Bu repo üzerinde herhangi bir değişiklik yapmazsanız, gerçek forbidden.org URL'sini subrepo adresiniz olarak dahil etmede sorun yoktur. Subrepoda herhangi bir değişiklik yoksa, itmeniz başarılı olmalıdır. Tabii ki, bu oldukça el ile bir seçenek ve daha büyük bir takımda zorlamak imkansız olurdu. Eğer kazara subrepoya bir değişiklik yaptıysanız, bunu yapmak için histedit veya MQueues kullanın ve bunu subrepos ile zor olabilir. Sadece oluşturmaz Neden