henry_flower: A melancholy wolf (Default)
henry_flower ([personal profile] henry_flower) wrote2012-01-31 10:45 pm
Entry tags:

Выковырять список файов git умеет командой ls-files. Oкей. Но

Выковырять список файов git умеет командой ls-files. Oкей. Но чтобы получить дату последнего коммита для каждого из полученных файлов, нужно говорить git log -1 --format=%ct file.

А теперь представим, что нужная часть репозитория состоит из > 2K файлов и обнаружим, что git log не только не умеет читать список файлов из stdin, но и игнорирует аргументы больше 1. Т.е. приходится писать:

% git ls-files path | xargs -n1 git --no-pager log -1 --format=%ci

Ахуеть насколько эффективно.

Посмотрел в исходники https://github.com/schacon/ruby-git (267,558 скачиваний, между прочим), думал может там какой-то git api используется. Оказалось, во-первых, выдать дату коммита к файлу с ним не получится, во-вторых, оно просто вызывает git в пайпе. Тупее не придумаешь.

Выходит, наверно, нужно брать сишный исходник git и патчить оту команду log и выковыривать это все в отдельное C extension для руби.

loud-crying.jpg

Permalink: https://plus.google.com/115290581164606462017/posts/ir9k41gF1Gd