2015-01-07 20 views
7

JGit içinde, bir dalı zorlamak ve yukarı akış referansını (izleme) eklemek için bir yol arıyorum.JGit - Bir dalı iterek ve yukarı yönde ekleme (-u seçeneği)

push command'a -u veya --set-upstream seçenektir.

PushCommand sınıfında, bunu yapmasına izin veren bir yöntem göremiyorum.

Lütfen bunu nasıl yapabileceğimi söyler misiniz?

PushCommand pushCommand = git.push() 
        .setRemote(remoteAlias) 
        .setRefSpecs(spec); 

cevap

6

JGit PushCommand bu işlevi (henüz) sunmuyor, ancak --set-upstream yaptığınız gibi depo yapılandırmasını değiştirebilir. Eğer (soru anlaşılacağı gelen pasajı gibi) setRemote() uzaktan takma geçerseniz

, bunu böyle ust baş ayarlamalısınız:

StoredConfig config = git.getRepository().getConfig(); 
config.setString(CONFIG_BRANCH_SECTION, "local-branch", "remote", "remote-alias-name"); 
config.setString(CONFIG_BRANCH_SECTION, "local-branch", "merge", "refs/heads/name-of-branch-on-remote"); 
config.save(); 

Bu, bu yapılandırma bölümünde sonuçlanacaktır

[branch "local-branch"] 
remote = remote-alias-name 
merge = refs/heads/name-of-branch-on-remote 

uzaktan (henüz yapılandırılmamış değilse yani hiçbir bölüm [remote "remote-alias-name"], ayrıca böyle bir bölüm oluşturmak zorunda kalacak olan Örneğin, örneğin:.

config.setString(CONFIG_REMOTE_SECTION, "remote-alias-name", "url", "url-of-remote"); 
config.setString(CONFIG_REMOTE_SECTION, "remote-alias-name", "fetch", "ref-spec"); 

Sabitler ConfigConstants sınıfında tanımlanmıştır.

+0

İyi çalışıyor, teşekkürler. Şimdi uzak şubeyi belirtmeden bir getirme yapabilirim. Ama ben git dalı -vv yaptığım zaman neden izlenen şube bilgileri yok anlamıyorum. Neden biliyor musun ? Belki de izlenen bilgi gitconfig dosyasına kaydedilir. – ascott

+0

"CreateBranchCommand" ve dal başlangıç ​​noktası olan bir şube oluşturursanız, yeni dalın başlangıç ​​noktasını "setUpstreamMode()" ile takip etmesi gerekip gerekmediğini belirtebilirsiniz. senin sorunun cevabı bu mu? –

+0

Sonunda sorun yok, benim hatamdı! Uzaktan kumandayı yapılandırdığımda remoteConfig.addFetchRefSpec'i çağırmayı unuttum, bu yüzden git dalı -vv adını verdiğimde, izlenen dalı bana göstermedi ... Cevabınız için teşekkürler mükemmeldi. – ascott