Git – Dicas

Resultado de imagem para git

Anular alterações locais – Override and Update

git fetch --all git reset --hard origin/master

 

Transferindo um repositório local para o github

git push --mirror git@github.com:username/project.git

 

Usando o uma pasta no Dropbox para armazenar seu projecto git na nuvem com segurança.

# Dropbox folder
mkdir ~/Dropbox/Projects/yourproject.git/
cd ~/Dropbox/Projects/yourproject.git/
git --bare init

#Local
cd local/yourproject/
mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
cd my-app
git init
git add .
git commit -m 'initial commit'
git remote add origin ~/Dropbox/Projects/myproject.git
git push origin master
Anúncios

Script para buscar uma classe em algum jar

As vezes queremos saber em qual jar esta uma determinada classe, então esta ai um script que irá ajuda-lo a encontrar!


#!/bin/sh

if [ -z "$2" ]
then
echo Usage: $0 Directory ClassName
exit 1
fi

for f in $(find $1 -name '*.jar')
do
jar tf $f | grep "$2" && echo "[in $f]"
done

Exemplo buscando nos modelos do wildfly-8.1.0.Final:

findinjar.sh . EntityManagerFactory.class
javax/persistence/EntityManagerFactory.class
[in modules//system/layers/base/javax/persistence/api/main/hibernate-jpa-2.1-api-1.0.0.Final.jar]
org/hibernate/ejb/HibernateEntityManagerFactory.class
org/hibernate/jpa/HibernateEntityManagerFactory.class
[in modules//system/layers/base/org/hibernate/main/hibernate-entitymanager-4.3.5.Final.jar]

Comandos Úteis – Subversion – SVN

Segue alguns comandos úteis para quem trabalha com o Repositório Subversion ou SVN

Unknown

# Mostrar informações da cópia local.
svn info

# Visualizar commits de uma revisão específica.
svn log --verbose -r 42

# Visualizar commits em um intervalo.
svn log <url> -qv -r {2015-07-30}:{2015-08-03}

# Visualizar commits somarizados em um intervalo.
svn diff <url> --summarize -r {2015-08-03}:{2015-08-04}

# Visualizar as diferenças entre 2 branches.
svn diff --summarize --old ^/branches/b26_0_0_20150522 --new ^/trunk

# Fazer um checkout de um repositório.
svn checkout/co <url> <path>
#Ex: svn co svn://svn.myserver.com/myproject/trunk myproject

# Comitando.
svn add myfolder
svn commit -m "Adding myfolder" myfolder
svn commit -m "log messages"

# Removendo.
svn delete myfolder
svn commit -m "Removing myfolder file" myfolder

# Diferença.
svn diff filename

# Status da minha cópia local.
svn status

# Atualizar a minha cópia local.
svn update

# Ignorar recursivo.
svn propset svn:ignore '*.index' . --recursive

# Obter o código de uma revisão antiga.
svn up -rXXXX

Comandos Úteis – OSX – Desktop

Segue alguns comandos bobos, mas úteis para os iniciantes do OSX no Mac

imagem_10_atalhos_macosx00_small (1)

Simbolos:

  • ⌘ = Command
  • ⌥ = Option
  • ⌃ = Control
  • ⇧ = Shift
  • ↩ = Return (ou Enter)

Comandos:

  • Minimizar Janela Activa: Command+M
  • Minimizar Todas as Janela: Command+Option+H+M
  • Alternar entre Janelas: Command + Tab até achar a janela, pressionar o Option e soltar o Tab
  • Fechar : Command+W
  • Sair : Command+Q
  • Apagar : Command+Delete
  • Ir para Docker: Control+F3
  • Ir para Spotlight: Command + Space
  • Printscreen Janela Ativa: Command+Shift+3
  • Printscreen Selecionável: Command+Shift+4
  • Ir para início/final da linha/página: Command + ← ↑ → ↓

Gerenciando variáveis de ambiente JAVA_HOME no Mac, Linux, …

java

Existem diversas formas para gerenciar variáveis de ambiente em sistema Unix, uma forma simples é:

Adicionar ao ficheiro /etc/profile (é preciso ter permissão de root).

Exemplo:

sudo vi /etc/profile

/etc/profile

JAVA_HOME=/opt/java/jdk1.7.0_80
ANT_HOME=/opt/java/apache-ant-1.9.6
M2_HOME=/opt/java/apache-maven-3.3.3

PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin:$M2_HOME/bin

export PATH JAVA_HOME ANT_HOME M2_HOME 

Pronto!

Agora só fazer um reload do ficheiro, para não ter que reiniciar a máquina! 🙂

source /etc/profile

Para testar se tudo deu certo. Verificar a versão. Exemplo

java -version
# ant -version
# mvn -version

Fazendo login via ssh sem precisar usar senha

ssh

Quando trabalhamos fazendo conexões ssh em servidores remotos várias vezes ao dia via terminal precisamos saber sempre os utilizadores e senhas dos hosts remotos isto se torna um pouco entediante as vezes.

Exemplo, se voce tiver um servidor ssh instalado na sua máquina, pode testa-lo sem precisar se conectar em um servidor remoto, tente:

ssh localhost

Precisou de senha, não é mesmo?

Que tal se não fosse necessário digitar a senha?

Então é para isto que este script serve!

Basta usa-lo: ./sshnologin.sh ipservidorremoto


# Simple script for copy the ssh keys to a remote host.
# autor: matafe
#!/bin/bash

if [ "x$1" = "x" ]; then
echo 'Target hostname or IP required!'
exit 1;
fi

target_host_ip="$1"
file_key_local="~/.ssh/id_rsa.pub"

echo "Coping '$file_key_local' to host '$target_host_ip' ..."
scp ~/.ssh/id_rsa.pub $target_host_ip:~/

echo "Adding keys on remote host '$target_host_ip' ..."
ssh $target_host_ip 'if [ ! -d ~/.ssh ]; then mkdir ~/.ssh; fi; chmod 700 ~/.ssh; cat ~/id_rsa.pub >> ~/.ssh/authorized_keys; chmod 600 ~/.ssh/authorized_keys; rm ~/id_rsa.pub; chmod 750 ~/'

echo "Testing configuration..."
ssh $target_host_ip 'echo "Configuration done!"'

Pode testá-lo, provavelmente agora já não precise mais de senha!

ssh localhost

DICA: Caso queira colocar seu script no path para de qualquer lugar do terminal poder executá-lo. É só criar um link simbólico em “/usr/local/bin“. Lembre de dar permissão de execução para seu script ssh! (chmod 755 /home/mferraz/Dev/Unix/Scripts/sshnologin.sh)

Ex: ./sshnologin.sh

sudo ln -s /home/mferraz/Dev/Unix/Scripts/sshnologin.sh /usr/local/bin/sshnologin.sh

Sei que talvez voce já sabia, mas é bem útil, não? 🙂

Criando uma rotina de backup no Mac através de script.

Ja temos várias maneiras de fazer backup dos nossos dados, cada um tem o seu jeito preferido, a sua ferramenta de confiança!

No Mac temos um aplicativo muito bom, a “Máquina do Tempo”, ou “Time Machine”.

Porém neste post vou dar um exemplo, usando o rsync, um software livre encontrado em qualquer distribuição UNIX.

Para instalá-lo, usar o Mac ports, Homebrew ou qualquer gerenciador de software de sua preferência! (Desculpe, não é o objetivo aqui mostrar sua instalação)

A grande vantagem do rsync é que voce pode fazer backup de forma incremental dos seus dados, e não precisa ficar apagando fotos backup antigo (snapshots), caso fique cheio seu HD Externo de backup.

Segue o script run-backup.sh.command :

* O .command é apenas para ficar como um atalho do desktop do meu mac e ser iterativo, pois se fosse apenas o shell script, se eu quisesse ver o resultado deveria executá-lo pelo terminal.


# Simple script for run an incremental backup using rsync unix command.
# autor: matafe
#!/bin/bash

echo "Running My Backup..."

SOURCE_FOLDER="/Users/matafe/"
TARGET_FOLDER="/Volumes/matafe-backup/MyBackup"

EXCLUDE_FILES=('*.class' '*.jasper' '*.log' '.Trash' '.grails' '.jenkins' '.gradle' '.m2' '.ivy2' '.nmp' '.dropbox' 'Library')

TMP_EXCLUDE=""

for i in "${EXCLUDE_FILES[@]}"
do
	TMP_EXCLUDE="$TMP_EXCLUDE --exclude=$i"
done

CMD="rsync -av --progress $TMP_EXCLUDE $SOURCE_FOLDER $TARGET_FOLDER"

echo "$CMD"

eval $CMD

read -p "Press any key to continue... " -n1 -s

echo "Done."

Já é bem auto explicativo, mas ai vai algumas observações:

– De: /Users/matafe/
– Para: /Volumes/matafe-backup/MyBackup
– Irá excluir alguns arquivos: .log, *.class, …. ( não quero copia-los )
– No final ira mostrar o resultado e aguardar por pressionar algum tecla para fechar.

E ai? Qual é a sua ferramenta preferida?