Выполните итерации с помощью Ruby через коммиты git для конкретной ветви
Я хотел бы использовать Rugged для перебора всех коммитов в конкретной ветке, от самого старого (первого) до самого нового (последнего). Я хотел бы изучить SHA1 и комментарии для каждого.
Может быть, мне лучше просто запустить 'git log --reverse' и проанализировать результаты, но пока есть хорошая библиотека Ruby для работы с Git, я думаю, что буду ее использовать.
Простите меня, но я не могу понять, как делать то, что я хочу, из документов Rugged или libgit2.
1 ответ
Решение
Вы можете создать коммит ходок, что-то вроде этого:
require 'rugged'
repo = Rugged::Repository.new('/path/for/your/repo')
walker = Rugged::Walker.new(repo)
walker.sorting(Rugged::SORT_REVERSE)
walker.push(repo.branches["master"].target_id)
walker.each do |commit|
puts "commit #{commit.oid}"
puts "Author: #{commit.author[:name]} <#{commit.author[:email]}>"
puts "Date: #{commit.author[:time]}"
puts "\n #{commit.message}\n"
end
walker.reset
Вы можете проверить документацию и прочитать тестовый код в хранилище, чтобы увидеть, что вы можете сделать с Rugged.