Поддерживает ли LibGit2Sharp atlassian репозитории stash для работы с - PullRequest
1 голос
/ 29 апреля 2019

У меня есть GIT-репозиторий, скажем "https://github.com/Myname_XXXX/TestGit".. Мне нужно пройти через все коммиты этого репозитория и получить определенную информацию, такую ​​как автор коммитов, идентификатор, сообщение и т. Д. Я использую приведенный ниже фрагмент кода, и он работает хорошо.

        string repoPath = "https://github.com/Myname_XXXX/TestGit";
        GitRepositoryManager objTest = new GitRepositoryManager("Userid", "Pwd", repoPath, @"C:\ClonedFolder");

        string path = Repository.Clone(objTest._repoSource, objTest._localFolder.ToString());
        using (var repo = new Repository(path))
        {
            int i = 1;
            foreach (var Commit in repo.Commits)
            {
                Console.WriteLine("");
                Console.WriteLine("Number : {0}", i);
                Console.WriteLine("Author: {0}", Commit.Author.Name);
                Console.WriteLine("Message: {0}", Commit.MessageShort);
                Console.WriteLine("Commit Id: {0}", Commit.Id.ToString());
                Console.WriteLine("Commit Date: {0}", Commit.Author.When.DateTime);
                Console.WriteLine("Author Email: {0}", Commit.Committer.ToString());
                i = i + 1;

            }
            Console.WriteLine("Total Commits: {0}", i - 1);
            Console.ReadLine();

        }

    }

}

class GitRepositoryManager
{
    public readonly string _repoSource;
    public readonly UsernamePasswordCredentials _credentials;
    public readonly DirectoryInfo _localFolder;

    public GitRepositoryManager(string username, string password, string gitRepoUrl, string localFolder)
    {
        var folder = new DirectoryInfo(localFolder);

        if (!folder.Exists)
        {
            throw new Exception(string.Format("Source folder '{0}' does not exist.", _localFolder));
        }

        _localFolder = folder;

        _credentials = new UsernamePasswordCredentials
        {
            Username = username,
            Password = password
        };

        _repoSource = gitRepoUrl;
    }
}

Мой первый вопрос:

  1. Существует ли простой способ подключения к GIT-репозиторию путем предоставления учетных данных для входа в GIT (без клонирования -> с использованием Repository.Clone ()): как я использовал в приведенном выше фрагменте кода) и выполнить обход всех коммитов репозитория без клонирования, поскольку это создает проблему, когда у нас огромная база кода

  2. Применима ли та же концепция к шкатулке Атлассиана (поскольку она также основана на концепции GIT)

1 Ответ

0 голосов
/ 29 апреля 2019

(без клонирования -> использование Repository.Clone ())

Тогда вам нужно будет использовать GitHub API и использовать такой подход, как " Получение коммитов github по всем веткам из API"

for line in `curl "https://api.github.com/repos/:user/:repo/branches" | \
  grep -o '"name":.*,' | \
  sed 's/"name": "//g' | \
  sed 's/",//g'`; \
  do; \
    curl "https://api.github.com/repos/:user/:repo/commits?sha=$line" >> result.json ; \
  done;
...