1
我想完成我使用JGit的自定義git-push ant任務,它應該推送所謂的分支到遠程存儲庫,但它似乎沒有工作。自定義混帳推螞蟻任務不會在JGit工作
這裏有一個任務我的Java代碼:
public void setRepository(String repository) {
this.repository = repository;
}
public void setPassword(String password) {
this.password = password;
}
public void setUsername(String username) {
this.username = username;
}
public void setUri(String uri) {
this.uri = uri;
}
public void setBranch(String branch) {
this.branch = branch;
}
public void execute() throws BuildException {
try{
Git git = Git.open(new File(repository));
CredentialsProvider cp = new UsernamePasswordCredentialsProvider(username, password);
RefSpec spec = new RefSpec("refs/heads/" + branch + ":refs/heads/" + branch);
PushCommand pushCommand = git.push();
pushCommand.setCredentialsProvider(cp).setRemote(uri).setForce(true).setRefSpecs(spec).call();
}catch (Exception e) {
log(e, Project.MSG_ERR);
throw new BuildException("Could not push repository: " + e.getMessage(), e);
}
下面是來自Apache Ant構建文件的行:
<gitpush
repository="./myrepo"
uri="ssh://[email protected]/repo/project.git"
branch="mybranch"
password="77CJr2xr" />
我創建了一個新的分支,並嘗試運行此任務。該任務無例外運行,但對遠程存儲庫沒有影響。我對git很陌生,所以這可能是一個非常愚蠢的錯誤。我在RefSpec中做錯了什麼?
'PushCommand#call()'返回一個'PushResult',它繼而保存'RemoteRefUpdate'的集合。你檢查過這些嗎?他們應該給你一個線索實際上做了什麼。 –
我得到的消息:'錯誤:拒絕非快速轉發/頭/ mybranch(你應該先拉)'試圖谷歌回答,但沒有運氣。也許我做了一些錯誤的創建新的空分支使用'git checkout --orphan mybranch'與'git rm --cached -r .'然後添加一些文件到它? – JulioBordeaux