Mostrando postagens com marcador Danger Zone. Mostrar todas as postagens
Mostrando postagens com marcador Danger Zone. Mostrar todas as postagens

domingo, 24 de fevereiro de 2019

Usando rebase para unificar as alterações no git.

Voltamos ao assunto do git

Essa é uma continuação do https://www.adilson.net.br/2018/02/removendo-commits-indesejaveis-do.html onde, por algum motivo, não conseguimos remover aquela entrada indesejável, após a correção do código das dicas anteriores. Mas, antes, volto a repetir o disclaimer abaixo:

OBS: Este blog não se responsabiliza por estragos causados por quem seguir as dicas a seguir. Se não quer ter problemas no seu repositório ou no repositório dos outros, FAÇA UM BACKUP PRIMEIRO. Seja dando um clone em outro lugar, copiando a pasta .git para um outro lugar ou dando um tar/zip no seu repositório. Depois não venha chorando dizendo que fez besteira.


Agora vamos voltar para a seguinte situação. Os estagiários fizeram tanta alterações no meio, por exemplo:

Number Hash     Commit Message               Author

1      2c6a45b  (HEAD) Adicionando novidades Desenv.
2      93bf23d  bla bla bla bla bla          Estagiário 1
2      ae45fab  Melhorando banco de dados    Estagiário 1
3      77b9b82  Corrigindo banco de dados    Estagiário 2
4      3c9093c  Dando merge com master       Desenv.
5      b3d92c5  Adicionando novo evento      Colega
6      7feddbb  Adicionando arquivos         Desenv.
7      a809379  Commit inicial               Desenv.

Você tenta seguir a dica anterior:

git rebase --onto HEAD~4 HEAD~1 master


Mas acaba em:

Um monte de erros antes...

error: Failed to merge in the changes.
Patch failed at 0001 Adicionando novidades
hint: Use 'git am --show-current-patch' to see the failed patch

Resolve all conflicts manually, mark them as resolved with
"git add/rm ", then run "git rebase --continue".
You can instead skip this commit: run "git rebase --skip".
To abort and get back to the state before "git rebase", run "git rebase --abort"
.

E agora????

Nem tudo está perdido. Antes rode o comando: "git rebase --abort",  "git reset --hard origin/master" e, rode este comando:

git rebase -i HEAD~4 


Vai aparecer várias linhas para fazer as alterações neste estilo:

pick 77b9b82 Corrigindo banco de dados
pick ae45fab Melhorando banco de dados
pick 93bf23d bla bla bla bla bla
pick 2c6a45b Adicionando novidades


Note que a ordem está inversa. Agora, de cima para baixo, troque, a partir da seguinda linha, a palavra pick por squash (ou s que o resultado é o mesmo). O resultado fica, mais ou menos assim:

pick 77b9b82 Corrigindo banco de dados
s ae45fab Melhorando banco de dados
s 93bf23d bla bla bla bla bla
s 2c6a45b Adicionando novidades

Salva e uma outra janela de edição aparece. Neste caso ele mostra todas as linhas dos commits. Comenta todas, menos a que você deseja manter. Isso não altera no resultado final. Mas, como você quer se livrar dos commits indesejáveis, comentar faz todo sentido.

Daí só salva e os commits antigos foram devidamente eliminados quando foi feito a unificação. Mas isso só vale se fez a devida correção no seu commit. Caso contrário faça alguns reverts antes e siga a mesma dica, mudando apenas o número das linhas no HEAD, que aumentou com os reverts.

Mais informações em:

https://www.internalpointers.com/post/squash-commits-into-one-git


Tenham um bom domingo uma ótima semana.


segunda-feira, 5 de fevereiro de 2018

Removendo commits indesejáveis do repositório git sem precisar do revert



Hoje vamos ver como deletar aquele commit que você não gostou e quer se livrar dele de uma só vez. Isso tudo sem precisar de utilizar do comando revert, para reverter o estrago que fez.

OBS: Este blog não se responsabiliza por estragos causados por quem seguir as dicas a seguir. Se não quer ter problemas no seu repositório ou no repositório dos outros, FAÇA UM BACKUP PRIMEIRO. Seja dando um clone em outro lugar, copiando a pasta .git para um outro lugar ou dando um tar/zip no seu repositório. Depois não venha chorando dizendo que fez besteira.

Vamos começar pelo mais simples. Você quer, simplesmente, remover o último commit ao invés de utilizar o revert. Esse comando é bem fácil é só fazer.

git reset --hard HEAD~1

Aí o repositório volta ao estado de como era antes do commit.

Agora vamos a situação do commit, bem no meio, que está dando problemas. A situação normal é rodar um revert para corrigir. Mas você quer se livrar do código indesejável. Neste caso existe uma maneira.

Vamos ver um exemplo de git log:

Number Hash     Commit Message               Author

1      2c6a45b  (HEAD) Adicionando novidades Desenv.
2      ae45fab  Melhorando banco de dados    Estagiário 1
3      77b9b82  Corrigindo banco de dados    Estagiário 2
4      3c9093c  Dando merge com master       Desenv.
5      b3d92c5  Adicionando novo evento      Colega
6      7feddbb  Adicionando arquivos         Desenv.
7      a809379  Commit inicial               Desenv.


Mas você vê que os estagiários complicaram na parte do banco de dados e quer se livrar deste código, de uma vez por todas, sem passar por revert. É só seguir a numeração. Escolha o primeiro a deletar e o primeiro a manter, de baixo para cima. Neste caso o primeiro a remover é o 3 e o primeiro para manter é o 1. Assim o comando para rodar é o:

git rebase --onto HEAD~3 HEAD~1 master

Depois disso os commits desaparecem do seu repositório.

Mas e se os códigos para remover estão espalhados? Neste caso, faça um intervalo de cada vez. Se tentar com o primeiro código para remover e o primeiro a manter, depois de várias sequencias, vai remover aquilo que não quer que remova e vai ter que precisar do backup que pedi para fazer no início. Lembra?

Atualização (1 ano depois): E se não der certo: https://www.adilson.net.br/2019/02/usando-rebase-para-unificar-as.html

Outra opção, neste estilo, é com o cherry-pick. Mas ainda não testei, mas pode dar uma olhada melhor nos links abaixo.

Mais informações sobre isso em:

https://www.clock.co.uk/insight/deleting-a-git-commit
https://www.git-tower.com/learn/git/faq/undo-last-commit

Tenham uma boa semana.

sexta-feira, 20 de janeiro de 2012

PIPA e SOPA adiadas por tempo ideterminado

Após muita pressão por todos os lados, os projetos da SOPA e PIPA foram adiados:


Nada de SOPA

E nada de PIPA

Segue um Copy & Paste do http://www.bbc.co.uk/portuguese/ultimas_noticias/2012/01/120120_sopa_pipa_rn.shtml noticiando a novidade, principalmente depois do ataque do grupo anonymous a varios sites relacionados ao fechamento do Megaupload pelo FBI. E ainda estão tendo vários 'Tango Down' (expressão utilizada pelos anonymous e outros grupos após a utilização do LOIC e outras ferramentas para fazerem ataques de DDoS nos sites ligados direta ou indiretamente a SOPA, PIPA  e outras medidas anti-pirataria que afetariam todos os usuários). 

O Congresso dos Estados Unidos adiou o debate sobre os projetos de lei antipirataria após forte pressão na internet.
O líder da maioria no Senado, Harry Reid, anunciou nesta sexta-feira a suspensão do debate sobre a Pipa (Protect Intellectual Property Act, ou Lei para Proteger a Propriedade Intelectual), então agendado para a próxima terça-feira.
O presidente da Comissão de Justiça da Câmara dos Representantes (equivalente à Câmara de Deputados), Lamar Smith, também confirmou que o projeto da Sopa (Stop Online Piracy Act, ou Lei para Parar com a Pirataria Online) também saiu da pauta, até que haja consenso entre os parlamentares.
As propostas opõem produtores de conteúdo - como emissoras de TV, gravadoras de músicas, estúdios de cinema e editoras de livros, que se sentem lesadas pela pirataria - às empresas de tecnologia do Vale do Silício, que alegam que os projetos ferem a liberdade inerente à internet e dão excessivo poder para quem quiser tirar websites de circulação.
Na última quarta-feira, a versão em inglês do site da enciclopédia eletrônica Wikipedia saiu do ar, por 24 horas, em protesto contra o projeto de lei. Outros sites como o Google também se manifestaram contra.


Isso representa uma vitória para todos da Internet já que afasta, mesmo que temporariamente, a ameaça de censura ou outras medidas que suprime o direito não só dos usuários dos EUA, como também de outros países já que, parte da infraestrutura ou dos servidores, estão nos EUA.

Tenham um bom final de semana.

quarta-feira, 18 de janeiro de 2012

O que é essa SOPA de PIPA e o que isso pode afetar você.

Essa sopa não é legal.

Para entender melhor o que é essa SOPA e PIPA que todos falam segue um artigo do http://oglobo.globo.com/tecnologia/entenda-que-sao-os-projetos-de-lei-antipirataria-sopa-pipa-3701327
que explica melhor sobre o assunto. E por que isso pode afetar nós e, até este blog? Muitos dos servidores estão nos EUA, então dentro do alcance dessas duas propostas:


“Stop Online Piracy Act” e “Protect Intellectual Property Act” podem banir sites piratas


RIO - Os projetos de lei conhecidos como SOPA e PIPA - siglas de “Stop Online Piracy Act” e “Protect Intellectual Property Act” - surgiram de um esforço das indústrias fonográfica e de cinema americanas para retomar as vendas que perdem com o compartilhamento gratuito de seus produtos na internet. Bloqueando e punindo os piratas, as companhias imaginam poder ressurgir das cinzas com a venda de conteúdo on-line.
O primeiro projeto de lei, que tramita na Câmara dos EUA, tem como líder Lamar Smith, republicano do Texas, além de um grupo bipartidário de doze autoridades. O segundo, tramita no Senado americano, e foi proposto pelo senador democrata Patrick Leahy e um grupo de 11 integrantes também bipartidário.
A lei conhecida como PIPA será votada pelo Senado dos EUA no dia 24 de janeiro e, para pressionar as autoridades, sites americanos fizeram um blecaute cordenado na quarta-feira (18). A ação tem como objetivo encorajar os internautas a procurar um membro do congresso do local onde reside, para pedir que ele vote contra as propostas de lei.
As leis de combate à pirataria pretendem bloquear o acesso a sites que comercializam conteúdo pirata como música, filmes e livros além de impedir empresas de pagamento de transferir dinheiro para seus donos além de suspender imediatamente publicidade relacionadas a eles. Motores de busca seriam solicitados a apagar links para tais sites dos resultados e provedores seriam obrigados e interromper o acesso - especialmente os estrangeiros.
Twitter e Facebook, por exemplo, poderiam ser punidos por permitir que usários publiquem conteúdo "proibido" nas redes sociais. Google poderia ser acusada de manter anúncios publicitários e links para sites piratas nos seus serviços de internet.
Para proteger a propriedade intelectual na web, a nova legislação pretende dar ao governo dos EUA maiores de poderes para punir donos de "sites dedicados à pirataria ou produtos falsificados".
Se aprovada da forma como foram redigidas, as normas irão obrigar os sites a acharem um meio técnico de impedir a distribuição do conteúdo sob pena de fechamento ou até cinco anos de prisão para os organizadores do portal ou rede social.
Sem fazer distinção, qualquer site conectado via hiperlink com outro site apontado como pirata pode, a pedido do governo ou de empresas donas do conteúdo como gravadoras, editoras e estúdios de filmes ser banido da internet.
Produtores de conteúdo e estúdios de cinemas como Disney, Universal, Paramount e Warner Bros. e outros gigantes apoiam a iniciativa. Google, Amazon, Facebook, eBay, Twitter, PayPal, Zynga, Mozilla, entre outras gigante de internet, escreveram cartas ao Congresso e fizeram manifestações on-line.
Recentemente, a Casa Branca teria pedido revisão dos projetos e alteração de algumas normas propostas pelos autores. Em mensagem publicada em seu blog no final de semana, o governo de Obama disse que não podia apoiar "um projeto de lei que reduz a liberdade de expressão, amplia os riscos de segurança na computação ou prejudica o dinamismo e a inovação da internet global".

A SOPA está caindo e espero que passem o cerol na PIPA.

Uma boa tarde.

domingo, 13 de junho de 2010

Cuidado! Linux não é 100% seguro.

Muita gente diz que o Linux é seguro. Bom, se alguém dizer que um sistema é 100% seguro pode ter certeza que:

  • Ou ele está mentido.
  • Ou ele não entende nada de segurança.

Tanto que vira e mexe sempre sai alguns alertas de segurança. Por sorte, em alguns sistemas operacionais, como o Linux, as correções saem numa velocidade enorme, quase em menos de um dia. Outros demoram um pouco mais para serem liberadas, como em um certo sistema feito por uma empresa em uma cidade próxima a Seattle, nos EUA.


Então, ontem, foi detectado que um dos arquivos-fonte do servidor de IRC. O UnrealIRCD  foi alterado com uma versão que vem com um Trojan Horse (Cavalo de Troia), capaz de abrir um backdoor (Porta dos fundos) para o atacante acessar o servidor. Essa troca aconteceu em Novembro de 2009 e passou desapercebido nos últimos meses.






Assim que a falha foi descoberta, eles trataram de trocar os arquivos e, logo em seguida, colocaram um alerta e geraram uma nova chave PGP para garantir que não haveria um novo erro novamente.


Por sorte o impacto desse torjan é apenas em servidores IRC que não são tão numerosos hoje em dia em relação aos anos 90 e o início dos anos 2000. Mas mostra que uma falta de cuidado pode comprometer qualquer sistema.


Outro exemplo pratico de como uma falha de segurança pode ser preocupante tem a última falha do Flash. Desta vez multiplataforma já que o Adobe Flash está presente em Windows, Linux e Mac OS X e pode comprometer o sistema assim que acessar um site com Flash. A solução mais simples é atualizar o Flash para a última versão. Porém as coisas complicaram para os usuários de Linux 64 bits: A Adobe cancelou a versão beta do Flash 64 bits 


Eu aqui que uso o Debian 64 bits e me preocupo seriamente no quesito segurança e não poderia arriscar a continuar com o mesmo Flash antigo.


Ainda bem que, no Linux, existe o nspluginwrapper que possibilita que os plugins de 32 bits rodem nos navegadores de 64 bits. Assim consegui instalar a última versão 32 bits que está rodando com quase nenhum problema até que a Adobe lance novamente o Flash 64 para Linux e/ou outros sistemas.


Então, se ficou preocupado que o seu sistema ainda não está atualizado, atualize. Se tiver o Windows, use o Windows Update. Se o seu Windows for pirata, evite, ao menos, o WGA e desabilite a instalação automática para evitar algumas mensagens indesejaveis ou bloqueio do sistema por conta do WGA que se instala silenciosamente. E não esqueça de um software de Firewall e anti-virus. Se usar o Linux, use o sistema de atualização da distribuição que o deixará seguro. Se estiver usando algum servidor critico na empresa, teste a atualização primeiro e, em seguida, tendo a certeza que a atualização deu certo, coloque em produção.


E, por fim, não clica em qualquer link que apareça, não utilze senhas fáceis demais e não deixe o servidor instalado com todos os serviços padrões. Normalmente, quando instalo um servidor, começo apenas com o básico, quase sem nenhum serviço, e vou adicionando e configurando o que preciso, o que garante alguma segurança. E, mais uma vez, mantenha atualizado. Pode não dar garantia de 100% para evitar alguma invasão, mas vai dar mais trabalho para eles tentarem fazer algo.

domingo, 6 de dezembro de 2009

O que fazer quando o celular cai na água

Numa das olhadas nos blogs encontrei este artigo interessante sobre o que fazer quando o celuar cai numa piscina ou no vaso sanitário. É só acessar o post do Blogando Notícias que tem todas as dicas de como fazer para recuperar o seu aparelho.




No meu caso só entrou quase nada de água no meu Nokia 6125 em 2007 por conta das chuvas em Nova Iguaçu e o aparelho sobreviveu depois de deixar secando por algumas horas. Já ouvi histórias que um outro modelo da Nokia, o 2280, que sobreviveu de quedas até mesmo a afogamentos em rios, lagos e praias. Deve ser por conta da fama da Nokia em fabricar aparelhos altamente resistentes.

quinta-feira, 5 de novembro de 2009

Cuidado com o email do Novo Orkut

Os desocupados de plantão estão aprontando novamente.


Veja a imagem de um email que recebi:




Então cuidado com este email já que ele leva para uma outra página que faz com que o seu computador seja infectado por um malware e comece a fazer várias coisas sem que você saiba, como repassar senhas para o criador do mesmo, enviar spams, etc..


Então fica o alerta e avisa logo o amigo do Pedro.


sábado, 31 de outubro de 2009

Windows 7 e ICS (Compartilhamento de Internet)

Neste final de semana tomei coragem e instalei o Windows 7. Tinha feitos alguns testes em máquinas virtuais e vi que dava para instalar sem problemas e aposentar o XP da primeira partição.


Mas o nosso amigo Murphy resolve atrapalhar um pouco. Primeiro problema encontrado: Sem som e os drivers da Creative não funcionavam na Sound Blaster Live!. Ainda bem que encontrei a solução no kX Project.

Segundo problema, limitação de memória. O Windows só reconhece 3,25 dos 4 GB que tenho instalado aqui. Então resolvi partir para a versão 64 bits.


Terceiro problema: Desta vez criado pela própria Microsoft. Ela mudou o padrão do ip que deve ser usado pela rede interna do ICS. Em vez do tradicional 192.168.0.1 ela muda para 192.168.137.1. Para muitos não seria um impecilho. Mas para quem quer acessar o roteador que está na faixa do 192.168.0.0/24, que tem máquinas com ip fixo nesta faixa. Que o Debian instalado que também usa o 192.168.0.1 para refletir esta configuração e compartilhar a rede com um notebook ou mais uma outra máquina via DHCP este sim seria um problema.


Como não estou afim de fazer esse tipo de alteração em todas as máquinas, resolvi pesquisar o registro. Rodei o regedit e fui em Editar -> Localizar e fui procurar pelo ip 192.168.137.1.


Em toda instância desse ip eu alterei para 192.168.0.1, reiniciei o computador, conectei no Velox e o compartilhamento funcionou.


Para quem tem preguiça eu repasso as chaves aonde deve procurar. Só tem que ter cuidado para não fazer nenhuma besteira no registro. Qualquer alteração errada pode deixar o sistema instável ou inutilizável.



HKEY_LOCAL_MACHINE\SYSTEM\Controlset001\services\SharedAccess\Parameters

HKEY_LOCAL_MACHINE\SYSTEM\Controlset002\services\SharedAccess\Parameters

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SharedAccess\Parameters

Nas chaves:


ScopeAddress
ScopeAddressBackup



HKEY_LOCAL_MACHINE\SYSTEM\Controlset001\services\Tcpip\Parameters\Interfaces\{Um monte de letras que deve variar conforme a instalação}

HKEY_LOCAL_MACHINE\SYSTEM\Controlset002\services\Tcpip\Parameters\Interfaces\{Um monte de letras que deve variar conforme a instalação}

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\{Um monte de letras que deve variar conforme a instalação}



Chave: IPAddress


Se eu encontrar mais alguma curiosidade eu posto aqui.