Pular para o conteúdo principal

· Leitura de 2 minutos
Willian Luis Zuqui

1. Encontre o stash

git log --graph --oneline --decorate $(git fsck --no-reflog | awk '/dangling commit/ {print $3}')

Isso mostrará todos os commits nas pontas do seu gráfico de commit que não são mais referenciados por nenhum branch ou tag – cada commit perdido, incluindo cada stash commit que você já criou, estará em algum lugar desse gráfico

2. Depois de saber o hash do commit desejado, você pode aplicá-lo como um stash

git stash apply SEU_WIP_COMMIT_HASH_AQUI

Nota: A mensagem de commit só estará neste formato (começando com "WIP on") se você não forneceu uma mensagem quando fez git stash.

Fonte: Veja a resposta completa em https://stackoverflow.com/a/91795/2510591

3. Se o seu stash commit não estiver listado ou você não o encontrar (opcional)

Se o seu stash já foi aplicado, mas você não o vê, por exemplo, após resolver um conflito ou reiniciar. Siga esses passos:

  • Execute bash git fsck --no-reflog | awk '/dangling commit/ {print $3}'
  • Escolha um hash de commit stash e use git show COMMIT_HASH para examinar o stash commit diff de suas alterações.
  • Depois de encontrar suas alterações, basta usar o commit correspondente das alterações do seu stash e aplicá-lo usando git stash apply COMMIT_HASH.

· Leitura de 2 minutos
Willian Luis Zuqui

Motivação

A motivação deste post é compartilhar algumas diferenças encontradas com o time de desenvolvimento entre processamento em lote ou granular. Com o objetivo de ajudar a entender qual a melhor forma de processar os dados.

Com o passar do tempo desenvolvendo aplicações workers que são aplicativos que processam dados em segundo plano, percebi que existem duas formas de processar os dados, em lote ou granular, com eles suas vantagens e desvantagens que serão abordadas neste post.

Processamento em lote

O processamento em lote é quando você processa um conjunto de dados de uma vez só, por exemplo, você tem uma lista de 1000 usuários e precisa enviar um e-mail para cada um deles, você pode processar todos de uma vez só, ou seja, em lote.

Processamento granular

O processamento granular é quando você processa um conjunto de dados de forma granular, ou seja, um por um, por exemplo, você tem uma lista de 1000 usuários e precisa enviar um e-mail para cada um deles, você pode processar um por um, ou seja, de forma granular.

Tabela comparativa

Processamento granularProcessamento em loteVantagem
Muito selects executados no banco de dadosMenos selects executados no bancoLote
SQL com menos parâmetrosSQL com acima de 2.100 parâmetros causam erros de execuçãoGranular
Caso aconteça um erro, você pode identificar em qual registro parou sua aplicaçãoPerde a transactions inteira do loteGranular
Salva o cursor/posição na qual o registro está seja ele com erro ou sucessoO cursor não consegue identificar o real problema, e salva o cursor somente no fimGranular
Conseguimos identificar o tempo de processamento de cada registroConseguimos apenas a média de tempo para cada registroGranular
Menos concorrência e change track no efcoreMais concorrência gerando mais lock no bancoGranular

Placar final: Granular 6 x 1 com vantagem para o processamento granular

Conclusão

Conforme for passando o tempo, e novas experiências forem surgindo, vou atualizando este post com novas informações. Mas por enquanto, a melhor forma de processar os dados é de forma granular.