{"id":138,"date":"2020-03-27T16:01:37","date_gmt":"2020-03-27T19:01:37","guid":{"rendered":"http:\/\/www.inf.ufes.br\/~vitorsouza\/?p=138"},"modified":"2020-04-17T17:40:28","modified_gmt":"2020-04-17T20:40:28","slug":"controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree","status":"publish","type":"post","link":"https:\/\/inf.ufes.br\/~vitorsouza\/controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree\/","title":{"rendered":"Controle de altera\u00e7\u00f5es em LaTeX usando git, com BitBucket e SourceTree"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Em 2015 escrevi sobre <a href=\"http:\/\/www.inf.ufes.br\/~vitorsouza\/archive\/2020\/blog\/controle-de-alteracoes-em-latex-usando-git-e-sourcetree\/index.html#more-2466\">como fazer controle de altera\u00e7\u00f5es em documentos escritos com LaTeX usando Git e SourceTree<\/a>. \u00c0 \u00e9poca, utilizava um reposit\u00f3rio git criado por mim num servidor da UFES, o que depois avaliei que deixou algumas quest\u00f5es complicadas. Por este motivo, recentemente, migrei para o <a href=\"https:\/\/bitbucket.org\/vitorsouza-ufes\/\">BitBucket<\/a>, o que exige uma atualiza\u00e7\u00e3o das instru\u00e7\u00f5es do post antigo. Este post \u00e9 uma atualiza\u00e7\u00e3o daquele, s\u00f3 com o que interessa agora aos meus alunos orientados. <\/p>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">O que s\u00e3o git, BitBucket e SourceTree?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Caso voc\u00ea ainda n\u00e3o saiba (pouco prov\u00e1vel, mas <em>just in case<\/em>), <a href=\"https:\/\/git-scm.com\">git<\/a> \u00e9 um sistema de controle de vers\u00e3o que tem como caracter\u00edsticas interessantes ser gratuito, <em>open source<\/em> e distribu\u00eddo. Esta \u00faltima caracter\u00edstica permite que voc\u00ea trabalhe com os comandos de controle de vers\u00e3o na sua m\u00e1quina mesmo sem acesso a um reposit\u00f3rio central (ex.: sem conex\u00e3o com a Internet). Para uma discuss\u00e3o sobre porque utilizar uma ferramenta de controle de vers\u00e3o, sugiro ler o in\u00edcio do <a href=\"http:\/\/www.inf.ufes.br\/~vitorsouza\/archive\/2020\/blog\/controle-de-alteracoes-em-latex-usando-git-e-sourcetree\/index.html#more-2466\">post antigo<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para uso compartilhado por mais de uma pessoa, \u00e9 comum a instala\u00e7\u00e3o do git e cria\u00e7\u00e3o de um reposit\u00f3rio num servidor ou, de maneira mais simples, voc\u00ea pode usar um servi\u00e7o gratuito que j\u00e1 disponibiliza um servidor de reposit\u00f3rios git pra voc\u00ea, como <a href=\"https:\/\/github.com\/about\">GitHub<\/a>, <a href=\"https:\/\/about.gitlab.com\">GitLab<\/a>, <a href=\"https:\/\/bitbucket.org\/product\/\">BitBucket<\/a>, etc. BitBucket, portanto, \u00e9 um servi\u00e7o da <a href=\"https:\/\/www.atlassian.com\">Atlassian<\/a> (empresa que oferece outras ferramentas conhecidas, como <a href=\"https:\/\/www.atlassian.com\/software\/jira\">Jira<\/a> e <a href=\"https:\/\/www.atlassian.com\/software\/trello\">Trello<\/a>) que, dentre outras coisas, permite que voc\u00ea crie reposit\u00f3rios git e os acesse da sua m\u00e1quina.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por fim, para uso do git em sua m\u00e1quina local, ap\u00f3s a instala\u00e7\u00e3o voc\u00ea pode <a href=\"https:\/\/git-scm.com\/docs\">usar diretamente a linha de comando<\/a> no terminal ou adotar um dos v\u00e1rios <em>front-ends<\/em> (<a href=\"https:\/\/git-scm.com\/downloads\/guis\">clientes GUI<\/a>) que oferecem uma forma mais amig\u00e1vel de manipula\u00e7\u00e3o de reposit\u00f3rios locais e remotos. O <a href=\"https:\/\/www.sourcetreeapp.com\">SourceTree<\/a>, que por acaso tamb\u00e9m \u00e9 da Atlassian, \u00e9 um desses <em>front-ends<\/em>. Caso voc\u00ea use Linux, a&nbsp;<a rel=\"noreferrer noopener\" href=\"http:\/\/askubuntu.com\/questions\/227554\/what-are-some-gui-clients-for-git\" target=\"_blank\">sabedoria das massas<\/a>&nbsp;indica o&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/live.gnome.org\/giggle\" target=\"_blank\">Giggle<\/a>&nbsp;como uma boa op\u00e7\u00e3o. Em 2017, alguns alunos me sugeriram tamb\u00e9m o <a rel=\"noreferrer noopener\" href=\"https:\/\/www.gitkraken.com\/\" target=\"_blank\">GitKraken<\/a>. Nestes casos, ser\u00e1 necess\u00e1rio adaptar algumas instru\u00e7\u00f5es abaixo (caso queira contribuir com instru\u00e7\u00f5es, deixe um coment\u00e1rio por favor).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para uma refer\u00eancia geral e r\u00e1pida sobre o git, sugiro os <a href=\"http:\/\/www.inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/GitTutorial-JorgeRamirez.pdf\">slides preparados por Jorge Ramirez<\/a> para uma <a href=\"https:\/\/sites.google.com\/unitn.it\/se2unitn\/home\">disciplina lecionada pela prof\u00aa. Renata Guizzardi<\/a> na Universidade de Trento em 2019.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Acessando o reposit\u00f3rio<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O reposit\u00f3rio de cada aluno(a) \u00e9 criado por mim e, utilizando o e-mail que tenho cadastrado, adiciono-o(a) ao reposit\u00f3rio com acesso de escrita ao mesmo. Isso provavelmente dispara um e-mail do BitBucket para o(a) aluno(a) com instru\u00e7\u00f5es para cria\u00e7\u00e3o de sua conta. Se voc\u00ea recebeu um e-mail assim, siga as instru\u00e7\u00f5es do e-mail antes de prosseguir com as instru\u00e7\u00f5es a seguir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Assim que tiver acesso ao reposit\u00f3rio, conseguir\u00e1 abri-lo com seu navegador Web e, clicando no bot\u00e3o <strong>Clone<\/strong>, conseguir\u00e1 ver a URL do reposit\u00f3rio como par\u00e2metro do comando <code>git clone<\/code> (por exemplo, para o <a href=\"https:\/\/bitbucket.org\/vitorsouza-ufes\/latex-templates\/\">reposit\u00f3rio de modelos LaTeX<\/a> que tamb\u00e9m hospedo no BitBucket, a URL \u00e9: <code>git@bitbucket.org:vitorsouza-ufes\/latex-templates.git<\/code>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por fim, para n\u00e3o ter que ficar usando HTTP e autentica\u00e7\u00e3o a cada acesso, sugere-se o uso de SSH, com a <a href=\"https:\/\/confluence.atlassian.com\/x\/X4FmKw\">cria\u00e7\u00e3o de uma chave SSH<\/a> em sua m\u00e1quina local e <a href=\"https:\/\/confluence.atlassian.com\/bitbucket\/ssh-keys-935365775.html\">cadastro desta chave SSH na sua conta BitBucket<\/a> (clique no seu \u00edcone de perfil &gt; BitBucket Settings &gt; Security &gt; SSH Keys). Assim ele sempre vai reconhecer voc\u00ea a partir daquela m\u00e1quina (caso troque de m\u00e1quina, \u00e9 preciso fazer de novo).<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-medium is-resized\"><a href=\"http:\/\/www.inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-01.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-01-300x204.png\" alt=\"\" class=\"wp-image-143\" width=\"300\" height=\"204\" srcset=\"https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-01-300x204.png 300w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-01-1024x695.png 1024w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-01-768x521.png 768w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-01.png 1037w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/figure><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Com autentica\u00e7\u00e3o configurada e de posse da URL, abra o SourceTree, clique no bot\u00e3o&nbsp;<strong>+ New Repository<\/strong>&nbsp;e escolha a op\u00e7\u00e3o&nbsp;<strong>Clone from URL<\/strong>. Preencha no campo&nbsp;<strong>Source URL<\/strong>&nbsp;a URL do reposit\u00f3rio e escolha um diret\u00f3rio local no seu computador no qual os arquivos ser\u00e3o copiados, conforme mostra a figura \u00e0 direita (clique na figura para ampliar). Note que a captura de tela \u00e9 antiga e usa a URL do reposit\u00f3rio criado no servidor do NEMO, que n\u00e3o existe mais.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se tudo estiver certo com seu acesso SSH ao reposit\u00f3rio (configurado anteriormente) o SourceTree ir\u00e1 obter todos os arquivos do servidor e copi\u00e1-los para o diret\u00f3rio que voc\u00ea escolheu no seu computador, por fim adicionando o novo reposit\u00f3rio \u00e0 lista exibida em sua tela inicial. Um duplo-clique no nome do reposit\u00f3rio abre a janela exibida na figura abaixo. Como voc\u00ea acaba de obter os arquivos do servidor e n\u00e3o fez nenhuma altera\u00e7\u00e3o neles, n\u00e3o h\u00e1 nada para fazer&nbsp;<em>commit<\/em>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"720\" src=\"http:\/\/www.inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-02-1024x720.png\" alt=\"\" class=\"wp-image-149\" srcset=\"https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-02-1024x720.png 1024w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-02-300x211.png 300w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-02-768x540.png 768w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-02.png 1107w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Nessa tela voc\u00ea pode ver toda a estrutura do reposit\u00f3rio alterando o filtro atual na parte superior da tela da op\u00e7\u00e3o padr\u00e3o&nbsp;<strong>Pending files, sorted by path<\/strong>&nbsp;para&nbsp;<strong>All files, sorted by path<\/strong>. \u00c0 direita do campo de filtro, um bot\u00e3o permite alterar a vis\u00e3o para&nbsp;<strong>Tree view<\/strong>&nbsp;para ver os arquivos em uma \u00e1rvore de diret\u00f3rios. O resultado \u00e9 mostrado na figura abaixo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"721\" src=\"http:\/\/www.inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-03-1024x721.png\" alt=\"\" class=\"wp-image-150\" srcset=\"https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-03-1024x721.png 1024w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-03-300x211.png 300w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-03-768x540.png 768w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-03.png 1107w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">No exemplo acima h\u00e1 um artigo no reposit\u00f3rio. A estrutura de diret\u00f3rios antiga tinha uma pasta para cada aluno, com seus artigos dentro. A partir da raiz, a pasta <code>bfmartins<\/code> representa uma aluna de mestrado. Dentro de sua pasta encontram-se os artigos em que ela for a primeira autora. Nesse momento, ela estava trabalhando em um artigo sobre&nbsp;<strong>FrameWeb 2.0<\/strong>, para a confer\u00eancia&nbsp;<strong><a rel=\"noreferrer noopener\" href=\"http:\/\/www.cis.fiu.edu\/wise2015\/\" target=\"_blank\">WISE 2015<\/a><\/strong>, da\u00ed a pasta <code>2015-wise-frameweb2<\/code> (ano \u2013 sigla confer\u00eancia \u2013 assunto do artigo). Mais adiante explico sobre a estrutura de pastas usada atualmente, j\u00e1 que agora cada aluno tem o seu reposit\u00f3rio.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Selecionando um arquivo mostra seu conte\u00fado atual. Clicando com o bot\u00e3o direito em um arquivo \u00e9 poss\u00edvel abri-lo (no editor padr\u00e3o configurado no sistema operacional) escolhendo a op\u00e7\u00e3o&nbsp;<strong>Open<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Enviando modifica\u00e7\u00f5es para o reposit\u00f3rio<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tendo o reposit\u00f3rio atualizado em seu computador, voc\u00ea pode trabalhar nos arquivos localmente para depois enviar as altera\u00e7\u00f5es para o servidor. Al\u00e9m disso, como estamos usando o git, \u00e9 criado um reposit\u00f3rio local no seu computador, de modo que voc\u00ea pode fazer&nbsp;<em>commits<\/em>&nbsp;de suas altera\u00e7\u00f5es mesmo estando&nbsp;<em>offline<\/em>. Depois basta enviar (<em>push<\/em>) os&nbsp;<em>commits<\/em>&nbsp;para o servidor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\u00c9 importante<\/strong>&nbsp;entender que s\u00e3o dois passos separados! Eles podem ser feitos de uma vez s\u00f3, mas muitas vezes o(a) aluno(a) se confunde, faz o commit local, n\u00e3o envia (<em>push<\/em>) para o reposit\u00f3rio e eu n\u00e3o consigo revisar as altera\u00e7\u00f5es!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ao alterar algum arquivo do reposit\u00f3rio, ele muda o \u00edcone do arquivo na \u00e1rvore de diret\u00f3rios do SourceTree, como mostra a figura abaixo. Clicando no arquivo, o SourceTree mostra a diferen\u00e7a (<em>diff<\/em>) entre o arquivo anterior e o atual (considerando seu reposit\u00f3rio local).<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"720\" src=\"http:\/\/www.inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-04-1024x720.png\" alt=\"\" class=\"wp-image-153\" srcset=\"https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-04-1024x720.png 1024w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-04-300x211.png 300w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-04-768x540.png 768w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-04.png 1107w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A ferramenta de&nbsp;<em>diff<\/em>&nbsp;do SourceTree n\u00e3o possui suporte a quebra de linhas. Se voc\u00ea quiser ver exatamente o que mudou na linha de forma mais f\u00e1cil, pode usar alguma ferramenta externa. No Mac o SourceTree vem configurado pra usar o FileMerge (ferramenta instalada junto com o Xcode). Clicando com o bot\u00e3o direito no arquivo e selecionando&nbsp;<strong>External diff<\/strong>, ele abre as duas vers\u00f5es do arquivo no FileMerge, como mostra a figura abaixo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"722\" src=\"http:\/\/www.inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-05-1024x722.png\" alt=\"\" class=\"wp-image-154\" srcset=\"https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-05-1024x722.png 1024w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-05-300x212.png 300w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-05-768x542.png 768w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-05.png 1106w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Ap\u00f3s ter trabalhado num trecho do artigo, pode-se fazer o&nbsp;<em>commit<\/em>, em dois passos. Primeiro, \u00e9 preciso indicar o que vai entrar no&nbsp;<em>commit<\/em>. Isso \u00e9 feito clicando na caixa de marca\u00e7\u00e3o que fica \u00e0 esquerda dos arquivos. Se quiser selecionar todos os arquivos, basta clicar na caixa de marca\u00e7\u00e3o \u00e0 esquerda do t\u00edtulo&nbsp;<strong>Unstaged files<\/strong>. Os arquivos selecionados passam para a listagem superior, chamada&nbsp;<strong>Staged files<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O segundo passo consiste em clicar no bot\u00e3o&nbsp;<strong>Commit<\/strong>&nbsp;na barra de ferramentas do topo da janela, inserir uma descri\u00e7\u00e3o breve do que voc\u00ea fez desde o \u00faltimo&nbsp;<em>commit<\/em>&nbsp;e enviar suas altera\u00e7\u00f5es para seu reposit\u00f3rio local. Caso queira envi\u00e1-las diretamente ao reposit\u00f3rio remoto, marque a op\u00e7\u00e3o&nbsp;<strong>Push changes immediately to origin\/master<\/strong>&nbsp;antes de enviar. A figura abaixo mostra o SourceTree momentos antes do&nbsp;<em>commit<\/em>&nbsp;ser efetuado.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"720\" src=\"http:\/\/www.inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-06-1024x720.png\" alt=\"\" class=\"wp-image-155\" srcset=\"https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-06-1024x720.png 1024w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-06-300x211.png 300w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-06-768x540.png 768w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-06.png 1106w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Se voc\u00ea fez apenas&nbsp;<em>commits<\/em>&nbsp;locais, sem enviar ao servidor, o n\u00famero de <em>commits<\/em> pendentes ser\u00e1 exibido acima do bot\u00e3o&nbsp;<strong>Push<\/strong> da barra de ferramentas no topo da janela. Basta clicar nele para enviar as modifica\u00e7\u00f5es para o servidor. Quando mais de um autor trabalha no mesmo artigo, \u00e9 importante enviar as altera\u00e7\u00f5es para o servidor com frequ\u00eancia (ao menos no final do dia ou cada vez que voc\u00ea fizer uma pausa na sua tarefa de escrita, por exemplo para o almo\u00e7o). Isso evita que dois ou mais autores modifiquem o mesmo artigo e causem conflito ao tentarem envi\u00e1-lo ao servidor. \u00c9 poss\u00edvel resolver eventuais conflitos, mas deixarei esse assunto para outro momento.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Obtendo altera\u00e7\u00f5es do reposit\u00f3rio<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">O SourceTree verifica de tempos em tempos o reposit\u00f3rio remoto (voc\u00ea pode for\u00e7ar a verifica\u00e7\u00e3o clicando no menu&nbsp;<em>Repository<\/em>, item&nbsp;<em>Refresh Remote Status<\/em>). Quando algum colega efetua altera\u00e7\u00f5es nos arquivos e os envia ao servidor, notifica\u00e7\u00f5es aparecer\u00e3o tanto na tela inicial quanto na \u00e1rea de trabalho do reposit\u00f3rio espec\u00edfico. A figura abaixo mostra um exemplo para o reposit\u00f3rio&nbsp;<strong>konangelop-papers<\/strong>&nbsp;que eu compartilhava com um&nbsp;<a rel=\"noreferrer noopener\" href=\"https:\/\/sites.google.com\/site\/konangelop\/\" target=\"_blank\">colega<\/a>&nbsp;da&nbsp;<a rel=\"noreferrer noopener\" href=\"http:\/\/www.disi.unitn.it\" target=\"_blank\">Universidade de Trento<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"721\" src=\"http:\/\/www.inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-07-1024x721.png\" alt=\"\" class=\"wp-image-156\" srcset=\"https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-07-1024x721.png 1024w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-07-300x211.png 300w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-07-768x541.png 768w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-07.png 1106w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Como pode ser visto na figura, a tela inicial mostra dois n\u00fameros ao lado de&nbsp;<strong>master<\/strong>&nbsp;(que \u00e9 o nome do ramo, ou&nbsp;<em>branch<\/em>, que estamos trabalhando):&nbsp;<strong>8<\/strong>&nbsp;arquivos sofreram modifica\u00e7\u00f5es ao longo de&nbsp;<strong>20<\/strong>&nbsp;<em>commits<\/em>. Na \u00e1rea de trabalho do reposit\u00f3rio o n\u00famero de&nbsp;<em>commits<\/em>&nbsp;aguardando no servidor tamb\u00e9m s\u00e3o mostrados acima do bot\u00e3o&nbsp;<strong>Pull<\/strong>&nbsp;na barra de ferramentas no topo da janela. E, intuitivamente, \u00e9 clicando neste bot\u00e3o que voc\u00ea traz os&nbsp;<em>commits<\/em>&nbsp;do servidor para seu reposit\u00f3rio local, atualizando assim seus arquivos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Enfim, controle de altera\u00e7\u00f5es no LaTeX<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Com a infraestrutura pronta e as ferramentas adequadas, enfim podemos chegar a um processo de controle de altera\u00e7\u00f5es em documentos LaTeX (por mais primitivo que ele possa parecer para usu\u00e1rios de Word\/Writer). O controle do que foi alterado pelo colega \u00e9 feito usando o&nbsp;<em>diff<\/em>, conforme j\u00e1 exemplificado acima. Falta, ent\u00e3o, uma maneira de deixar notas e respond\u00ea-las.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A solu\u00e7\u00e3o envolve um pacote LaTeX chamado&nbsp;<strong>colorinlistoftodos<\/strong>, que permite adicionar texto em caixas coloridas, semelhantes \u00e0s usadas nos coment\u00e1rios de Word\/Writer (por\u00e9m ficam no corpo do texto e n\u00e3o numa coluna lateral). Para us\u00e1-lo, \u00e9 preciso incluir algumas defini\u00e7\u00f5es no in\u00edcio do arquivo (que j\u00e1 est\u00e3o inclu\u00eddas em todos os modelos do meu <a href=\"https:\/\/bitbucket.org\/vitorsouza-ufes\/latex-templates\/\">reposit\u00f3rio de modelos LaTeX<\/a>):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>% Colorinlistoftodos package: to insert colored comments so authors can collaborate on the content.\n\\usepackage[colorinlistoftodos, textwidth=20mm, textsize=footnotesize]{todonotes}\n\\newcommand{\\aluno}[1]{\\todo[author=\\textbf{Aluno},color=green!30,caption={},inline]{#1}}\n\\newcommand{\\vitor}[1]{\\todo[author=\\textbf{V\u00edtor},color=red!30,caption={},inline]{#1}}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Feitas as defini\u00e7\u00f5es, eu incluo notas ao longo do documento usando a macro <code>\\vitor{}<\/code> e o(a) aluno(a) responde com <code>\\aluno{}<\/code> (trocar <code>aluno<\/code> e <code>Aluno<\/code> pelo nome do(a) aluno(a)). Na configura\u00e7\u00e3o acima, o(a) aluno(a) comenta usando caixas verdes e eu respondo com caixas vermelhas. A figura abaixo mostra uma simula\u00e7\u00e3o de uma discuss\u00e3o sobre o primeiro par\u00e1grafo de um artigo de exemplo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"775\" src=\"http:\/\/www.inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-08-1024x775.png\" alt=\"\" class=\"wp-image-157\" srcset=\"https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-08-1024x775.png 1024w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-08-300x227.png 300w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-08-768x582.png 768w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-08-1536x1163.png 1536w, https:\/\/inf.ufes.br\/~vitorsouza\/wp-content\/uploads\/img-blog-controle-de-alteracoes-em-latex-usando-git-com-bitbucket-e-sourcetree-08.png 1607w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">No exemplo, eu questiono uma afirma\u00e7\u00e3o do aluno (ou porque eu n\u00e3o tenho certeza ou porque acho que deve ser modificado, mas quero que o aluno reflita sobre a quest\u00e3o). Ap\u00f3s efetuar o&nbsp;<em>pull<\/em>&nbsp;da nova vers\u00e3o do reposit\u00f3rio e ver o coment\u00e1rio, o aluno responde, justificando seu texto original. Caso o aluno tivesse concordado com a mudan\u00e7a da frase, faria a modifica\u00e7\u00e3o do texto e adicionaria um coment\u00e1rio diferente abaixo do coment\u00e1rio do professor: <code>\\aluno{OK. Alterado.}<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isso ilustra a import\u00e2ncia de sempre continuar a discuss\u00e3o at\u00e9 o fim. Apenas quando n\u00e3o houver mais nada a responder que&nbsp;<strong>eu irei excluir<\/strong>&nbsp;todos os coment\u00e1rios, encerrando a quest\u00e3o. De qualquer forma, o aparecimento e desaparecimento de coment\u00e1rios nas vers\u00f5es do artigo ficar\u00e3o vis\u00edveis no&nbsp;<em>diff<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Outra coisa importante \u00e9 usar um bom editor LaTeX que permita navega\u00e7\u00e3o entre c\u00f3digo fonte e PDF. O&nbsp;<a rel=\"noreferrer noopener\" href=\"http:\/\/texstudio.sourceforge.net\" target=\"_blank\">TeXstudio<\/a>, mostrado na figura acima, tem esta funcionalidade. Se o usu\u00e1rio segurar a tecla Command (no Mac) ou Ctrl (Windows\/Linux) e clicar em um par\u00e1grafo do c\u00f3digo-fonte, o mesmo \u00e9 exibido no PDF \u00e0 direita e vice-versa (Command+click ou Ctrl+click no PDF \u00e0 direita leva ao trecho no c\u00f3digo-fonte).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Considerando coment\u00e1rios de bancas e revisores<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Quando um documento precisar ser alterado por ter sido revisado por uma banca (ex.: vers\u00e3o final de PG, de disserta\u00e7\u00e3o ou tese) ou revisores de confer\u00eancias\/peri\u00f3dicos (ex.: vers\u00f5es <em>camera-ready<\/em>), pe\u00e7o aos meus alunos(as) que sigam o seguinte protocolo:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Corre\u00e7\u00f5es simples (ex.: erros de grafia) podem ser feitas diretamente;<\/li><li>Para as demais corre\u00e7\u00f5es, crie uma macro <code>\\banca{}<\/code> ou <code>\\revisor{}<\/code> com uma cor diferente (se preferir, uma para cada membro da banca\/para cada revisor) e adicione todos os coment\u00e1rios no documento;<\/li><li>Antes de come\u00e7ar a modificar seu texto, fa\u00e7a um <em>commit<\/em> s\u00f3 com os coment\u00e1rios;<\/li><li>Em seguida, comece a modificar seu texto para atender aos coment\u00e1rios ou, caso n\u00e3o concorde com algum coment\u00e1rio ou n\u00e3o tenha certeza de como atend\u00ea-lo, insira uma resposta utilizando um coment\u00e1rio seu (<code>\\aluno{}<\/code> ou seu nome) para que possamos discutir nas rodadas de revis\u00e3o;<\/li><li>Fa\u00e7a <em>commits<\/em> e solicite minha revis\u00e3o por cap\u00edtulo\/se\u00e7\u00e3o ou do documento todo, como preferir e de acordo com os prazos que tiver pra cumprir.<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">Estrutura dos reposit\u00f3rios<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Reposit\u00f3rios de alunos envolvidos em pesquisa (IC, mestrado, doutorado) tem o seguinte formato:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><code>graylit<\/code>: diret\u00f3rio para monografias e relat\u00f3rios. Exemplos:<ul><li><code>bsc-nome-aluno<\/code>: diret\u00f3rio para documentos produzidos durante a gradua\u00e7\u00e3o. Exemplos:<ul><li><code>ic-subprojeto<\/code>: subprojeto de inicia\u00e7\u00e3o cient\u00edfica;<\/li><li><code>ic-relatorio-parcial<\/code>: relat\u00f3rio parcial de inicia\u00e7\u00e3o cient\u00edfica;<\/li><li><code>ic-relatorio-final<\/code>: relat\u00f3rio final de inicia\u00e7\u00e3o cient\u00edfica;<\/li><li><code>pg-anteprojeto<\/code>: anteprojeto de gradua\u00e7\u00e3o;<\/li><li><code>pg-monografia<\/code>: monografia de projeto de gradua\u00e7\u00e3o<\/li><\/ul><\/li><\/ul><ul><li><code>msc-nome-aluno<\/code>: disserta\u00e7\u00e3o de mestrado;<\/li><li><code>dsc-projeto-nome-aluno<\/code>: pr\u00e9-projeto de doutorado;<\/li><li><code>dsc-proposta-nome-aluno<\/code>: proposta de tese de doutorado;<\/li><li><code>dsc-tese-nome-aluno<\/code>: tese de doutorado;<\/li><\/ul><\/li><li><code>papers<\/code>: diret\u00f3rio para artigos submetidos para revis\u00e3o;<ul><li><code>ano-veiculo-assunto<\/code>: subdiret\u00f3rios seguem este padr\u00e3o, indicando ano da publica\u00e7\u00e3o, ve\u00edculo (sigla do peri\u00f3dico ou da confer\u00eancia) para a qual ser\u00e1 submetido e assunto do artigo. Ex.: <code>2019-er-ooco<\/code> &#8212; artigo sobre a OOC-O submetido ao ER 2019. Dentro dele, os subdiret\u00f3rios:<ul><li><code>submitted<\/code>: vers\u00e3o enviada para avalia\u00e7\u00e3o;<\/li><li><code>x-camera-ready<\/code>: vers\u00e3o <em>camera ready<\/em> caso artigo seja aprovado (revis\u00e3o solicitada pela confer\u00eancia);<\/li><li><code>x-review-01<\/code>: no caso de artigos de peri\u00f3dicos que exigem  m\u00faltiplas rodadas de revis\u00e3o, usar diret\u00f3rios numerados como este;<\/li><li><code>x-typeset<\/code>: em alguns casos, h\u00e1 ainda uma revis\u00e3o por parte da editora, produzindo a vers\u00e3o que efetivamente ser\u00e1 publicada.<\/li><\/ul><\/li><\/ul><\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Alunos envolvidos apenas em projeto de gradua\u00e7\u00e3o possuem um reposit\u00f3rio simplificado:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><code>code<\/code>: c\u00f3digo-fonte do software desenvolvido, caso o PG envolva desenvolvimento de um software;<\/li><li><code>pg-anteprojeto<\/code>: anteprojeto de gradua\u00e7\u00e3o;<\/li><li><code>pg-engsoft-especificacao-projeto<\/code>: documento de especifica\u00e7\u00e3o de projeto de software, caso o PG envolva desenvolvimento de um software;<\/li><li><code>pg-engsoft-especificacao-requisitos<\/code>: documento de especifica\u00e7\u00e3o de requisitos de software, caso o PG envolva desenvolvimento de um software;<\/li><li><code>pg-monografia<\/code>: monografia de projeto de gradua\u00e7\u00e3o.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Em resumo: passo a passo da escrita colaborativa em LaTeX para meus alunos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1 \u2013<\/strong>&nbsp;Para o primeiro acesso, eu crio o reposit\u00f3rio e dou acesso a voc\u00ea;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2 \u2013<\/strong>&nbsp;Se for primeiro acesso, voc\u00ea configura a autentica\u00e7\u00e3o e clona o reposit\u00f3rio em sua m\u00e1quina local usando o SourceTree;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3 \u2013<\/strong>&nbsp;Se voc\u00ea for escrever alguma monografia ou relat\u00f3rio, muitas vezes eu j\u00e1 incluo o <em>template<\/em> no reposit\u00f3rio ao cri\u00e1-lo. Do contr\u00e1rio, obtenha-o no <a href=\"https:\/\/bitbucket.org\/vitorsouza-ufes\/latex-templates\/\">reposit\u00f3rio de modelos LaTeX<\/a>. Se voc\u00ea for escrever um artigo, obtenha o <em>template<\/em> no site da confer\u00eancia ou do peri\u00f3dico. Lembre-se de seguir as regras descritas na se\u00e7\u00e3o anterior;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>4 \u2013<\/strong>&nbsp;Assim que tiver escrito o suficiente para sofrer revis\u00e3o, assegure-se de que n\u00e3o h\u00e1 erros ortogr\u00e1ficos no documento (use um revisor ortogr\u00e1fico!) e de ter enviado todos os&nbsp;<em>commits<\/em>&nbsp;para o servidor. Ent\u00e3o, <strong>me envie um e-mail<\/strong> solicitando que fa\u00e7a a revis\u00e3o do documento. Pode-se solicitar a revis\u00e3o apenas quando tudo estiver pronto ou cap\u00edtulo por cap\u00edtulo (se\u00e7\u00e3o por se\u00e7\u00e3o). Neste \u00faltimo caso, \u00e9 melhor se os cap\u00edtulos\/se\u00e7\u00f5es estiverem em arquivos separados para evitar conflitos;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>5 \u2013<\/strong>&nbsp;Eu fa\u00e7o o&nbsp;<em>pull<\/em>&nbsp;do documento e sua revis\u00e3o, corrigindo diretamente o que achar apropriado e adicionado coment\u00e1rios com <code>\\vitor{}<\/code> (fundo vermelho) quando tiver d\u00favidas ou quiser dar explica\u00e7\u00f5es. Ao final da revis\u00e3o, aviso o aluno (tamb\u00e9m por e-mail) que a revis\u00e3o foi feita;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>6 \u2013<\/strong>&nbsp;Ao obter uma vers\u00e3o revisada do reposit\u00f3rio, voc\u00ea deve:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Fazer o&nbsp;<em>diff<\/em>&nbsp;entre sua vers\u00e3o anterior e a nova vers\u00e3o revisada por mim para ver o que foi alterado. No caso de eu ter feito alguma altera\u00e7\u00e3o que voc\u00ea n\u00e3o concorde, adicione uma nota (<code>\\aluno{}<\/code>, fundo verde) questionando a altera\u00e7\u00e3o;<\/li><li>Responder todos os meus coment\u00e1rios antes de enviar uma nova vers\u00e3o para revis\u00e3o, seja efetuando as altera\u00e7\u00f5es pedidas (e comentando \u201cOK\u201d), seja respondendo com um questionamento, discordando, argumentando, etc.<\/li><li>Passar novamente o corretor ortogr\u00e1fico caso tenha escrito novos par\u00e1grafos.<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>7 \u2013<\/strong>&nbsp;Produzindo uma nova vers\u00e3o e enviando-a ao reposit\u00f3rio no servidor, me avise novamente (preferencialmente na mesma <em>thread<\/em> de e-mail) e o ciclo continua at\u00e9 a vers\u00e3o final do artigo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Em 2015 escrevi sobre como fazer controle de altera\u00e7\u00f5es em documentos escritos com LaTeX usando Git e SourceTree. \u00c0 \u00e9poca, utilizava um reposit\u00f3rio git criado por mim num servidor da UFES, o que depois avaliei que deixou algumas quest\u00f5es complicadas. Por este motivo, recentemente, migrei para o BitBucket, o que exige uma atualiza\u00e7\u00e3o das instru\u00e7\u00f5es [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-138","post","type-post","status-publish","format-standard","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/inf.ufes.br\/~vitorsouza\/wp-json\/wp\/v2\/posts\/138","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/inf.ufes.br\/~vitorsouza\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/inf.ufes.br\/~vitorsouza\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/inf.ufes.br\/~vitorsouza\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/inf.ufes.br\/~vitorsouza\/wp-json\/wp\/v2\/comments?post=138"}],"version-history":[{"count":19,"href":"https:\/\/inf.ufes.br\/~vitorsouza\/wp-json\/wp\/v2\/posts\/138\/revisions"}],"predecessor-version":[{"id":264,"href":"https:\/\/inf.ufes.br\/~vitorsouza\/wp-json\/wp\/v2\/posts\/138\/revisions\/264"}],"wp:attachment":[{"href":"https:\/\/inf.ufes.br\/~vitorsouza\/wp-json\/wp\/v2\/media?parent=138"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/inf.ufes.br\/~vitorsouza\/wp-json\/wp\/v2\/categories?post=138"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/inf.ufes.br\/~vitorsouza\/wp-json\/wp\/v2\/tags?post=138"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}