Seb*_*Seb 3 git api fetch jgit
我在一个项目中使用JGit,我想实现一个与git --fetch all. 该JGit API文档提供了三种可供选择提取操作叫setRefSpecs(...)。所有替代方案都需要开发人员定义RefSpecs要更新的具体内容。
我希望我必须查询所有可用的存储库RefSpecs并将它们聚合为一个组合 fetch 调用(类似于使用 JGit 获取所有分支
)。但是,我不明白如何将 aRef转换为 a RefSpec。我很感激这里的任何指针。
与此非常相关,我也不确定如何修剪已远程删除的本地分支 ( fetch --prune)。我是否正确假设该设置setRemoveDeletedRefs可以true实现这一目标?
根据 git fetch 文档,--all将从所有(配置的)遥控器中获取分支。
JGitRemoteListCommand可用于获取所有已配置遥控器的列表。对于每个遥控器,您需要获取分支。我假设,refspec fetch 所述分支来自相应的远程配置。
使用 JGit API,这将是
Git git = ...
List<RemoteConfig> remotes = git.remoteList().call();
for(RemoteConfig remote : remotes) {
git.fetch()
.setRemote(remote.getName())
.setRefSpecs(remote.getFetchRefSpecs())
.call();
}
Run Code Online (Sandbox Code Playgroud)
当然,您可以使用自己的 refspec,例如refs/heads/*:refs/remotes/<remote-name>/*同步所有分支。
回答你的第二个问题:是的,FetchCommand::setRemoveDeletedRefs用于修剪本地分支,相当于--prune.
| 归档时间: |
|
| 查看次数: |
2214 次 |
| 最近记录: |