部分结账由JGit 3.7支持吗?

时间:2015-04-08 04:26:00

标签: jgit

我正在使用Jgit 3.7从Git存储库导入文件。但我想只导入一组文件夹而不是全部。 我知道Git支持这个,但我想知道Jgit 3.7支持相同吗?如果是这样,有人可以指导我。

2 个答案:

答案 0 :(得分:1)

按照设计,克隆的git存储库始终包含原始存储库的所有文件和文件夹。

使用原生git,您可以创建shallow clonegit clone --depth 1 ...),但此功能为not yet implemented in JGit

与其一般设计相反,原生git(自1.7版本开始)允许您使用sparse checkouts创建部分克隆,但这在JGit中也不可能是开箱即用的。

你可以在JGit中做什么 - 一旦你克隆了一个存储库 - 就是checkout只有一些分支或提交的文件。

git.checkout().setStartPoint( "some-branch" ).addPath( "path/to/file" ).call()

答案 1 :(得分:0)

基于@rüdiger-herrmann的回答:

String url = "https://github.com/renaud/solr_noLenghNormSimilarity";
String hash = "802558f58add3a1f5b33f04254194bd7cd59b27f";
String subPath = "src/org";
String dest = "myclone";

File localPath = new File(dest);

Git gitRepo = Git.cloneRepository().setURI(url).setDirectory(localPath).setNoCheckout(true).call();
gitRepo.checkout().setStartPoint(hash).addPath(subPath).call();
gitRepo.getRepository().close();
相关问题