Giter Site home page Giter Site logo

divulgit's Introduction

divulgit

Existem informações valiosas escondidas nos code reviews do seu time!

Um code review naturalmente agrega muito aprendizado para quem está tendo seu código revisado. Porém estas lições acabam sendo do conhecimento apenas do revisor e do revisado.

Este processo como um todo gera uma quantidade enorme de comentários e pedidos de mudança de código. Nem todos são exatamente novidade ou necessariamente interessantes para serem compartilhado.

Então como saber o que é interessante para que seja compartilhado com o time?

A resposta é simples e muito usada hoje em dia nas redes sociais...

#hashtag!

Sem trocar a sua atual ferramenta git, passe a destacar o que for interessante usando: #divulgar, #interessante, #legal, #cuidado ou qualquer outra palavra usando #.

Divulgit trabalha com:

GitHub      GitLab

Azure DevOps      Bitbucket

Como utilizar

O DivulGit não está em cloud disponível para uso como serviço, você deve compilá-lo e executá-lo dentro de sua infra-estrutura (ou onde quiser).

Execução Docker

Verifique as instruções de uso em:

https://hub.docker.com/r/decioluckow/divulgit

Execução standalone

Obtenha o pacote da ultima versão disponível em: https://github.com/decioluckow/divulgit/releases

Utilize Java 11 no mínimo.

No diretório de execução, crie um arquivo application.properties com o seguinte conteúdo para:

MongoDB Local

spring.data.mongodb.host=<host>
spring.data.mongodb.database=<database>
spring.data.mongodb.port=<porta>
spring.data.mongodb.username=<username>
spring.data.mongodb.password=<password>

MongoDB como serviço

spring.data.mongodb.uri=mongodb+srv://<user>:<password>@<cluster>.<host>/<database>

E execute da seguinte forma:

java -jar divulgit-app.jar

Thread Executor

O processo de scan dos repositórios git é assíncrono e configurado para trabalhar com no mínimo 2 e no máximo 10 threads. Para alterar estes valores, adicione as seguintes propriedades no arquivo application.properties. ⚠️ Atenção! Cautela ao aumentar os valores para não haver abuso no uso das APIs.

tasks.thread-executor.core-pool-size=2
tasks.thread-executor.max-pool-size=10

divulgit's People

Contributors

decioluckow avatar dependabot[bot] avatar

Stargazers

Dayan Freitas avatar Rafael  avatar Rafael avatar Ricardo Fontana avatar  avatar  avatar Lougans de Matos avatar Mailon Bido avatar Leandro Ramos Marcelino avatar Vitor José Stähelin avatar RenanPizzettiSilvano avatar alexandre.reolon avatar Lucas Jeronimo dos Santos avatar Cassio Santos avatar Thiago Frederes avatar Gustavo Luchi avatar Marcus Adriano avatar Amanda Bacelli avatar Denis Giovan Marques avatar Thales Salazar avatar Thiago Furlan avatar

Watchers

James Cloos avatar  avatar  avatar

divulgit's Issues

Criar forma de autenticação alternativa, sem token

Hoje, todo acesso precisa ser feito usando token do git. Porém seria interessante que houvesse outra forma de acesso sem o token (convite, usuario/senha, token por email), mas que não desse o acesso as operações na plataforma (que precisam do token).

Seria um acesso somente leitura, a abertura do code review para visualizar as diferenças destacadas seria feita normalmente, pois usa o acesso direto na plataforma git.

Erro ao fazer o Pull Request scan em Azure DevOps corporativo

org.divulgit.remote.exception.RemoteException: 400 BAD_REQUEST
at org.divulgit.azure.error.AzureErrorResponseHandler.handleErrorResponse(AzureErrorResponseHandler.java:29) ~[divulgit-remote-azure-0.1.0.jar!/:0.1.0]
at org.divulgit.remote.rest.UniRestCaller.call(UniRestCaller.java:43) ~[divulgit-remote-0.1.0.jar!/:0.1.0]
at org.divulgit.azure.pullrequest.AzurePullRequestsCaller.retrievePullRequest(AzurePullRequestsCaller.java:97) ~[divulgit-remote-azure-0.1.0.jar!/:0.1.0]
at org.divulgit.azure.pullrequest.AzurePullRequestsCaller.retrievePullRequests(AzurePullRequestsCaller.java:44) ~[divulgit-remote-azure-0.1.0.jar!/:0.1.0]
at org.divulgit.azure.pullrequest.AzurePullRequestService.retrievePullRequests(AzurePullRequestService.java:27) ~[divulgit-remote-azure-0.1.0.jar!/:0.1.0]
at org.divulgit.azure.AzureCallerFacade.retrieveMergeRequests(AzureCallerFacade.java:83) ~[divulgit-remote-azure-0.1.0.jar!/:0.1.0]
at org.divulgit.task.mergerequest.MergeRequestIdsRemoteScan.execute(MergeRequestIdsRemoteScan.java:94) ~[divulgit-task-0.1.0.jar!/:0.1.0]
at org.divulgit.task.AbstractRemoteScan.run(AbstractRemoteScan.java:61) ~[divulgit-task-0.1.0.jar!/:0.1.0]
at java.base/jdk.internal.reflect.GeneratedMethodAccessor97.invoke(Unknown Source) ~[na:na]
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344) ~[spring-aop-5.3.9.jar!/:5.3.9]
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) ~[spring-aop-5.3.9.jar!/:5.3.9]
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.3.9.jar!/:5.3.9]
at org.springframework.aop.interceptor.AsyncExecutionInterceptor.lambda$invoke$0(AsyncExecutionInterceptor.java:115) ~[spring-aop-5.3.9.jar!/:5.3.9]
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]

Corrigir identificação de #

Observei que em um comentário que continha # o divulgit identificou como sendo um destaque, quando não deveria.

Aplicação não está gerando log em arquivo

Testar considerando a aplicação executando por fora da IDE, porém dentro também deveria gerar.

As configurações que utilizei no application.properties foram

logging.level.org.divulgit=INFO
logging.file=logs/divulgit.log

Vincular ao usuário o estado do projeto

Atualmente, para cada Usuario existe uma lista de projectId que são os projetos a qual ele tem acesso.
O estado do projeto (Novo, ativo ou ignorado) pertence ao projeto.
Porém, um projeto ignorado para um usuário pode ser relevante para outro, por isso a informação do estado do projeto deveria estar vinculada ao usuário.

Sendo assim, no que hoje é uma lista de projetos no usuário, deverá passar a ser uma lista de UserProject, que conterá projectId e projectState.

Ao ignorar um projeto na listagem principal, e o projeto do usuário que deve ser alterado e não o projeto em si.

A entidade Project deixa de possuir um "state".

Exportar/Importar lista de status dos comentário

Exportar

  • Criar funcionalidade em algum lugar geral do projeto que permita exportar o status de discussão de todos os projetos
  • Entregar um json com as seguintes informações: nome do projeto, número do merge request, numero do comentario, data/hora da discussão.
  • Ao estar presente no arquivo, entende-se que o comentario foi discutido.

Importar

  • Receber o json exportado e aplicar nos itens o status correto de discussao

Criar exportação/importação de status de discussão

Exportar

  • Criar funcionalidade em algum lugar geral do projeto que permita exportar o status de discussão de todos os projetos
  • Entregar um json com as seguintes informações: nome do projeto, número do merge request, numero do comentario, data/hora da discussão.
  • Ao estar presente no arquivo, entende-se que o comentario foi discutido.

Importar

  • Receber o json exportado e aplicar nos itens o status correto de discussao

Criar artefato docker para permitir uma opção mais fácil de deploy da aplicação

A opção mais basica deverá ser para uma maquina com java e a aplicação spring boot.

  • Arquivos de log deverão ser escritos fora da imagem
  • Conexão ao mongo db deverá ser feita conforme parametros recebidos
  • hoje não temos um arquivo logback, mas seria interessantes que tivesse e neste (externamente) fosse possível alterar as configurações de log (opcional)

Também criar outro artefato que contenha a aplicação e o banco (docker compose)

Atualizar documentação com as instruções necessaria para o uso deste artefatos.

Criar opção para recarregar um merge request que não esteja listado

Esta situação acontece quando um merge request não possui comentários destacados em um primeiro momento e já esteja como mergeado, nos proximos scans ele não será considerado.

Por isso seria interessante permitir que baseado no número do merge request, este seja recarregado.

Com isso também é interessante que o número do merge request seja apresentado na listagem.

Botão de recarregar merge request não aparenta execução e não faz o refresh da tela.

Apesar de funcionar corretamente é necessário fazer um refresh da tela para mostrar os dados atualizados. Este não é o principal problema. O problema é que parece que não funcionou (pois nao tem feedback) e o usuário pode ficar clicando muito no botão.

Em principio seria interessante esconder o botão de reload depois de acionado, para expressar algum feedback e impedir que seja acionado novamente. Depois do reload da tela ele estará novamente disponível.

Ao migrarmos para react será mais simples atualizar somente o merge request em questão

Comentário com algum caractere antes do # não estão sendo exibidos em tela

Fiz um testes de escaneamento em pull requests no projeto do Bitbucket que continham os seguintes exemplos de comentários: '#teste' e '#otimo'. Originalmente essa '' não existe no comentário feito no PR, porém a API está retornando essa '' antes do comentário de. Avaliar esse cenário que acredito ser necessário um ajuste.

Gamificar o DivulGit

Elaborar uma maneira de gamificação.
Listar os maiores contribuidores de um periodo e poder lista diretamente suas contribuições e/ou quais tags geralmente ele registra.
Propor outras formas de gamificação.

Registrar data e hora do ultimo scan no projeto

O objetivo é evitar que um novo scan seja feito, se outro acabou de acontecer.

Na listagem de projetos, esta informação deve ser apresentada como:

  • há 2 horas
  • há 5 dias
  • há 15 minutos

Criar listas de discussão

Que permitiria que certos comentários que sejam interessantes de serem discutidos em outros contextos (para a empresa toda por exemplo) sejam selecionados.

Recurso semelhante ao "assistir mais tarde" do youtube.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.