henry_flower (
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
А теперь представим, что нужная часть репозитория состоит из > 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
