如何使用Github Java API将外部协作者添加到组织中的存储库?

时间:2018-05-31 21:52:22

标签: java github github-organizations github-api-v3

我正在尝试自动化教师为学生建立一个包含存储库的组织的过程。存储库需要将用户添加为协作者,因为持续传递服务器使用该用户对学生存储库进行更新。我遇到的问题是使用Github Java API向用户发送邀请。这是我尝试使用的当前代码:

GHCreateRepositoryBuilder builder = this.organization.createRepository(this.prefix + i);
GHRepository repo = builder.create();
repo.addCollaborators(github.getUser("vcdep"));
repositories.add(repo);

上面的代码在组织中成功创建了存储库,但在调用addCollaborators方法时抛出了以下IO异常:

Caused by: java.io.IOException: Operation not applicable to a repository owned by someone else: TestOrganizationForDevOps
at org.kohsuke.github.GHRepository.verifyMine(GHRepository.java:1097)
at org.kohsuke.github.GHRepository.modifyCollaborators(GHRepository.java:507)
at org.kohsuke.github.GHRepository.addCollaborators(GHRepository.java:495)
at org.kohsuke.github.GHRepository.addCollaborators(GHRepository.java:491)
at wizard.GitHubController.createRepos(GitHubController.java:94)
at wizard.Controller.onButtonClickedFinish(Controller.java:260)
... 58 more

我在这里查看了其他帖子,但是,他们中的大多数都是通过邀请用户然后添加team to the repository来讨论创建团队的。但是我无法做到这一点,因为必须附加到存储库的用户需要自动接受邀请,并且我已经有一个系统可以做到这一点,但仅限于存储库邀请,而不是团队邀请。我还查看了Github Java API存储库的issue tracker,但没有找到与我相似的任何内容。

我认为我最初没有正确的权限,但我使用的是拥有该组织的帐户中的个人令牌,并且该令牌具有完全权限,并且自创建存储库以来,我使用Github Java API成功进行了身份验证。我还尝试将用户作为成员添加到Github组织,然后运行上面的代码以查看是否有帮助但是出现了相同的错误。我已经查看了Github Java API和Github API本身的文档,并且无法理解为什么上面的内容不起作用,我想知道它是错误还是预期的行为。如果您有任何想法如何解决这个问题,我将非常感谢您的帮助。

另外,我正在使用Maven来处理Kohsuke安装的GitHub API。这是我的pom.xml中处理依赖性的片段

<dependency>
    <groupId>org.kohsuke</groupId>
    <artifactId>github-api</artifactId>
    <version>1.80</version>
</dependency>

感谢您的时间。

1 个答案:

答案 0 :(得分:0)

您是否正在使用kohsuke中的源代码? 在此源代码中,方法“ verifyMine”不存在。 可能是由于使用叉子造成的。