From 8cb6e7c74ac2be761cc6a1c710555dfb9a8e4f4e Mon Sep 17 00:00:00 2001 From: Knight Rider <batman@justiceleague.org> Date: Mon, 14 Dec 2015 18:08:18 -0200 Subject: [PATCH] Remove de versionamento o cap04.tex. --- cap04.tex | 805 ------------------------------------------------------ 1 file changed, 805 deletions(-) delete mode 100644 cap04.tex diff --git a/cap04.tex b/cap04.tex deleted file mode 100644 index 3882bff..0000000 --- a/cap04.tex +++ /dev/null @@ -1,805 +0,0 @@ -% \documentclass[ -% ]{article} - -\documentclass[ - a5paper, - pagesize, - 9pt, - % bibtotoc, - pointlessnumbers, - normalheadings, - % DIV=9, - twoside=false -]{book} - -\usepackage[brazil]{babel} -\usepackage[utf8]{inputenc} -\usepackage[T1]{fontenc} - -\usepackage[sc]{mathpazo} -% \usepackage{palatino} -% \linespread{1.05} -\usepackage[scaled=0.85]{beramono} - -%----------------------------------------------------------------------- - -\usepackage{amssymb, amsmath} -\usepackage{ifxetex, ifluatex} - -\usepackage{fixltx2e} % provides \textsubscript -\ifnum 0\ifxetex 1\fi\ifluatex 1\fi=0 % if pdftex - \usepackage[T1]{fontenc} - \usepackage[utf8]{inputenc} -\else % if luatex or xelatex - \ifxetex - \usepackage{mathspec} - \usepackage{xltxtra,xunicode} - \else - \usepackage{fontspec} - \fi - \defaultfontfeatures{Mapping=tex-text,Scale=MatchLowercase} - \newcommand{\euro}{€} -\fi - -% use upquote if available, for straight quotes in verbatim environments -\IfFileExists{upquote.sty}{\usepackage{upquote}}{} -% use microtype if available -\IfFileExists{microtype.sty}{% -\usepackage{microtype} -\UseMicrotypeSet[protrusion]{basicmath} % disable protrusion for tt fonts -}{} - - - - - - -\usepackage{color} -\usepackage{fancyvrb} -\newcommand{\VerbBar}{|} -\newcommand{\VERB}{\Verb[commandchars=\\\{\}]} -\DefineVerbatimEnvironment{Highlighting}{Verbatim}{commandchars=\\\{\}} -% Add ',fontsize=\small' for more characters per line -\usepackage{framed} -\definecolor{shadecolor}{RGB}{248,248,248} -\newenvironment{Shaded}{\begin{snugshade}}{\end{snugshade}} -\newcommand{\KeywordTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{\textbf{{#1}}}} -\newcommand{\DataTypeTok}[1]{\textcolor[rgb]{0.13,0.29,0.53}{{#1}}} -\newcommand{\DecValTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{{#1}}} -\newcommand{\BaseNTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{{#1}}} -\newcommand{\FloatTok}[1]{\textcolor[rgb]{0.00,0.00,0.81}{{#1}}} -\newcommand{\CharTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{{#1}}} -\newcommand{\StringTok}[1]{\textcolor[rgb]{0.31,0.60,0.02}{{#1}}} -\newcommand{\CommentTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{\textit{{#1}}}} -\newcommand{\OtherTok}[1]{\textcolor[rgb]{0.56,0.35,0.01}{{#1}}} -\newcommand{\AlertTok}[1]{\textcolor[rgb]{0.94,0.16,0.16}{{#1}}} -\newcommand{\FunctionTok}[1]{\textcolor[rgb]{0.00,0.00,0.00}{{#1}}} -\newcommand{\RegionMarkerTok}[1]{{#1}} -\newcommand{\ErrorTok}[1]{\textbf{{#1}}} -\newcommand{\NormalTok}[1]{{#1}} - - - -\usepackage{graphicx} -\makeatletter -\def\maxwidth{\ifdim\Gin@nat@width>\linewidth\linewidth\else\Gin@nat@width\fi} -\def\maxheight{\ifdim\Gin@nat@height>\textheight\textheight\else\Gin@nat@height\fi} -\makeatother -% Scale images if necessary, so that they will not overflow the page -% margins by default, and it is still possible to overwrite the defaults -% using explicit options in \includegraphics[width, height, ...]{} -\setkeys{Gin}{width=\maxwidth,height=\maxheight,keepaspectratio} - -\ifxetex - \usepackage[setpagesize=false, % page size defined by xetex - unicode=false, % unicode breaks when used with xetex - xetex]{hyperref} -\else - \usepackage[unicode=true]{hyperref} -\fi - -\hypersetup{breaklinks=true, - bookmarks=true, - pdfauthor={PET EstatÃstica UFPR}, - pdftitle={Projetos Remotos}, - colorlinks=true, - citecolor=blue, - urlcolor=blue, - linkcolor=magenta, - pdfborder={0 0 0}} -\urlstyle{same} % don't use monospace font for urls - - - -\setlength{\parindent}{0pt} -\setlength{\parskip}{6pt plus 2pt minus 1pt} -\setlength{\emergencystretch}{3em} % prevent overfull lines - -\setcounter{secnumdepth}{5} - - -%%% Use protect on footnotes to avoid problems with footnotes in titles -\let\rmarkdownfootnote\footnote% -\def\footnote{\protect\rmarkdownfootnote} - -%%% Change title format to be more compact -\usepackage{titling} - -% Create subtitle command for use in maketitle -\newcommand{\subtitle}[1]{ - \posttitle{ - \begin{center}\large#1\end{center} - } -} - -\setlength{\droptitle}{-2em} - - \title{Projetos Remotos} - \pretitle{\vspace{\droptitle}\centering\huge} - \posttitle{\par} - - \author{PET EstatÃstica UFPR} - \preauthor{\centering\large\emph} - \postauthor{\par} - - \date{} - \predate{}\postdate{} - -\usepackage{menukeys} - -\begin{document} - -\maketitle - - -{ -\hypersetup{linkcolor=black} -\setcounter{tocdepth}{2} -\tableofcontents -} - - - -\chapter{Projetos Remotos} - -Nos capÃtulos anteriores descrevemos como instalar o Git e ter projetos -versionados. No entanto, o uso do Git até então foi apenas local. Os -arquivos eram mantidos na sua máquina de trabalho e disponÃveis só para -você. - -Os recursos do Git, como o desenvolvimento em \emph{branches}, permite -que vários segmentos sejam conduzidos de forma independente e no futuro, -quando apropriado, reunidos em um único \emph{branch}. Isso é exatamente -o que precisamos para trabalhar em equipe, certo? Se cada colaborador -pudesse ter um ramo separado do projeto para trabalhar, todos poderiam -trabalhar simultâneamente. Quando oportuno, bastaria fazer merges para -reunir o trabalho. A questão é: como deixar o projeto disponÃvel para os -colaboradores? - -A resposta é simples: mantenha o projeto em um servidor onde os -colaboradores tenham acesso. Isso inclusive vai permitir que você acesse -o projeto de várias outras máquinas, como o \emph{notebook} de casa e o -desktop do \emph{escritório}. - -\section{Repositório remoto pessoal}\label{repositorio-remoto-pessoal} - -O repositório remoto serve de centro do seu repositório Git. Como ele -está em um servidor que você tem acesso, você pode compartilhar o -repositório com outras máquinas, clonado de lá. Ele serve como -\emph{backup} do repositório. - -Aqui não se trabalha em colaboração mas o processo permite acessar o -repositório, transferir arquivos de várias máquinas suas. - -\begin{Shaded} -\begin{Highlighting}[] -\CommentTok{## Autenticar no servidor (logar).} -\KeywordTok{ssh} \NormalTok{eu@servidor} - -\CommentTok{## Verificar se a máquina tem o Git, se não instalar.} -\KeywordTok{git} \NormalTok{--version} - -\CommentTok{## Criar um diretório para conter o projeto.} -\KeywordTok{mkdir} \NormalTok{-p ~/meusProjetos/meu1repo} -\KeywordTok{cd} \NormalTok{~/meusProjetos/meu1repo} - -\CommentTok{## Começar um projeto Git remoto. Note a opção --bare.} -\KeywordTok{git} \NormalTok{--bare init} -\end{Highlighting} -\end{Shaded} - -Apenas isso precisa ser feito no servidor. Você não cria nenhum arquivo -pelo servidor. Inclusive, muitos dos comandos Git, como -\texttt{git status} não funcionam para repositório iniciados com a opção -\texttt{git -\/-bare init}. - -Caso queira, você também pode usar \texttt{git init}. A diferença entre -eles é só onde ficam os arquivos do versionamento. Com -\texttt{git init}, um diretório oculto \texttt{.git/} é o repositório -Git e os arquivos de trabalho, como o \texttt{README.md}, ficam ao lado -dele na estrutura de diretório. Com \texttt{git -\/-bare init} o -conteúdo do repositório Git fica na raÃz. Essa última opção é justamente -para criar repositórios remotos que vão justamente manter a parte -repositório e não os arquivos. - -\begin{verbatim} -git init git --bare init -. . -|-- .git |-- branches -| |-- branches |-- config -| |-- config |-- description -| |-- description |-- HEAD -| |-- HEAD |-- hooks -| |-- hooks |-- info -| |-- info |-- objects -| |-- objects +-- refs -| +-- refs -+-- README.md -\end{verbatim} - -Uma vez iniciado o repositório no servidor, todo trabalho passa ser -local. É a vez de adicionar o endereço do diretório no servidor e -transferir arquivos. - -\begin{Shaded} -\begin{Highlighting}[] -\CommentTok{## Agora na sua máquina local, adicione o endereço do remoto.} -\KeywordTok{git} \NormalTok{remote add eu@server:~/meusProjetos/meu1repo} - -\CommentTok{## Exibir os endereços remotos.} -\KeywordTok{git} \NormalTok{remote -v} -\end{Highlighting} -\end{Shaded} - -Esse endereço pode ter IP, porque na realidade, todo servidor tem um IP. -Por exemplo, o servidor do tem o IP 192.30.252.129. Para saber o IP é só -dar um \emph{ping} no endereço. - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{ping} \NormalTok{github.com} -\KeywordTok{ping} \NormalTok{gitlab.com} -\KeywordTok{ping} \NormalTok{google.com} -\KeywordTok{ping} \NormalTok{cran.r-project.org} -\end{Highlighting} -\end{Shaded} - -Normalmente, servidores de escritório não tem um endereço nominal, -apenas o IP (numérico). É necessário registrar domÃnio para ter nominal. - -\begin{Shaded} -\begin{Highlighting}[] -\CommentTok{## Agora na sua máquina local, adicione o endereço do remoto.} -\KeywordTok{git} \NormalTok{remote add eu@111.22.333.44:~/meusProjetos/meu1repo} -\end{Highlighting} -\end{Shaded} - -Nesse processo, toda transferência de arquivos vai pedir senha do seu -usuário no servidor. Para facilitar, pode-se trabalhar com chaves -públicas. - -O arquivo \texttt{id\_rsa.pub} é a sua chave pública. O \texttt{id\_rsa} -é o seu par. RSA é o tipo de encriptação. O nome e caminho do arquivo e -a encriptação podem ser outros, depende do que você escolher ao gerar o -par de chaves. Normalmente usa-se RSA e as chaves são criadas no -diretório \texttt{\textasciitilde{}/.ssh}. - -\begin{Shaded} -\begin{Highlighting}[] -\CommentTok{## Exibir chaves públicas.} -\KeywordTok{cat} \NormalTok{~/.ssh/id_rsa.pub} - -\CommentTok{## Caso não tenha, gerar.} -\KeywordTok{ssh-keygen} \NormalTok{-t rsa -C }\StringTok{"eu@dominio.com"} -\end{Highlighting} -\end{Shaded} - -No servidor, o arquivo \texttt{authorized\_keys2} contém as chaves -públicas das máquinas com acesso permitido sem senha. Esse arquivo nada -mais é que uma coleção de chaves. O conteúdo dele são as chaves das suas -máquinas, ou das máquinas de outros usuários, conteúdo do -\texttt{id\_rsa.pub}, uma embaixo da outra, conforme o exemplo -abaixo\footnote{O Flash foi o -primeiro a transferir as chaves para o servidor porque ele é mais -rápido}. - -\begin{Shaded} -\begin{Highlighting}[] -\CommentTok{## `authorized_keys` do servidor da Liga da Justiça.} -\KeywordTok{ssh-rsa} \NormalTok{IyBUrjvUdSMY... flash@justiceleague.org} -\KeywordTok{ssh-rsa} \NormalTok{AAAAB3NzaC1y... batman@justiceleague.org} -\KeywordTok{ssh-rsa} \NormalTok{Mdju17IdXhSd... superman@justiceleague.org} -\end{Highlighting} -\end{Shaded} - -\begin{Shaded} -\begin{Highlighting}[] -\CommentTok{## Logar no servidor} -\KeywordTok{ssh} \NormalTok{eu@111.22.333.44} - -\CommentTok{## Criar o diretório/arquivo para as chaves públicas.} -\KeywordTok{mkdir} \NormalTok{~/.ssh} - \KeywordTok{>} \KeywordTok{authorized_keys2} -\end{Highlighting} -\end{Shaded} - -Agora é preciso transferir o conteúdo do seu arquivo local -\texttt{id\_rsa.pub} para o \texttt{authorized\_keys2} que fica no -servidor. O jeito mais simples de fazer isso é com transferência -\emph{scp} mas a instrução \emph{ssh} abaixo também resolve. - -\begin{Shaded} -\begin{Highlighting}[] -\CommentTok{## Transfere arquivo para diretório temporário.} -\KeywordTok{scp} \NormalTok{~/.ssh/id_rsa.pub eu@111.22.333.44:/tmp} - -\CommentTok{## Cola o conteúdo do *.pub no final do authorized_keys.} -\KeywordTok{ssh} \NormalTok{eu@111.22.333.44\textbackslash{}} - \StringTok{"cat /tmp/id_rsa.pub ~/.ssh/authorized_keys"} - -\CommentTok{## Faz os dois passos anteriores de uma vez só.} -\KeywordTok{ssh} \NormalTok{eu@111.22.333.44\textbackslash{}} - \StringTok{"cat >> ~/.ssh/authorized_keys2"} \KeywordTok{<} \NormalTok{~/.ssh/id_rsa.pub} -\end{Highlighting} -\end{Shaded} - -\section{Repositório remoto coletivo}\label{repositorio-remoto-coletivo} - -A única diferença é recomendamos a você criar um novo usuário e -adicionar as chaves públicas de todos os membros. Evite adicionar chaves -públicas para usuários na sua conta porque isso expõe seus documentos, -alguma operação desastrosa por parte de alguém pode comprometê-los. Por -isso, crie um usuário, por exemplo \texttt{gitusers}, para nesta conta -manter o repositório remoto. - -Solicite que os colaboradores gerem as chaves públicas e te enviem o -arquivo \texttt{id\_rsa.pub}. Depois você adiciona cada chave ao -\texttt{authorized\_keys} de conta \texttt{gitusers}. Com chaves -autorizadas, os colaboradores podem transferir arquivos, podem logar no -servidor mas não podem instalar nada, a menos que você passe a senha do -usuário \texttt{gitusers}. Para crias usuários no servidor, você precisa -de privilégios de \emph{admin}. - -\begin{Shaded} -\begin{Highlighting}[] -\CommentTok{## Logar na servidora.} -\KeywordTok{ssh} \NormalTok{eu@servidor} - -\CommentTok{## No servidor, criar uma conta para o projeto.} -\KeywordTok{sudo} \NormalTok{adduser gitusers} -\end{Highlighting} -\end{Shaded} - -Vamos assumir que você têm os arquivos \texttt{*.pub} dos colaboradores -no diretório \texttt{/chaves} devidamente identificados pelo nome deles. -O comando abaixo acrescenta as chaves deles uma embaixo da outra no -\texttt{authorized\_keys}. - -\begin{Shaded} -\begin{Highlighting}[] -\CommentTok{## Entra no diretório com os arquivos *.pub.} -\CommentTok{## Existem várias: angela.pub, jhenifer.pub, ...} -\KeywordTok{cd} \NormalTok{chaves} - -\CommentTok{## Juntar as chaves em um único arquivo.} -\KeywordTok{cat} \NormalTok{*.pub }\KeywordTok{>} \NormalTok{todos.pub} - -\CommentTok{## Copiar o conteúdo do arquivo pro authorized_keys2.} -\KeywordTok{ssh} \NormalTok{gitusers@111.22.333.44\textbackslash{}} - \StringTok{"cat >> ~/.ssh/authorized_keys2"} \KeywordTok{<} \NormalTok{todos.pub} -\end{Highlighting} -\end{Shaded} - -\section{Fluxo de trabalho com repositório remoto, do clone ao -push}\label{fluxo-de-trabalho-com-repositorio-remoto-do-clone-ao-push} - -\subsection{Git clone}\label{git-clone} - -Este comando é usado para clonar um repositório do servidor remoto para -um servidor local, caso você queira copiar um repositório que já existe -para realizar colaborações em um projeto que queira participar. Você -terá acesso a todos os arquivos e poderá verificar as diferentes versões -destes. Supondo que sua equipe de trabalho possui uma biblioteca Git -\textbf{Teste Clone}, onde são armazenados todos os arquivos. Você pode -clonar estes arquivos para o seu diretório de trabalho e assim -modificá-los conforme deseja. - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{git} \NormalTok{clone git@gitlab.c3sl.ufpr.br:pet-estatistica/TesteClone.git} -\end{Highlighting} -\end{Shaded} - -Desta forma você terá um diretório \texttt{TesteClone} em seu -computador, onde estarão todos os arquivos do projeto nele. - -Você também terá a opção de clonar o repositório \texttt{TesteClone} em -um diretório diferente do padrão Git, que no próximo exemplo -denominaremos de \texttt{DirTeste}: - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{git} \NormalTok{clone git@gitlab.c3sl.ufpr.br:pet-estatistica/TesteClone.git DirTeste} -\end{Highlighting} -\end{Shaded} - -\subsection{Git Push}\label{git-push} - -Após clonar e realizar contribuições ao projeto, você pode enviá-los -para o repositório remoto. Estes arquivos, após o \texttt{Git push}, -estarão prontos para serem integrados ao projeto com o -\texttt{merge}.\\Usado para transferência de arquivos entre repositório -local e o servidor remoto. Como o nome já diz, o comando empurra os -arquivos para o servidor remoto. No exemplo abaixo enviaremos a -ramificação \texttt{Branch Master} para o servidor chamado -\texttt{origin}: - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{git} \NormalTok{push origin master} -\end{Highlighting} -\end{Shaded} - -É importante ressaltar que se dois usuários clonarem ao mesmo tempo, -realizarem modificações e enviarem os arquivos atualizados ao -repositório utilizando o \texttt{Git push}, as modificações do usuário -que realizou o push por último serão desconsideradas. - -\subsection{Git Pull}\label{git-pull} - -Para obter todos os arquivos presentes no projeto, você pode importar os -arquivos do branch \texttt{master}. Toda vez que você utilizar o -\texttt{Git pull} a última versão de todos os arquivos estarão no seu -diretório. Também usado para transferência de arquivos, o comando puxa -os arquivos do servidor remoto para o repositório local e faz o merge do -mesmo, fundindo a última versão com a versão atualizada. - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{git} \NormalTok{pull origin master} -\end{Highlighting} -\end{Shaded} - -\subsection{Git fetch}\label{git-fetch} - -Assim como o comando \texttt{Git pull}, o \texttt{Git fetch} transfere -arquivos do repositório remoto para o local, porém ele não realiza -automaticamente o merge dos arquivos transferidos, o usuário deve fazer -o merge manualmente. - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{git} \NormalTok{fetch origin master} -\end{Highlighting} -\end{Shaded} - -Para verificar as modificações realizadas entre versões de um arquivo -basta utilizar o comando \texttt{git diff}: - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{git} \NormalTok{diff master origin/master} -\end{Highlighting} -\end{Shaded} - -\section{Listar branches -locais/remotos}\label{listar-branches-locaisremotos} - -O comando \texttt{git remote} é usado para verificar quais repositórios -estão configurados. - -\textbf{Exemplo:} para retornar a lista de repositórios: - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{git} \NormalTok{remote} -\end{Highlighting} -\end{Shaded} - -No comando acima é possÃvel visualizar o remoto padrão \textbf{origin} -(URL SSH para onde será possÃvel enviar os seus arquivos). - -\textbf{Exemplo:} para retornar o nome dos repositórios com a URL onde -foram armazanados: - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{git} \NormalTok{remote -v} -\end{Highlighting} -\end{Shaded} - -\section{Adicionar, renomear, deletar -remote}\label{adicionar-renomear-deletar-remote} - -\subsection{Adicionando repositórios -remotos}\label{adicionando-repositorios-remotos} - -O comando \texttt{git remote add} adiciona um repositório remoto. No -exemplo a seguir será adicionado um repositório chamado \textbf{MeuRepo} -ao qual será vinculado a URL -\texttt{git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git}. -Usaremos como exemplo o projeto \textbf{Apostila-git}. - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{git} \NormalTok{remote add MeuRepo git@gitlab.c3sl.ufpr.br:pet-estatistica/apostila-git.git} -\CommentTok{# Quando executamos novamente o comando para obter a lista de repositórios:} -\KeywordTok{git} \NormalTok{remote -v} -\end{Highlighting} -\end{Shaded} - -Pare acessar localmente o branch master do projeto \textbf{Apostila-git} -será usado \texttt{MeuRepo/master}. - -\subsection{Obtendo informações de um -Remoto}\label{obtendo-informacoes-de-um-remoto} - -Você pode acessar as informações de qualquer repositório remoto com o -comando \texttt{git remote show}, que retornará a URL e os -\texttt{branches}. - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{git} \NormalTok{remote show origin} -\end{Highlighting} -\end{Shaded} - -\subsection{Renomeado Remotos}\label{renomeado-remotos} - -O comando \texttt{git remote rename} pode modificar o nome de um -repositório remoto. A seguir o repositório \texttt{MeuRepo}será -renomeado para \texttt{RenameRepo}. - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{git} \NormalTok{remote rename MeuRepo RenameRepo} -\end{Highlighting} -\end{Shaded} - -\subsection{Removendo Remotos}\label{removendo-remotos} - -Para remover remotos é utilizado o comando \texttt{git remote rm}, agora -será removido o repositório renomeado anteriormente \texttt{RenameRepo}. - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] - \KeywordTok{git} \NormalTok{remote rm RenameRepo} -\end{Highlighting} -\end{Shaded} - -\subsection{Deletar ramos no servidor}\label{deletar-ramos-no-servidor} - -Quando houver um branch que não está sendo utilizado ou está concluÃdo, -há a opção de excluÃ-lo do servidor.\\Se for necessário apagar branches -remotos, podemos utilizar o comando a seguir: - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{git} \NormalTok{push origin --delete }\KeywordTok{<}\NormalTok{branch}\KeywordTok{>} -\end{Highlighting} -\end{Shaded} - -\subsection{Clonar apenas um \emph{branch}, \emph{commit} ou -\emph{tag}.}\label{clonar-apenas-um-branch-commit-ou-tag.} - -É possÃvel clonar apenas um branch e não o repositório Git completo. -Supondo que no repositório há um branch chamado \texttt{MeuBranch} -dentro do repositório \texttt{MeuRepo}, clonaremos o branch. - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{git} \NormalTok{clone -b MeuBranch --single-branch git://sub.domain.com/MeuRepo.git} -\end{Highlighting} -\end{Shaded} - -O Git ainda permite clonar um commit ou tag. - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\CommentTok{# Para uma tag:} -\KeywordTok{git} \NormalTok{-e: //git.myproject.org/MyProject.git@v1.0#egg=MyProject} -\CommentTok{# Para um commit:} -\KeywordTok{git} \NormalTok{-e: //git.myproject.org/MyProject.git@da39a3ee5e6b4b0d3255bfef95601890afd80709#egg=MyProject} -\end{Highlighting} -\end{Shaded} - -\section{Criando um Repositório Git}\label{criando-um-repositorio-git} - -Primeiramente é necessário ter acesso a um servidor Linux com chave SSH, -no qual você poderá ter seus repositórios. É definido um diretório no -qual será armazenado o repositório remoto. No próximo exemplo é preciso -criar um repositório remoto chamado \texttt{MeuRepo} e o armazenar em um -diretório \texttt{\textasciitilde{}/git}: - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\CommentTok{# Para criar um diretório git na sua home:} -\KeywordTok{mkdir} \NormalTok{~/git} -\CommentTok{# Para criar um repositório git:} -\KeywordTok{mkdir} \NormalTok{MeuRepo.git} -\CommentTok{# Para definir MeuRepo como um repositório remoto:} -\KeywordTok{git} \NormalTok{--bare init} -\end{Highlighting} -\end{Shaded} - -As configurações do servidor estão completas. A partir de agora você -pode realizar os primeiros comandos para iniciar o repositório criado. - -\section{Git no servidor}\label{git-no-servidor} - -Primeiramente, para configurar o Git no Servidor e configurar os -protocolos, clonaremos o repositório existente em um repositório limpo. -\textbf{Observação:} você poderá colocar um repositório no Servidor se -este não contém um diretório de trabalho. - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] - \KeywordTok{git} \NormalTok{clone --bare MeuRepo MeuRepo.git} -\end{Highlighting} -\end{Shaded} - -Acima foi criado um repositório limpo \texttt{MeuRepo.git}, no qual está -armazenada a cópia de todos os arquivos do diretorio Git. - -Após este primeiro passo o repositório limpo será colocado no Servidor e -configurado os protolocos. No exemplo abaixo, supondo que você tem -configurado um servidor \texttt{git.servidor.com}, e um diretório -\texttt{/dir/git}no qual você quer armazenar seus repositórios. Ao -copiar o seu repositório limpo, você pode configurar seu novo -repositório. - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{scp} \NormalTok{-r MeuRepo.git usuario@git.example.com:/dir/git} -\end{Highlighting} -\end{Shaded} - -Agora o repositório pode ser clonado por outros usuários, que podem ter -acesso de escrita e de envio de arquivos \texttt{push} no diretório. - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{git} \NormalTok{clone usuario@git.example.com:/dir/git/MeuRepo.git} -\end{Highlighting} -\end{Shaded} - -\section{Configuração de Conexão SSH com -Servidor}\label{configuracao-de-conexao-ssh-com-servidor} - -O Git possibilita ao usuário realizar uma chave SSH que fará uma conexão -segura da sua máquina com o servidor. Para isso começamos com o seguinte -comando no terminal: - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\CommentTok{## Gerando uma chave ssh} -\KeywordTok{ssh-keygen} \NormalTok{-t rsa -C }\StringTok{"usuario@email.com"} -\end{Highlighting} -\end{Shaded} - -A partir deste comando, será possÃvel alterar o diretório onde será -salva a chave SSH. O usuário tem a opção de permanecer com o diretório -padrão, para isso basta apertar Enter. A partir disso, são criados dois -arquivos no diretório, o \texttt{id\_rsa} e o \texttt{id\_rsa.pub}. Após -escolher o diretório onde serão salvos os arquivos, você terá a opção de -digitar uma senha ou deixar o espaço em branco. - -Para visualizar a chave basta digitar o seguinte comando: - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{cat} \NormalTok{~/.ssh/id_rsa.pub} -\end{Highlighting} -\end{Shaded} - -A chave está no arquivo \texttt{id\_rsa.pub}. O usuário deve copiar o -texto deste arquivo na Ãntegra. Para gerar a conexão ssh com o servidor, -deve visitar o site -\href{https://gitlab.c3sl.ufpr.br/profile/keys}{\url{https://gitlab.c3sl.ufpr.br/profile/keys}} -e clicar em \href{https://gitlab.c3sl.ufpr.br/profile/keys/new}{Add SSH -Key}. É necessário escrever um tÃtulo para a sua nova chave, no campo -\texttt{key} colar o texto copiado do arquivo \texttt{id\_rsa.pub} e -adicionar sua nova chave. - -Para checar a configuração da sua máquina com o sevidor basta realizar o -seguinte comando: - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{ssh} \NormalTok{-T git@gitlab.c3sl.ufpr.br} -\end{Highlighting} -\end{Shaded} - -\textbf{Configurando o servidor} - -Agora será abordado como configurar o acesso SSH do ponto de vista do -servidor. Você precisa criar um usuário Git e um diretório \texttt{.ssh} -para este usuário. - -\textbf{Exemplo:} criar usuário e diretório. - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{sudo} \NormalTok{adduser git} -\KeywordTok{su} \NormalTok{git} -\KeywordTok{cd} -\KeywordTok{mkdir} \NormalTok{.ssh} -\end{Highlighting} -\end{Shaded} - -Agora, você terá um arquivo chamado \texttt{authorized\_keys} onde será -adicionado uma chave pública de algum desenvolvedor. Após obter chaves -de alguns usuários, você pode salvá-las no arquivo -\texttt{authorized\_keys}, como no exemplo a seguir. - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\CommentTok{# chave do primeiro usuário} -\KeywordTok{cat} \NormalTok{/tmp/id_rsa1.pub }\KeywordTok{>>} \NormalTok{~/.ssh/authorized_keys} -\CommentTok{# chave do segundo usuário} -\KeywordTok{cat} \NormalTok{/tmp/id_rsa2.pub }\KeywordTok{>>} \NormalTok{~/.ssh/authorized_keys} -\KeywordTok{...} -\end{Highlighting} -\end{Shaded} - -Depois de armazenar as chaves dos usuários, basta criar um repositório -limpo (sem um diretório de trabalho) para eles. Como visto -anteriormente: - -\textbf{Exemplo:} - -\begin{Shaded} -\begin{Highlighting}[] -\KeywordTok{cd/dir/git} -\KeywordTok{mkdir} \NormalTok{NovoProjeto.git} -\KeywordTok{cd} \NormalTok{NovoProjeto.git} -\KeywordTok{git} \NormalTok{-bare init} -\end{Highlighting} -\end{Shaded} - -Agora os usuários, cujas chaves foram salvas no arquivo -\texttt{authorized\_keys} podem compartilhar arquivos no repositório com -os comando \texttt{git init}, \texttt{git add}, \texttt{git commit}, -\texttt{git remote add} e \texttt{git push origin master}. %%--------------------------------------------------------------- - -\end{document} -- GitLab