Как вывести данные о git в java?

Пользователь

от greyson , в категории: Другие , год назад

Как вывести данные о git в java?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от magdalen_kub , год назад

@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.

Пользователь

от magali , 5 месяцев назад

@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, которая выведет список веток, и найдет текущую ветку (помеченную звездочкой).