Mostrando postagens com marcador alm. Mostrar todas as postagens
Mostrando postagens com marcador alm. Mostrar todas as postagens

terça-feira, 21 de julho de 2015

Como fazer deploy no nexus

Para fazer seu projeto fazer deploy no nexus você precisa:

Criar repositórios no nexus:
Acesse o nexus como admin e crie dois repositórios do tipo "Hosted Repository"
Configure o "Repository Policy" do primeiro como "Release" e dê o nome de nome-do-projeto-releases
Configure o "Repository Policy" do segundo como "Snapshot" e dê o nome de nome-do-projeto-snapshots

Adicionar no seu pom: (altere a URL e o nome-do-projeto)
<distributionManagement>
<repository>
<id>nome-do-projeto-releases</id>
<url>http://nexus.localhost8080.com.br/nexus/content/repositories/nome-do-projeto-releases</url>
</repository>
<snapshotRepository>
<id>nome-do-projeto-snapshots</id>
<url>http://nexus.localhost8080.com.br/nexus/content/repositories/nome-do-projeto-snapshots</url>
</snapshotRepository>
</distributionManagement>

Configurar settings.xml
Configure o setting.xml (seja no maven da sua máquina ou no Jenkins (no jenkins você pode configurar pelo managed files também))

      <servers>
          <server>
              <id>nome-do-projeto-releases</id>
              <username>user_no_nexus_com_permissao_de_deploy</username>
              <password>senha_do_user</password>
          </server>
          <server>
              <id>nome-do-projeto-snapshots</id>
              <username>user_no_nexus_com_permissao_de_deploy</username>
              <password>senha_do_user</password>
          </server>
      </servers>


Deploy na mão
Abra o terminal e rode o comando: mvn clean deploy

Deploy pelo jenkins
Mesma coisa que manual, porém configure o seu job para fazer o mvn clean deploy


Abraço!!
Adriano Schmidt

segunda-feira, 11 de maio de 2015

Git - reset/revert arquivo

Fala galera,

Hoje fiz um commit e coloquei nele um arquivo q não deveria ter colocado.

Então para voltar o para uma versão antiga rodei o comando:
git checkout origin/master src/main/java/br/com/localhost8080/test01/MinhaClasse.java

Explicando o comando:
git checkout <branch ou commit onde está a versão que você quer restaurar> <caminho do arquivo>

Como eu quis alterar um commit, depois eu dei um "git commit --amend" e fiz o push novamente.

Mais detalhes em:
http://schacon.github.io/git/git-checkout.html

Abraço!
Adriano Schmidt

segunda-feira, 23 de fevereiro de 2015

Trabalhando com tags no Git

Referência básica para trabalhar com tags:

Para listar as tags no git:
git tag

Para listar as tags a partir de um filtro:
git tag -l 'v1.0*'

Para criar uma tag:
git tag -a <nome da tag> -m "<mensagem opcional>"
git tag -a v1.0.2 -m "entrega realizada com a funcionalidade X"

Para exibir uma tag:
git show v1.0.2

Para fazer push de uma tag:
git push origin v.1.0.2

Para fazer push de todas as tags:
git push origin --tags

Para deletar uma tag:
git tag -d v1.0.2

Para fazer push da deleção da tag:
git push origin :refs/tags/v.1.0.2

Para criar uma tag de um commit antigo:
git tag -a v.1.0.2 -m "entrega da funcionalidade X" <id_do_commit>

Mais em:
http://git-scm.com/book/en/v2/Git-Basics-Tagging
http://git-scm.com/docs/git-tag

Vaaleu!!
Adriano Schmidt

quinta-feira, 19 de fevereiro de 2015

git cherry-pick

Fala galera \o)

Você tem um commit perdido no tempo em algum branch do seu projeto... aquele commit resolvia um bug e você gostaria de aplicá-lo em sua master... seria tão legal se fosse possível simplesmente pegar as alterações daquele commit e aplicar na master, não seria? Pois saiba que é possível :D

O git tem o comando cherry-pick... ele pega as alterações de um commit e aplica em algum lugar.

Passo 1) Identifique o ID do commit que voce quer resgatar. Ex: 25210a9e67b0d77ee54ee67d9e106175c9285f18
Passo 2) Estando na master ou onde você quer aplicar o commit, rode o commando: git cherry-pick 25210a9e67b0d77ee54ee67d9e106175c9285f18
Passo 3) Dê um: git status
Passo 4) Caso apareçam conflitos, resolva-os.
Passo 5) Dê um: git add .
Passo 6) Dê um: git cherry-pick --continue
Passo 7) Confira se está tudo OK com um: git status
Passo 8) Faça um push: git push

Pronto, resolvido :D

Agradeço ao meu brother Alfredo André Zipperer que tem me feito subir uns 3 levels nas skills de git \o)

Valeu!
Adriano Schmidt

Alterar autor commit git

Para alterar o autor do seu último commit no Git basta fazer:

git commit --amend --author "Novo nome <email@email.com>"

Para alterar o nome e email em todos os commits de uma determinada pessoa é só fazer assim:

git filter-branch -f --commit-filter 'if [ "$GIT_AUTHOR_NAME" = "Adriano Ximit" ];
then export GIT_AUTHOR_NAME="Adriano Schmidt"; export GIT_AUTHOR_EMAIL=adriano@localhost8080.com.br;
fi; git commit-tree "$@"'

E assim também (pois caso contrário você só alterou o autor, mas o commiter não):

git filter-branch -f --commit-filter 'if [ "$GIT_COMMITTER_NAME" = "Adriano Ximit" ];
then export GIT_COMMITTER_NAME="Adriano Schmidt"; export GIT_COMMITTER_EMAIL=adriano@localhost8080.com.br;
fi; git commit-tree "$@"'

Depois de alterar você tem que dar um push... provavelmente com um --force

git push --force

Fontes:
http://stackoverflow.com/questions/750172/change-the-author-of-a-commit-in-git
http://stackoverflow.com/questions/4493936/git-could-i-change-my-name-and-surname-in-all-previous-commits

Abraço!!
Adriano Schmidt

quinta-feira, 5 de fevereiro de 2015

The change could not be merged due to a path conflict

Estou em um projeto que usa o Gerrit como revisor de código, é muito bom!!

E ao revisar e aprovar um commit deu o erro abaixo pois outro commit foi aprovado antes e deu conflito já que os dois commits mexeram na mesma linha de um arquivo.

Code Review - Error
The change could not be merged due to a path conflict.
Please rebase the change locally and upload the rebased commit for review.

Ou também pode acontecer o erro:

The change could not be rebased due to a path conflict during merge.

Para resolver você tem que fazer um rebase localmente e resolver os conflitos.

Passo 1) git fetch origin <nome_da_branch>
Passo 2) git fetch <url> && git checkout FETCH_HEAD (esse comando você pega no próprio gerrit)
Passo 3) git rebase origin/<nome_da_branch>
Passo 4) git status (ao rodar esse comando vai mostrar os arquivos em conflito, resolva os conflitos abrindo os arquivos e ajustando o que for necessário)
Passo 5) git add .
Passo 6) git rebase --continue
Passo 7) git push origin HEAD:refs/for/<nome_da_branch> (esse é o push normal quando você manda algo para o Gerrit)
Passo 8) git checkout <nome_da_branch> (apenas para voltar a sua branch e poder voltar a trabalhar)


Se o rebase for muito grande você pode fazer um cherry-pick


Para uma explicação mais detalhada recomendo a leitura desse artigo:
http://www.mediawiki.org/wiki/Gerrit/resolve_conflict
Porém, nesse artigo é usado o git-review para fazer o fetch/checkout (Passo 2) e o push (Passo 7). Ignore essa parte e faça conforme eu mostrei.

Para estudar sobre o rebase: http://git-scm.com/book/pt-br/v1/Ramifica%C3%A7%C3%A3o-Branching-no-Git-Rebasing

Para estudar sobre o Gerrit: https://code.google.com/p/gerrit/

Abraço!
Adriano Schmidt

sexta-feira, 30 de janeiro de 2015

Quebra de linha no GIT

Opa : )

No projeto que estou tem arquivos com quebra de linha CRLF (\r\n que é o padrão do Windows) e outros com LF (\n que é o padrão do linux)..

E o Git faz uma conversão dos caracteres de quebra de linha no momento que você adiciona o arquivo ao index (git add)

Então tenho que alterar a propriedade autocrlf no git dependendo do arquivo que vou mexer.. para que seja feita a conversão de quebra de linha de forma adequada.

Os comando que eu uso são esses:

Para arquivos com CRLF:
git config --global --unset core.autocrlf && git config --global --add core.autocrlf true
Para arquivos com LF
git config --global --unset core.autocrlf && git config --global --add core.autocrlf false

Para entender melhor: http://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration#Formatting-and-Whitespace

Abraço!
Adriano Schmidt

sábado, 11 de outubro de 2014

Alterar usuário/senha/url no GIT

Para alterar usuário ou senha de projeto no GIT basta seguir os seguinte passos:

Acesse pelo prompt de comandos a pasta do seu projeto.

Rode o comando abaixo para ver o usuário utilizado:

$ git config --get remote.origin.url
http://AdrianoSchmidt:minhasenha@git.localhost8080.com.br/git/projeto/projeto.git

Rode o comando abaixo para remover o usuário e senha (na verdade remove a URL inteira)

$ git config --unset remote.origin.url

Rode o primeiro comando novamente e veja que não existe mais valor para essa variável

$ git config --get remote.origin.url

Rode o comando abaixo atualizando o usuário ou senha:

$ git config --add remote.origin.url http://AdrianoSchmidt:novasenha@git.localhost8080.com.br/git/projeto/projeto.git

Verifique novamente e veja se está como desejado:

$ git config --get remote.origin.url
http://AdrianoSchmidt:novasenha@git.localhost8080.com.br/git/projeto/projeto.git




Ou rode o comando abaixo e edite direto a propriedade:

$ git config --edit



Abraços!
Adriano Schmidt

quarta-feira, 18 de junho de 2014

Trabalhando com 2 repositórios Git

Pessoal.. temos um repositório Git na minha empresa e todos os desenvolvedores fazem commit e push lá. E de tempos em tempos fazemos o push desses fontes para o repositório Git que fica no nosso cliente.

Vou explicar uma estratégia simples e comumente usada nesse cenário.

Com essa estratégia que vou explicar você mantém o histórico de commits e permite a realização de merges caso outras pessoas commitem no mesmo projeto no repositório do cliente.

Seguinte:

No Git, cada commit tem um id.. que é um hash único...

Quando você tem 2 repositórios, um commit deve ter o mesmo id nos 2 repositórios...

O histórico de commits de um, será o mesmo no outro... geralmente é muito importante manter o histórico dos commits...

Para isso, você adiciona dois remotes no seu projeto (no nosso caso era só adicionar o segundo, já que o primeiro já tínhamos)

git remote add origin http://www.minhaempresa.com.br/git/projeto.git
git remote add cliente http://www.meucliente.com.br/git/projeto.git

Depois é só você escolher onde quer fazer push

git push origin master

ou

git push cliente master

Você pode até dar um git config e definir qual dos dois remotes é o padrão para quando você digitar apenas "git push" ele saber qual usar.

É isso!

Abraços!
Adriano Schmidt