Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
wiki:documentation:devguide:gitlab [2016/07/26 14:44] gribeiro [Política de Uso do Repositório de Código Fonte da Terralib5 no GitLab] |
wiki:documentation:devguide:gitlab [2016/08/03 16:15] (current) felipe.siqueira [Configurando sua Cópia Local do Fork para Sincronizá-lo com o Repositório Original] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Política de Uso do Repositório de Código Fonte da Terralib5 no GitLab ====== | + | ====== Usando o GitLab da TerraLib ====== |
- | **Resumo:** Este documento explica como os desenvolvedores devem criar forks do repositório original da Terralib5 no GitLab e configurar seus repositórios locais para mantê-los em sincronia com o original, bem como submeter pedidos para incorporação de modificações no repositório original. | + | **Resumo:** Este documento explica como os desenvolvedores devem criar //forks// do repositório original da TerraLib no ambiente do GitLab, bem como configurar seus repositórios locais para mantê-los em sincronia com o original. Também é apresentado como submeter pedidos para incorporação de modificações no repositório original. |
- | O repositório oficial da Terralib5 no GitLab encontra-se disponível no seguinte endereço: https://gitlab.dpi.inpe.br/terralib/terralib. | + | ===== Introdução ===== |
+ | |||
+ | O repositório oficial da TerraLib no GitLab encontra-se disponível no seguinte endereço:\\ https://gitlab.dpi.inpe.br/terralib/terralib | ||
Este repositório deverá ser utilizado apenas para download do código fonte oficial. | Este repositório deverá ser utilizado apenas para download do código fonte oficial. | ||
- | Desenvolvedores que desejem realizar alterações no código deverão criar //forks// a partir desse repositório principal, submetendo as modificações como solicitações de //merge request//. | + | Os desenvolvedores que queiram realizar alterações no código fonte e depois submeter essas alterações para integração ao repositório oficial, deverão criar //forks// a partir do repositório principal, submetendo as modificações como solicitações de //merge request//. |
- | Para clonar o repositório oficial, você pode utilizar o git em linha de comando da seguinte forma: | + | Se você quer apenas fazer o download do código fonte oficial, consulte o documento [[:wiki:documentation:devguide:cloning|Cloning TerraLib/TerraView Repository]]. |
- | <code> | + | |
- | git clone https://gitlab.dpi.inpe.br/terralib/terralib5.git . | + | |
- | </code> | + | |
- | === GitLab e o grupo Terralib === | + | ===== Criando um fork do Repositório Oficial da TerraLib ===== |
- | Atualmente a organização criada no [[https://gitlab.dpi.inpe.br/terralib|GitLab]] possui três times: | + | No seu navegador, vá para o endereço: https://gitlab.dpi.inpe.br. |
- | * **Owners:** os coordenadores técnicos do projeto possuem acesso irrestrito à organização, criação de repositórios e administração de integrantes dos times. | + | |
- | * **Masters:** o(s) gerente(s) de desenvolvimento e líder(es) de equipe que possui(em) acesso de administração do [[https://gitlab.dpi.inpe.br/terralib/terralib5| Repositório principal da Terralib]]. | + | |
- | * **Developers:** o time de desenvolvedores da Terralib possui acesso de leitura no [[https://gitlab.dpi.inpe.br/terralib/terralib5|Repositório principal da Terralib5]]. | + | |
- | Os desenvolvedores são encorajados a utilizar o recurso de criação de forks do repositório oficial da Terralib. Desta forma, é possível que um desenvolvedor seja capaz de realizar modificações, correções e experimentos sem causar inconsistências no repositório oficial. Assim, modificações devem ser submetidas como merge requests. | + | Na interface gráfica do GitLab, navegue até o projeto TerraLib:\\ https://gitlab.dpi.inpe.br/terralib/terralib |
- | === Fazendo o fork do repositório da Terralib5 === | + | O botão de //Fork// se encontra no centro da página. |
- | Na janela do [[https://gitlab.dpi.inpe.br/|GitLab]], navegue até o [[https://gitlab.dpi.inpe.br/terralib/terralib5|repositório da Terralib]]. | + | Basta clicar no botão de //Fork// e selecionar o seu usuário no formulário que será exibido. |
- | O botão de //Fork// se encontra no centro da página. Basta clicar nesta opção e selecionar o seu usuário. Você terá feito um //fork// do repositório original. | + | Ao final deste processo você terá o seu //fork// disponível em um link como:\\ https://gitlab.dpi.inpe.br/gribeiro/terralib |
- | === Configurando seu Fork para Mantê-lo Sincronizado com o Repositório Original === | + | |
- | Crie uma cópia local do seu //fork//: | + | ===== Criando uma Cópia Local do seu Fork ===== |
- | <code> | + | |
- | $ git clone https://gitlab.dpi.inpe.br/seu-nome-usuario/terralib5.git | + | **1.** Para criar uma cópia local do seu //fork// para trabalhar, basta apontar o Git para o endereço do seu //fork//, como por exemplo: |
+ | <code bash> | ||
+ | $ GIT_SSL_NO_VERIFY=true git clone https://gitlab.dpi.inpe.br/gribeiro/terralib.git . | ||
</code> | </code> | ||
- | Em seguida, entre na pasta terralib5 e ajuste o nome de usuário e e-mail: | + | **Atenção:** No comando acima, desabilitamos o uso de certificados SSL. Se você preferir, pode desabilitar de forma local ou global essa verificação. Para deabilitar de forma global faça: |
- | <code> | + | <code bash> |
- | git config user.name your-gitlab-login | + | $ git config --global http.sslVerify false |
- | git config user.email your-gitlab-email-contact | + | |
</code> | </code> | ||
- | Para configurar o git para sincronizar a sua cópia local com o repositório original: | + | Se você preferir desabilitar a verificação de certificados SSL apenas para o repositório que você já clonou, faça: |
- | + | <code bash> | |
- | **1)** Vá ao seu navegador e acesse o [[https://gitlab.dpi.inpe.br/terralib/terralib5|repositório original da Terralib5]]. | + | $ git config http.sslVerify false |
+ | </code> | ||
- | **2)** Na barra à direita, copie o endereço do repositório original: https://gitlab.dpi.inpe.br/terralib/terralib5.git. | + | **2.** Após ter clonado o repositório, não se esqueça de configurar suas credenciais para que os commits sejam anotados com o seu usuário: |
- | + | ||
- | **3)** Na linha de comando, vá para a pasta em que você criou a cópia local do seu //fork//. | + | |
- | + | ||
- | **4)** Para saber o repositório remoto que se encontra configurado atualmente para seu //fork//, faça: | + | |
<code> | <code> | ||
- | $ git remote -v | + | $ git config user.name your-login |
+ | $ git config user.email your-e-mail | ||
</code> | </code> | ||
- | A saída será algo como: | + | |
- | <code> | + | **3.** Se quiser, já alterne para o //branch// correto: |
- | origin https://gitlab.dpi.inpe.br/seu-nome-usuario/terralib5 (fetch) | + | <code bash> |
- | origin https://gitlab.dpi.inpe.br/seu-nome-usuario/terralib5 (push) | + | $ git checkout -b develop origin/develop |
</code> | </code> | ||
- | **5)** Para configurar seu repositório local, associando-o com o repositório oficial, use o seguinte comando: | + | ===== Configurando sua Cópia Local do Fork para Sincronizá-lo com o Repositório Original ===== |
+ | |||
+ | **1.** Após ter clonado e configurado o seu repositório local a partir do seu //fork//, será necessário associar seu repositório local com o repositório oficial. Para isso, utilize o seguinte comando: | ||
<code> | <code> | ||
- | $ git remote add upstream https://gitlab.dpi.inpe.br/terralib/terralib5.git | + | $ git remote add upstream https://gitlab.dpi.inpe.br/terralib/terralib.git |
</code> | </code> | ||
- | **6)** Verifique se o novo //upstream repository// especificado encontra corretamente apontado: | + | Pelo TortoiseGit: |
+ | |||
+ | {{:wiki:documentation:devguide:addremotetortoisegit.jpg?600|}} | ||
+ | |||
+ | **2.** Verifique se o //upstream// do seu repositório local foi associado corretamente ao endereço do repositório oficial (https://gitlab.dpi.inpe.br/terralib/terralib.git). Para isso, utilize o comando abaixo: | ||
<code> | <code> | ||
$ git remote -v | $ git remote -v | ||
</code> | </code> | ||
- | Você deverá ver a URL do seu //fork// como //origin// e a URL do repositório original como //upstream//, conforme a saída abaixo: | + | |
+ | A saída deverá ser semelhante à seguinte: | ||
<code> | <code> | ||
- | origin https://gitlab.dpi.inpe.br/seu-nome-usuario/terralib5 (fetch) | + | origin https://gitlab.dpi.inpe.br/seu-nome-usuario/terralib.git (fetch) |
- | origin https://gitlab.dpi.inpe.br/seu-nome-usuario/terralib5 (push) | + | origin https://gitlab.dpi.inpe.br/seu-nome-usuario/terralib.git (push) |
- | upstream https://gitlab.dpi.inpe.br/terralib/terralib5.git (fetch) | + | upstream https://gitlab.dpi.inpe.br/terralib/terralib.git (fetch) |
- | upstream https://gitlab.dpi.inpe.br/terralib/terralib5.git (push) | + | upstream https://gitlab.dpi.inpe.br/terralib/terralib.git (push) |
</code> | </code> | ||
- | === Sincronizando Sua Cópia Local e Seu Fork com o Repositório Original === | + | ===== Sincronizando Sua Cópia Local e Seu Fork com o Repositório Original ===== |
- | **1)** Faça o //fetch// dos //branches// e seus respectivos //commits// do repositório //upstream//: | + | **1.** Faça o //fetch// dos //branches// e seus respectivos //commits// do repositório //upstream//: |
<code> | <code> | ||
$ git fetch upstream | $ git fetch upstream | ||
</code> | </code> | ||
- | + | **2.** Faça o //merge// do repositório oficial (//upstream/develop// ou outro ramo desejado) com a sua cópia local (que ocorrerá com o //branch// corrente): | |
- | **2)** Se você estiver fazendo modificações no branch //master//, assegure-se de estar nele: | + | |
<code> | <code> | ||
- | $ git checkout master | + | $ git merge upstream/develop |
</code> | </code> | ||
- | Se você já estiver neste //branch// receberá uma mensagem como a abaixo: | + | **3.** Envie suas modificações para o repositório do seu //fork//: |
<code> | <code> | ||
- | Already on 'master' | + | $ git push |
- | Your branch is up-to-date with 'origin/master'. | + | |
</code> | </code> | ||
- | **3)** Faça o //merge// do //upstream/master// (ou do ramo desejado) com o seu ramo local para sincronizar seu repositório local com o original: | + | |
- | <code> | + | ===== Fazendo um Pedido de Merge (Merge Requests) ===== |
- | $ git merge upstream/master | + | |
+ | Para enviar as modificações presentes no repositório do seu //fork// para o repositório original será necessário fazer um pedido de //merge// através da interface gráfica do GitLab. | ||
+ | |||
+ | No seu navegador, vá para o endereço do seu //fork//, como por exemplo:\\ https://gitlab.dpi.inpe.br/gribeiro/terralib. | ||
+ | |||
+ | No painel à esquerda selecione a opção //Merge Requests// e crie um novo pedido (//New Merge Request//). | ||
+ | |||
+ | Você será redirecionado para uma página com dois mecanismos na tela. O objeto apresentado em //Source branch// representa o seu fork e //Target Branch// o repositório oficial da TerraLib. | ||
+ | |||
+ | Em //Source Branch//, selecione o branch que estão as modificações do seu fork. Em //Target Branch//, selecione para qual branch do repositório oficial que deve incorporar as novas mudanças. Em seguida, selecione "Compare branches and continue". | ||
+ | |||
+ | **Atenção** Se não houver mudanças comparando os branches, você não poderá prosseguir com a criação do pedido de //Merge Request//. | ||
+ | |||
+ | Você será redirecionado para a página de criação e detalhes adicionais do //Merge Request//. Preencha um título do pedido, adicione uma descrição do que esta foi feito e em seguida confirme. | ||
+ | |||
+ | ===== Dicas para o Git ===== | ||
+ | |||
+ | === Alterando o endereço de um remote === | ||
+ | |||
+ | Caso você queira alterar o endereço de um remote, use o comando a seguir em seu repositório local: | ||
+ | <code bash> | ||
+ | $ git remote set-url <nome-do-remote> <novo-endereço> | ||
</code> | </code> | ||
+ | === Desfazendo um commit no seu repositório local === | ||
- | === Fazendo pedidos de merge (Merge Requests) === | + | Desfazendo o último commit e mantendo as alterações: |
+ | <code bash> | ||
+ | $ git reset HEAD^ | ||
+ | </code> | ||
- | Para enviar as modificações para o repositório original é necessário fazer pedido de merge pela interface do GitLab. | + | Desfazendo o último commit e as alterações **permanentemente**: |
- | Navegue para o seu fork e vá para "Merge Requests" disponível no menu lateral esquerdo e clique em "New Merge Request". | + | <code bash> |
+ | $ git reset HEAD^ --hard | ||
+ | </code> | ||
+ | |||
+ | Desfazendo múltiplos commits: | ||
+ | |||
+ | <code bash> | ||
+ | $ git reset HEAD~<quantidade-de-commits> | ||
+ | </code> | ||
- | Na janela do navegador, no site do GitLab do seu //fork//, selecione o ramo correto, onde você fez as modificações e em seguida selecione a opção //"Compare branchs and continue"//. |