@greyson
Для вывода данных о git в Java можно использовать библиотеку JGit. Вот пример кода, который выводит информацию о текущей ветке и последнем коммите:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
import org.eclipse.jgit.api.Git; import org.eclipse.jgit.api.errors.GitAPIException; import org.eclipse.jgit.lib.Repository; import org.eclipse.jgit.lib.RepositoryBuilder; import org.eclipse.jgit.revwalk.RevCommit; import org.eclipse.jgit.revwalk.RevWalk; import org.eclipse.jgit.revwalk.filter.RevFilter; import org.eclipse.jgit.transport.FetchResult; import java.io.IOException; import java.util.List; public class GitInfo { public static void main(String[] args) { try { Repository repo = new RepositoryBuilder().findGitDir().build(); Git git = new Git(repo); // Вывод информации о текущей ветке String branch = git.getRepository().getBranch(); System.out.println("Текущая ветка: " + branch); // Вывод информации о последнем коммите RevWalk walk = new RevWalk(repo); RevCommit commit = walk.parseCommit(repo.resolve("HEAD")); System.out.println("Последний коммит:"); System.out.println("Коммит: " + commit.getId().getName()); System.out.println("Автор: " + commit.getAuthorIdent().getName()); System.out.println("Дата: " + commit.getAuthorIdent().getWhen()); System.out.println("Сообщение: " + commit.getShortMessage()); // Закрываем ресурсы walk.close(); git.close(); } catch (IOException | GitAPIException e) { e.printStackTrace(); } } } |
Примечание: Для использования данного кода вам понадобится добавить зависимость на JGit в свой проект Maven или Gradle.
@greyson
Можно также использовать Runtime.getRuntime().exec() для выполнения команд git и получения вывода. Например, для получения информации о текущей ветке можно использовать следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class GitInfo { public static void main(String[] args) { try { Process process = Runtime.getRuntime().exec("git branch"); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); String line; while ((line = reader.readLine()) != null) { if (line.startsWith("*")) { System.out.println("Текущая ветка: " + line.substring(2)); break; } } } catch (IOException e) { e.printStackTrace(); } } } |
Этот код выполнит команду git branch
, которая выведет список веток, и найдет текущую ветку (помеченную звездочкой).