diff --git a/apostila_git.tex b/apostila_git.tex index 3efa6ed138488622e9ed9e69dcbc4173a93caa1a..1a634df81b93d9f6a2ba7749059e2ca2a9a78330 100644 --- a/apostila_git.tex +++ b/apostila_git.tex @@ -47,7 +47,7 @@ }{} %----------------------------------------------------------------------- -% knitr. +% knitr quando faz render em Rmd para gerar tex. \usepackage{color} \usepackage{fancyvrb} @@ -73,6 +73,58 @@ \newcommand{\ErrorTok}[1]{\textbf{{#1}}} \newcommand{\NormalTok}[1]{{#1}} +%----------------------------------------------------------------------- +% knitr quando faz knit em Rnw para gerar tex + +% \usepackage[]{graphicx}\usepackage[]{color} +% \makeatletter +% \def\maxwidth{ % +% \ifdim\Gin@nat@width>\linewidth +% \linewidth +% \else +% \Gin@nat@width +% \fi +% } +% \makeatother + +\definecolor{fgcolor}{rgb}{0.345, 0.345, 0.345} +\newcommand{\hlnum}[1]{\textcolor[rgb]{0.686,0.059,0.569}{#1}}% +\newcommand{\hlstr}[1]{\textcolor[rgb]{0.192,0.494,0.8}{#1}}% +\newcommand{\hlcom}[1]{\textcolor[rgb]{0.678,0.584,0.686}{\textit{#1}}}% +\newcommand{\hlopt}[1]{\textcolor[rgb]{0,0,0}{#1}}% +\newcommand{\hlstd}[1]{\textcolor[rgb]{0.345,0.345,0.345}{#1}}% +\newcommand{\hlkwa}[1]{\textcolor[rgb]{0.161,0.373,0.58}{\textbf{#1}}}% +\newcommand{\hlkwb}[1]{\textcolor[rgb]{0.69,0.353,0.396}{#1}}% +\newcommand{\hlkwc}[1]{\textcolor[rgb]{0.333,0.667,0.333}{#1}}% +\newcommand{\hlkwd}[1]{\textcolor[rgb]{0.737,0.353,0.396}{\textbf{#1}}}% + +\usepackage{framed} +\makeatletter +\newenvironment{kframe}{% + \def\at@end@of@kframe{}% + \ifinner\ifhmode% + \def\at@end@of@kframe{\end{minipage}}% +\begin{minipage}{\columnwidth}% + \fi\fi% + \def\FrameCommand##1{\hskip\@totalleftmargin \hskip-\fboxsep + \colorbox{shadecolor}{##1}\hskip-\fboxsep + % There is no \\@totalrightmargin, so: + \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}% + \MakeFramed {\advance\hsize-\width + \@totalleftmargin\z@ \linewidth\hsize + \@setminipage}}% +{\par\unskip\endMakeFramed% + \at@end@of@kframe} +\makeatother + +\definecolor{shadecolor}{rgb}{.97, .97, .97} +\definecolor{messagecolor}{rgb}{0, 0, 0} +\definecolor{warningcolor}{rgb}{1, 0, 1} +\definecolor{errorcolor}{rgb}{1, 0, 0} +\newenvironment{knitrout}{}{} % an empty environment to be redefined in TeX + +\usepackage{alltt} + %----------------------------------------------------------------------- \usepackage{graphicx} @@ -144,7 +196,6 @@ \date{2015} \predate{}\postdate{} - \usepackage{tikz} % Color used in the title page. \definecolor[named]{color01}{rgb}{.2,.4,.6} @@ -153,6 +204,44 @@ \usepackage{wallpaper} \usepackage{menukeys} \usepackage{pdflscape} +\usepackage{multicol} +\usepackage{cleveref} + +\usepackage[labelsep=colon]{caption} + +%----------------------------------------------------------------------- +% Define ambiente para os Exemplos de Rotina. + +\usepackage{float} % Controla e define objetos flutuantes. +\usepackage{tocloft} % Controla lista de objetos flutuantes. + +% Nome dessa lista. +\newcommand{\listofprogramname}{Rotinas} + +% Configura os arquivos auxiliares para fazer a lista. +\newlistof{program}{lol}{\listofprogramname} + +\makeatletter +\newcommand\floatc@simple[2]{{\@fs@cfont #1 #2}\par} +\newcommand\fs@simple{ + \def\@fs@cfont{}\let\@fs@capt\floatc@simple + \def\@fs@pre{}% + \def\@fs@post{}% + \def\@fs@mid{\kern8pt}% + \let\@fs@iftopcapt\iftrue +} +\makeatother + +\floatstyle{simple} +\newfloat{program}{thp}{lol}[chapter] % Define ambiente +\floatname{program}{Rotina} % Rótulo na legenda. + +%% Aparencia do sumário de rotinas +\renewcommand*\cftprogrampresnum{Rotina~} +\settowidth{\cftprogramnumwidth}{\cftprogrampresnum} +\setlength{\cftprogramindent}{0cm} +\renewcommand{\cftprogramaftersnumb}{\qquad} +\renewcommand{\cftprogramaftersnum}{:} %----------------------------------------------------------------------- @@ -265,6 +354,9 @@ % \input{cap08.tex} % \input{cap09.tex} +\addcontentsline{toc}{chapter}{Apêndice} +\input{./cap08/cap08_er.tex} + \end{document} %----------------------------------------------------------------------- \ No newline at end of file diff --git a/cap08/cap08_er.Rmd b/cap08/cap08_er.Rnw similarity index 69% rename from cap08/cap08_er.Rmd rename to cap08/cap08_er.Rnw index 56af10b13439b96f5e297d6955ebfdae95e674ee..57779862f4d68cf50eade6be2c6756564e5ec9a9 100644 --- a/cap08/cap08_er.Rmd +++ b/cap08/cap08_er.Rnw @@ -1,55 +1,19 @@ ---- -title: "Exemplos de Rotina" -author: "PET EstatÃstica UFPR" -graphics: yes -header-includes: - \usepackage{multicol} - \usepackage{cleveref} -output: - pdf_document: - template: ../template.tex - highlight: default - toc: true - toc_depth: 2 - keep_tex: true - number_sections: true ---- - +\newpage \appendix -\chapter{Exemplos de Rotinas} +\chapter{Exemplos de rotinas} Neste apêndice são descritas brevemente algumas das rotinas mais usuais em projetos Git. A maioria dos exemplos estão detalhados na apostila e foram resumidos nesta coletânea. Abaixo temos a lista de rotinas aqui -presentes: - -\begin{multicols}{2} -\footnotesize - \begin{description} - \item[Configure usuário e e-mail,] pág. \pageref{routine1} - \item[Inicie um projeto git local,] pág. \pageref{routine2} - \item[Trabalhe com ramos,] pág. \pageref{routine3} - \item[Visualize diferenças,] pág. \pageref{routine4} - \item[Resolva conflitos de \textit{merge},] pág. \pageref{routine5} - \item[Visualize seu projeto,] pág. \pageref{routine6} - \item[Volte versões anteriores,] pág. \pageref{routine7} - \item[Reescreva \textit{commits},] pág. \pageref{routine8} - \item[Adicione chaves públicas,] pág. \pageref{routine9} - \item[Trabalhe remotamente,] pág. \pageref{routine10} - \item[Manipule ramos remotos,] pág. \pageref{routine11} - \item[Adicione local remoto,] pág. \pageref{routine12} - \end{description} -\end{multicols} - -\pagebreak - -<!-- ------------------------------------------- --> -\hlabel{routine1} -\routine{Configure usuário e e-mail} - -```{r, engine='bash', echo=TRUE, eval=FALSE} +presentes. + +\listofprogram +\begin{program}[H] + \caption{Configure usuário e e-mail.} +\end{program} +<<engine="bash", echo=TRUE, eval=FALSE>>= ## Configurando localmente ## - válido para o repositório atual git config user.name "Name Lastname" @@ -62,15 +26,14 @@ git config --global user.email "namelastname@servidor" ## Obs.: As configurações locais se sobrepõem as ## globais, quando as duas forem avaliadas. +@ -``` - -<!-- ------------------------------------------- --> -\hlabel{routine2} -\routine{Inicie um projeto Git local} - -```{r, engine='bash', echo=TRUE, eval=FALSE} +%%---------------------------------------------------------------------- +\begin{program}[H] + \caption{Inicie um projeto Git local.} +\end{program} +<<engine="bash", echo=TRUE, eval=FALSE>>= ## Em um diretório que deseja-se versionar ## Inicia o versionamento Git @@ -79,7 +42,7 @@ git init ## Verifica o estado do repositório git status -## Adicione os arquivos para receber o commit +## Adicione os arquivos para receber o commit git add file1.txt file2.R file3.txt file4.Rmd ## Registre a versão do repositório com uma mensagem @@ -88,15 +51,14 @@ git commit -m "Inicia repositório" ## Verifica o histórico de versões git log +@ -``` - -<!-- ------------------------------------------- --> -\hlabel{routine3} -\routine{Trabalhe com ramos} - -```{r, engine='bash', echo=TRUE, eval=FALSE} +%%---------------------------------------------------------------------- +\begin{program}[H] + \caption{Trabalhe com ramos.} +\end{program} +<<engine="bash", echo=TRUE, eval=FALSE>>= ## Verifica os ramos existentes git branch @@ -125,14 +87,14 @@ git merge bugfix ## Deleta o ramo responsável pela correção do bug git branch -d bugfix -``` - -<!-- ------------------------------------------- --> -\hlabel{routine4} -\routine{Visualize diferenças} +@ -```{r, engine='bash', echo=TRUE, eval=FALSE} +%%---------------------------------------------------------------------- +\begin{program}[H] + \caption{Visualize diferenças.} +\end{program} +<<engine="bash", echo=TRUE, eval=FALSE>>= ## ------------------------------------------- ## Diferenças não commitadas @@ -165,14 +127,14 @@ git diff master feature1 ## visualizar diferenças, use difftool no lugar de ## diff, ver cap. 06 -``` - -<!-- ------------------------------------------- --> -\hlabel{routine5} -\routine{Resolva conflitos de merge} +@ -```{r, engine='bash', eval=FALSE, echo=TRUE} +%%---------------------------------------------------------------------- +\begin{program}[H] + \caption{Resolva conflitos de merge.} +\end{program} +<<engine="bash", echo=TRUE, eval=FALSE>>= ## Incorpora modificações realizadas no ramo feature git merge feature @@ -182,35 +144,34 @@ git merge feature ## Finaliza merge com o commit: git commit -a -m "Merge do ramo feature" -``` +@ -<!-- ------------------------------------------- --> -\hlabel{routine6} -\routine{Visualize seu projeto} - -```{r, engine='bash', eval=FALSE, echo=TRUE} +%%---------------------------------------------------------------------- +\begin{program}[H] + \caption{Visualize seu projeto.} +\end{program} +<<engine="bash", echo=TRUE, eval=FALSE>>= ## Histórico de registros git log ## Histórico de registros em uma linha com trajetória -## dos ramos -git log --graph --oneline +## dos ramos +git log --graph --oneline ## Histórico de registro com referência git reflog ## Histórico de registro via interface gráfica padrão gitk +@ -``` - -<!-- ------------------------------------------- --> -\hlabel{routine7} -\routine{Volte versões anteriores} - -```{r, engine='bash', echo=TRUE, eval=FALSE} +%%---------------------------------------------------------------------- +\begin{program}[H] + \caption{Volte versões anteriores.} +\end{program} +<<engine="bash", echo=TRUE, eval=FALSE>>= ## Verifica o histórico de versões do repositório ## - Guarde o SHA1 ID do registro desejado: ec3650c8 git log --oneline @@ -245,19 +206,19 @@ git checkout -b ramo_teste ## Obs.: O ramo provisório é removido assim que se ## fizer um checkout para qualquer outro ramo -``` - -<!-- ------------------------------------------- --> -\hlabel{routine8} -\routine{Reescreva commits} +@ -```{r, engine='bash', echo=TRUE, eval=FALSE} +%%---------------------------------------------------------------------- +\begin{program}[H] + \caption{Reescreva commits.} +\end{program} +<<engine="bash", echo=TRUE, eval=FALSE>>= ## Verifica o histórico de versões do repositório git log --oneline ## ------------------------------------------- -## Reescreve a última mensagem de commit +## Reescreve a última mensagem de commit git commit --amend -m "Correção de Commit" ## Obs1.: Arquivos na staging area também são @@ -265,15 +226,14 @@ git commit --amend -m "Correção de Commit" ## Obs2.: Reescreve a história do repositório, não ## é recomendável reescrever a linha do tempo quando ## se está em um projeto colaborativo remoto. +@ -``` - -<!-- ------------------------------------------- --> -\hlabel{routine9} -\routine{Adicione chaves públicas} - -```{r, engine='bash', echo=TRUE, eval=FALSE} +%%---------------------------------------------------------------------- +\begin{program}[H] + \caption{Cria chaves públicas.} +\end{program} +<<engine="bash", echo=TRUE, eval=FALSE>>= ## Cria uma chave pública. ssh-keygen -t rsa -C "namelastname@servidor" @@ -291,15 +251,14 @@ ssh -T endereço ## endereço = git@github.com, ... ## Obs.: Todos os comandos ssh são provinientes do ## pacote de função ssh para shell, portanto para ## utilizar instale este pacote. +@ -``` - -<!-- ------------------------------------------- --> -\hlabel{routine10} -\routine{Trabalhe remotamente} - -```{r, engine='bash', echo=TRUE, eval=FALSE} +%%---------------------------------------------------------------------- +\begin{program}[H] + \caption{Trabalhe remotamente.} +\end{program} +<<engine="bash", echo=TRUE, eval=FALSE>>= ## Clona um projeto remoto: ## e.g. git@github.com:pet-estatistica/apostila-git.git git clone endereço:namespace/project.git @@ -318,15 +277,14 @@ git push origin ## Traz estado do repositório remoto git pull origin +@ -``` - -<!-- ------------------------------------------- --> -\hlabel{routine11} -\routine{Manipule ramos remotos} - -```{r, engine='bash', echo=TRUE, eval=FALSE} +%%---------------------------------------------------------------------- +\begin{program}[H] + \caption{Manipule ramos remotos.} +\end{program} +<<engine="bash", echo=TRUE, eval=FALSE>>= ## ------------------------------------------- ## Realizando contribuições em um ramo remoto @@ -373,7 +331,7 @@ git commit -a -m "Altera classe do objeto retornado" ## Retorna ao ramo principal git checkout master -## Incorpora modificações realizadas no ramo bugfix +## Incorpora modificações realizadas no ramo bugfix git merge bugfix ## Envia as alterações ao repositório remoto @@ -383,15 +341,14 @@ git push origin master git branch -d bugfix ## Local git push :bugfix ## Remoto -``` - -<!-- \routine{Incorporar o remoto ao local} --> -<!-- ------------------------------------------- --> -\hlabel{routine12} -\routine{Adicione local remoto} +@ -```{r, engine='bash', eval=FALSE, echo=TRUE} +%%---------------------------------------------------------------------- +\begin{program}[H] + \caption{Adicione endereço remoto.} +\end{program} +<<engine="bash", echo=TRUE, eval=FALSE>>= ## Lista os servidores remotos, com endereço git remote -v @@ -421,4 +378,4 @@ git remote set-url origin --push --add endereço_remoto ## Envia as contribuições para os locais remotos git push origin -``` \ No newline at end of file +@