标签: jgit

使用 jgit 获取 Git 失败:远程没有可用于获取的 <branchname>

我有一个位于 的裸仓库main.git,我试图foo在另一个仓库中获取一个分支(比如说)test,它刚刚被git init'd:

fetchtest/
  |- main.git/
  |- test/
       |- .git/
Run Code Online (Sandbox Code Playgroud)

定期使用Git命令,我可以做一个git fetch ../main.git foo:foo,这将创建一个新的分支footest/,并获取了分支所需要的对象。然后我想做同样的事情,但使用 JGit 以编程方式,即不使用 git CLI 而只使用 Java 代码。我无法使用 git CLI:

Git git = Git.init().setDirectory(new File("fetchtest/test/")).call();

git.fetch().setRemote(new File("../main.git"))
           .setRefSpecs(new RefSpec("foo:foo"))
           .call();
Run Code Online (Sandbox Code Playgroud)

但它只是错误:

org.eclipse.jgit.api.errors.TransportException: Remote does not have foo available for fetch.
    at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:137)
    // ......
Caused by: org.eclipse.jgit.errors.TransportException: Remote does not have foo available for fetch.
    at org.eclipse.jgit.transport.FetchProcess.expandSingle(FetchProcess.java:349)
    at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:139)
    at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:113)
    at …
Run Code Online (Sandbox Code Playgroud)

java git version-control git-fetch jgit

5
推荐指数
1
解决办法
1万
查看次数

什么是 git 的广告引用?

jgit 中有一个 org.eclipse.jgit.transport.OperationResult#getAdvertisedRefs。该术语似乎不是 jgit 特有的,但我找不到对广告参考的任何精确描述。

最好的问候,尤金。

git jgit

5
推荐指数
1
解决办法
2115
查看次数

eclipse:"重新索引存储库工作空间"或"计算存储库工作空间的Git状态"

我正在使用eclipse Juno,昨天我注意到我的电脑变得非常热.我检查了CPU使用率,看它是100%.Eclipse是罪魁祸首,忙于"重新索引存储库工作区".半小时后它没有完成,我的机器几乎融化了,我搜索并发现了类似的问题:

重新索引存储库循环 - 而不是Maven

Eclipse挂起"重新索引(完全)存储库{username}"

事情是我没有使用git.通过我不想要的东西的声音,因为它会占用我所有的CPU.我删除了〜/ git,删除了一个使用git的项目,检查了〜/ .git下的任何文件,从eclipse插件中删除了egit和jgit,它仍然在发生.

我可以每次都停止进程,但现在似乎无法构建工作区.

所以我决定升级到开普勒,现在我遇到了一个类似的问题:

"计算存储库工作空间的Git状态"

它再次占据了我100%的CPU,并威胁要放火烧我的桌子.

我甚至没有任何开放的git项目.

我该如何阻止这个愚蠢的事情?每次我停止进程,但如果我然后尝试清理重建或打开一个项目,它会再次启动.

eclipse git cpu-usage egit jgit

5
推荐指数
1
解决办法
1万
查看次数

我如何产生所有可能的 git-status?

背景:

我们目前正在使用 git 在我正在开发的 Web 应用程序中进行源代码管理。有一个编辑器,因此还有一个 git 的 Web 界面。

我们的用例之一是人们还可以从命令行管理他们的 git 存储库,因此 Web 界面需要能够以某种方式处理它发现存储库的任何奇怪状态。

题:

为了进行测试,获得一个包含所有可能状态的文件的 git 存储库会很棒,这样我就可以验证是否处理了所有可能的条件。阅读“man git-status(1)”时,我计算了一个文件可能存在的 24 个状态(不包括被忽略)。

我只知道如何创建这些状态中的 17 个。

这是我不知道如何重现的状态的 XY 代码(请参阅git-status)。

D           M    deleted from index
C        [ MD]   copied in index
D           D    unmerged, both deleted
A           U    unmerged, added by us
U           A    unmerged, added by them
Run Code Online (Sandbox Code Playgroud)

github 上有一个带有 ruby​​ 脚本的要点,它创建了我已经知道如何重现的每个状态,我很想完成它。

git jgit

5
推荐指数
1
解决办法
367
查看次数

在 JGit 中确定跟踪分支

我想使用 JGit 确定 HEAD 的远程跟踪分支。

在直接 git 中,我可以这样做:

git rev-parse --abbrev-ref --symbolic-full-name @{upstream}
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 JGit 中做到这一点?

jgit

5
推荐指数
1
解决办法
417
查看次数

maven jgitflow release-start目标将行结尾更改为CRLF

我正在Windows项目的行尾设置为LF的计算机上工作。jgitflow:release-start运行命令后,将使用新版本更新poms,但poms中的行尾也将更改为CRLF。仅提及*.xml text eol=lf.gitattributes中有一行。

有谁知道如何防止这种情况?

line-endings pom.xml maven jgit

5
推荐指数
1
解决办法
1047
查看次数

使用 JGit 中止合并

这非常简单:如何git merge --abort在 JGit 中模拟命令 ?我需要在真正合并之前“预览”冲突

git jgit

5
推荐指数
1
解决办法
900
查看次数

JGit:RevWalk 顺序覆盖起点

我正在将 JGit 用于我的一个涉及 git 深入使用的项目。

我的目标是使用 aRevWalk能够按时间顺序迭代存储库中的提交,从特定提交开始。我设法分别实现了这两个目标:

  • 通过应用时间顺序 RevSort.REVERSE
  • 通过调用开始 RevWalk.markStart(RevCommit c)

我的问题是,当我尝试将两者结合起来时,似乎 RevSort 覆盖了 markStart,而 RevWalk 总是在我指定的提交的提交开始处开始。

这个片段显示了我所拥有的:

import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.internal.storage.file.FileRepository;
import org.eclipse.jgit.revwalk.RevWalk;
import org.eclipse.jgit.revwalk.RevCommit;
import org.eclipse.jgit.revwalk.RevSort;

import java.io.IOException;
import org.eclipse.jgit.errors.AmbiguousObjectException;
import org.eclipse.jgit.errors.MissingObjectException;

public class Main {

    public static void main(String[] args) throws IOException, AmbiguousObjectException, MissingObjectException {
        final String repositoryPath = args[0];
        final String commitID = args[1];
        final Repository repository = new FileRepository(repositoryPath + "/.git");
        final RevWalk walk = new RevWalk(repository);
        walk.sort(RevSort.REVERSE);
        walk.markStart(walk.parseCommit(repository.resolve(commitID)));
        for (final RevCommit …
Run Code Online (Sandbox Code Playgroud)

java jgit

5
推荐指数
1
解决办法
653
查看次数

如何在jgit中调用git show --first-parent?

我需要从master中获取不属于merge类型的提交,而不是来自其他分支(它们直接放在master上).git命令是

git log --no-merges --first-parent

我怎么能用JGit做到这一点?我设法获得了不使用类型合并的提交

RevFilter.NO_MERGES
Run Code Online (Sandbox Code Playgroud)

但是如何才能获得直接提交到master分支的提交?

java git jgit

5
推荐指数
2
解决办法
1080
查看次数

如何在JGit中编写git log --stat命令

我有以下git命令:

git log --stat=1000 --all > gitstat.log
Run Code Online (Sandbox Code Playgroud)

有可能在JGit中实现吗?

如果是,用JGit编写的等效方法是什么?

java jgit

5
推荐指数
1
解决办法
1057
查看次数

标签 统计

jgit ×10

git ×6

java ×4

cpu-usage ×1

eclipse ×1

egit ×1

git-fetch ×1

line-endings ×1

maven ×1

pom.xml ×1

version-control ×1