Intereting Posts
Невозможно нажать на героку после случайного удаления приложения на героку Git diff не отображает изменения для новых добавленных файлов Есть ли способ дать команде GitHub привилегию читать и писать только на частной вилке? Свойство SVN svn: require-lock не применяется Затмение Eclipse во время слияния SVN Почему git-pull manpage говорит: «Вы никогда не делаете свое собственное развитие на ветвях, которые появляются справа от двоеточия <refspec> на Pull: lines»? Autobuild для выполнения SVN Bash Check for Git Updates on Login Как подключить iReport к репозиторию SVN Начать ssh-agent при входе в систему пытаясь клонировать в GIT из TFS, и он остается после 27%, тогда как сканирование данных в Visual Studio 2017 Использование GIT-крючков для изменения примечаний к выпуску Новая настройка git-крючка в проблемах с открытым репозиторием (без вывода / выполнения) Визуальный SVN-сервер: возможен ли смешанный режим управления пользователями? Работа Дженкинса была ткнута на веб-сайт GitHub, но не началась

Как удалить удаленную ветку с помощью JGit

Я не могу понять, как удалить удаленную ветку.

Я пытался подражать следующей команде GIT: git push origin: branchToDelete

Следующий код и его варианты с пустым источником:

RefSpec refSpec = new RefSpec(); refSpec = refSpec.setSource(""); // remove branch from origin: git.push().setRefSpecs(refSpec).add(branchToDelete).call(); 

броски и исключения, такие как:

 org.eclipse.jgit.api.errors.JGitInternalException: Exception caught during execution of push command at org.eclipse.jgit.api.PushCommand.call(PushCommand.java:175) at org.gitscripts.DeleteBranchOperation.execute(DeleteBranchOperation.java:27) at org.gitscripts.Main.main(Main.java:27) Caused by: java.io.IOException: Source ref doesnt resolve to any object. at org.eclipse.jgit.transport.RemoteRefUpdate.<init>(RemoteRefUpdate.java:285) at org.eclipse.jgit.transport.RemoteRefUpdate.<init>(RemoteRefUpdate.java:189) at org.eclipse.jgit.transport.Transport.findRemoteRefUpdatesFor(Transport.java:612) at org.eclipse.jgit.transport.Transport.findRemoteRefUpdatesFor(Transport.java:1150) at org.eclipse.jgit.api.PushCommand.call(PushCommand.java:149) ... 2 more 

Заранее благодарим за ваши идеи и решения.

Это должно помочь вам:

 //delete branch 'branchToDelete' locally git.branchDelete().setBranchNames('refs/heads/branchToDelete').call(); //delete branch 'branchToDelete' on remote 'origin' RefSpec refSpec = new RefSpec() .setSource(null) .setDestination("refs/heads/branchToDelete"); git.push().setRefSpecs(refSpec).setRemote('origin').call(); 

тестируется с помощью jgit 2.0.0.201206130900-r

В соответствии с регулярным синтаксисом git, не должен ли ваш RefSpec() быть :branchToDelete ?

Я никогда этого не делал, но попробовал ли вы DeleteBranchCommand , указав origin/branchToDelete ?

EDIT: Я имею в виду, что Git / JGit ссылается на удаленные филиалы через структуру <remote name>/<branch name> (и использование ListBranchCommand поможет вам убедиться, что вы получили правильное написание).

Чтобы узнать точное написание имени ветки, вы можете использовать ListBranchCommand (не забудьте вызвать setListMode(REMOTE) ).

Примечание. Git допускает более странное поведение, чем JGit, поэтому, если он не написан где-то, не ожидайте их.

EDIT: Я имею в виду, что refspec должен иметь следующий синтаксис: <remote branch>:<local branch> (или, возможно, наоборот), но не ожидайте, что он работает в JGit, если вы пропустите один конец, даже если он работает в Git.

Я мог бы заставить это работать с этим:

 StoredConfig config = git.getRepository().getConfig(); config.unsetSection("remote", "origin"); try { config.save(); } catch (IOException e) { logger.error(e.getMessage()); } 

Надеюсь, поможет.