Я пытаюсь получить коммиты, которые были сделаны после даты в локальной копии git repo, а затем извлечь связанные изменения в файлах.Как выбрать соответствующий diff/patch для фиксации с прочным
Если я хотел бы сравнить это с командой мерзавца, было бы:
git log -p --reverse --after="2016-10-01"
Вот скрипт я использую:
require "rugged"
require "date"
git_dir = "../ruby-gnome2/"
repo = Rugged::Repository.new(git_dir)
walker = Rugged::Walker.new(repo)
walker.sorting(Rugged::SORT_DATE| Rugged::SORT_REVERSE)
walker.push(repo.head.target)
walker.each do |commit|
c_time = Time.at(commit.time)
next unless c_time >= Date.new(2016,10,01).to_time
puts c_time
puts commit.diff.size
puts commit.diff.stat.inspect
end
Проблема заключается в том, что она выглядит, как много файлов здесь является окончанием вывода этого скрипта:
2016-10-22 17:33:37 +0200
2463
[2463, 0, 271332]
Это означает, что есть 2463 fi les modified/deleted/replace. В то время как git log -p --reverse --after="2016-10-22"
показывают, что изменены только 2 файла.
Как получить те же результаты, что и с помощью команды git? т.е. как я могу найти реальные файлы, которые были изменены этим фиксатором?
К сожалению, нет никаких различий, смотрите здесь https://github.com/ruby-gnome2/ruby -gnome2/commits/master, это репо, которое я использую для своих тестов. Вы можете легко увидеть, что не было файлов 2463, измененных/удаленных/замененных после даты «2016-10-22». – cedlemo
@cedlemo: yes, 'git log --name-status --oneline --after =" 2016-10-22 "' показывает только 3 файла. Это означает, что у вашего скрипта есть проблема. Это потому, что он считает фиксацию * до * этой даты, а не после? В конце концов, 'git log -name-status -oneline -before =" 2016-10-22 "-all -branches | grep -e"^M "| sort | uniq | wc' дает 3362 файлов , И 'if c_time> = Date.new (2016,10,01) .to_time' является подозрительным ... – VonC
' if c_time> = Date.new (2016, 10, 01) 'не имеет большого значения, потому что вывод Я показал последнюю итерацию цикла над коммитами, что означает, что в последнем коммите было изменено 2463 файлов, что является ложным. Сценарий, возможно, проблема, но я не вижу, где. – cedlemo