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:
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.