Filtre os commits e agrupe-os por categoria e arquivo

Para revisar os commits referenciados de uma história ou tarefa, você deve incluir o ID do problema como uma hashtag na mensagem de commit, eu precisava de uma visão geral melhor do que apenas uma lista plana de commits.

Quero agrupar os commits por arquivo. No caso de aplicativos Rails, também quero agrupar arquivos com commits pelas seguintes categorias: biblioteca, modelo, controlador, javascript, visualização, testes, configuração e misc.

Portanto, implementei o Ruby gem commit_filter para aplicativos Rails que renderiza os resultados do filtro, por exemplo, sobre commits que fazem referência ao problema # 56 como este:

Cenário

Cada commit está vinculado a uma página de culpa e você obtém diffs de código em um modal.

Instalação

Como um aplicativo independente

git clone git@github.com:rails-info/rails_info_application.git
cd rails_info_application

bundle install

Inicie o servidor Rails e então você encontrará o filtro neste caminho: / rails / info / commit / filters / new

Como um plugin

Adicione-o a um grupo de desenvolvimento no Gemfile de seu aplicativo Rails 4:

group :development do
gem
'commit_filter', '~> 0.1.1'
end

Monte-o no caminho desejado ou apenas faça o root no arquivo de rotas:

mount CommitFilter::Engine => '/'

Já mencionei que o Gem requer Twitter Bootstrap 3 😉 Mas é fácil escrever um novo adaptador de framework de front-end por herança.
Portanto, se o seu Gemfile não inclui Twitter Bootstrap 3, adicione-o por meio do grupo de desenvolvimento: gem ‘bootstrap-sass’, ‘~> 3.3.4.1’ (Como configurar arquivos de manifesto CSS e JS pode ser encontrado >> aqui << )

Se os arquivos de manifesto do seu aplicativo não incluem Twitter Bootstrap 3, você deve apontar a gema para os arquivos de manifesto CSS e JS, que funcionam por meio de um arquivo inicializador:

CommitFilter.configure do |config|
config
.manifest_file = 'twitter_bootstrap'
end

Inicie o servidor Rails e então você encontrará o filtro neste caminho: / commit / filters / new

Configuração

Se você gosta de definir valores padrão para o formulário de filtro, pode defini-los por meio de um arquivo inicializador:

CommitFilter.configure do |config|
config
.attribute_name = 'value'
end

Todas as opções de configuração disponíveis podem ser encontradas >> aqui << .

Repositórios Remotos

Todos os repositórios e branches devem ser verificados localmente antes da filtragem. Também gostaria de acessar repositórios GitHub remotos sem checkout local, mas o GitHub não tem API para pesquisa de commits e paginação sobre commits como no ambiente local é muito caro – limite de taxa.

PS: Eu recomendo limitar o resultado por um intervalo de tempo para consultas mais rápidas.