如果 master 不在,我如何让 jgit 找到不同的负责人?

How do I get jgit to find a different head if master isn't there?

我正在使用此代码创建包含已更改文件的 powerpoint:

try (Git git = new Git(repo)) {

            DiffFormatter df = new DiffFormatter(NullOutputStream.INSTANCE);
            df.setRepository( git.getRepository() );

            Iterable<RevCommit> commits = git.log().all().call();
            for (RevCommit commit : commits) {
                if(commit.getParents().length != 0) {
                    System.out.println("LogCommit: " + commit);

                    List<DiffEntry> entries = df.scan(commit.getId(), commit.getParent(0).getId());
                    for( DiffEntry entry : entries ) {
                        String filename = entry.getPath(DiffEntry.Side.NEW);

                        if(!filename.equals("/dev/null")) {
                            Integer currentCount = 0;

                            if(fileChanges.containsKey(filename)) {
                                currentCount = fileChanges.get(filename);
                            }else {
                                System.out.println("    DiffEntry: " +entry.getPath(DiffEntry.Side.NEW));
                            }
                            fileChanges.put(filename, new Integer(currentCount + 1));
                        }
                    }
                }
            }
        }

但是当我 运行 它在回购协议中时:

org.eclipse.jgit.api.errors.NoHeadException: No HEAD exists and no explicit starting revision was specified

                at org.eclipse.jgit.api.LogCommand.call(LogCommand.java:154)

                at .GitAccessor.getFilesChanged(GitAccessor.java:47)

                at Main.main(Main.java:45)

我试图通过在没有主人的情况下制作这个回购来复制它(因为它在客户端的机器上): https://github.com/davidahines/no_master

我已经尝试删除 HEAD、ORIG_HEAD 和 FETCH_HEAD,但似乎仍然无法得到这个错误。

我想我需要做的是以某种方式绕过这个检查,或者在 refs 文件夹中找到另一个头,但我在 jgit 中找不到。

我目前无法访问客户的存储库,因为它是闭源的。

问题是 jgit 不支持 /home/username 的波浪号快捷方式,删除后它就起作用了。