Il JGit PushCommand
non offre questa funzionalità (ancora), ma è possibile modificare la configurazione del repository come --set-upstream
avrebbe fatto.
Se si passa un alias remoto per setRemote()
(come il frammento della domanda suggerisce), è necessario impostare il monte modo:
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();
Ciò comporterà questa sezione di configurazione
[branch "local-branch"]
remote = remote-alias-name
merge = refs/heads/name-of-branch-on-remote
Se il telecomando non è stato ancora configurato (ad esempio non esiste una sezione [remote "remote-alias-name"]
, sarà necessario creare anche tale sezione. Ad esempio, ad esempio:
config.setString(CONFIG_REMOTE_SECTION, "remote-alias-name", "url", "url-of-remote");
config.setString(CONFIG_REMOTE_SECTION, "remote-alias-name", "fetch", "ref-spec");
Le costanti sono definite nella classe ConfigConstants
.
fonte
2015-01-07 17:40:32
Funziona bene, grazie. Ora posso eseguire il recupero senza specificare il ramo remoto. Ma non capisco perché non ho le informazioni del ramo tracciato quando faccio un ramo git -vv. Sai perché ? Forse è perché le informazioni tracciate sono memorizzate nel file gitconfig. – ascott
Se si crea un ramo con 'CreateBranchCommand' e il punto di inizio ammacca un ramo, è possibile specificare se il nuovo ramo deve tracciare il punto di partenza tramite' setUpstreamMode() '. Questo risponde alla tua domanda? –
Finalmente è OK, è stata colpa mia! Quando ho configurato il mio telecomando ho dimenticato di chiamare remoteConfig.addFetchRefSpec, ecco perché quando ho chiamato git branch -vv, non mi ha mostrato il ramo tracciato ... Grazie per la tua risposta è stato perfetto. – ascott