JGit 3.7 支持部分签出吗?
Is partial checkout supported by JGit 3.7?
我正在使用 Jgit 3.7 从 Git 存储库导入文件。但我只想导入一组文件夹而不是全部。
我知道 Git 支持这个,但我想知道 Jgit 3.7 支持这个吗?如果是这样,谁能指导我。
根据设计,克隆的 git 存储库始终包含原始存储库的所有文件和文件夹。
使用本机 git,您可以创建一个 shallow clone (git clone --depth 1 ...
) but this feature is not yet implemented in JGit。
与其一般设计相矛盾,原生 git(从 1.7 版开始)允许您使用 sparse checkouts 创建部分克隆,但这在 JGit 中也是不可能的。
你在 JGit 中可以做的 - 一旦你克隆了一个存储库 - checkout 只有分支或提交的一些文件。
git.checkout().setStartPoint( "some-branch" ).addPath( "path/to/file" ).call()
基于@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();
我正在使用 Jgit 3.7 从 Git 存储库导入文件。但我只想导入一组文件夹而不是全部。 我知道 Git 支持这个,但我想知道 Jgit 3.7 支持这个吗?如果是这样,谁能指导我。
根据设计,克隆的 git 存储库始终包含原始存储库的所有文件和文件夹。
使用本机 git,您可以创建一个 shallow clone (git clone --depth 1 ...
) but this feature is not yet implemented in JGit。
与其一般设计相矛盾,原生 git(从 1.7 版开始)允许您使用 sparse checkouts 创建部分克隆,但这在 JGit 中也是不可能的。
你在 JGit 中可以做的 - 一旦你克隆了一个存储库 - checkout 只有分支或提交的一些文件。
git.checkout().setStartPoint( "some-branch" ).addPath( "path/to/file" ).call()
基于@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();