Есть ли jgit api, который выполняет операцию "push --recurse-submodules = on-demand"? - PullRequest
0 голосов
/ 24 сентября 2019

Моя цель - отправить изменения подмодуля в его удаленный репозиторий и передать ссылку git на родительский репозиторий с помощью jgit.

Я попытался сначала зафиксировать изменения подмодуля в его удаленном хранилище, а затем зафиксировать ссылку gitв родительский репозиторий

Repository submoduleRepository = walk.getRepository();
Git subModuleGit = new Git(submoduleRepository);
subModuleGit.add().addFilepattern(".").call();
subModuleGit.branchCreate().setName("feature/Test1").setStartPoint("origin/master").setForce(true)
    .setUpstreamMode(CreateBranchCommand.SetupUpstreamMode.TRACK).call();
subModuleGit.commit().setAuthor("testUser").setAll(false).setMessage("commit message").call();
RefSpec spec = new RefSpec().setDestination("refs/remotes/master").setSource("refs/heads/master");
subModuleGit.push().setRemote("origin").setCredentialsProvider(credentialsProvider).setRefSpecs(spec).call();

// later commit and push on parent repository

Я ожидаю, что изменения будут переданы в удаленный репозиторий подмодулей, а git link - в родительский репозиторий.Поскольку субмодуль при клонировании будет находиться в отключенном состоянии HEAD, я попытался создать новую ветку и отправить изменения вместе с новой веткой.Фактический вывод: изменения субмодуля передаются в удаленный репозиторий, однако имя ветки не отображается в удаленном репозитории (вместо имени ветви отображается SHA1), и изменения можно увидеть только при переходе по ссылке git в родительском репозитории.,если хранилище подмодулей открыто напрямую, ни коммит, ни изменения не видны.

...