Skip to content

Commit

Permalink
document with new article for DOI generation
Browse files Browse the repository at this point in the history
  • Loading branch information
SeuNomeDeUsuario authored and SeuNomeDeUsuario committed Jun 3, 2021
1 parent 2122a9b commit 55ce45c
Show file tree
Hide file tree
Showing 11 changed files with 99 additions and 23 deletions.
37 changes: 37 additions & 0 deletions Armazenamento_permanente_Zenodo.Rmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
title: "Tornando o seu código citável"
author: "Gabriel Nakamura"
date: "6/3/2021"
output: html_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```

Ufa! Aquela mensagem bela que todos nós gostamos de receber: "Parabéns, seu artigo foi aceita para publicação na revista .....". Trabalho terminado, certo? É hora de encaixotar tudo e partir para outra empreitada científica? Não! Antes disso precisamos registar nosso código de modo que ele possa ser rastreado facilmente, citado e, acima de tudo, reproduzível de modo que quem o faça chegue nas mesmas conclusões que chegamos em nosso artigo. Porém, seu código está no GitHub, e volta e meia ele é modificado, ou por algum motivo técnico ou instabilidade de servidor o GitHub fica fora do ar. A questão é, como fazer com que seu código possa ser registrado e guardado com segurança? Para isso utilizamos algum repositório para armazenamento permanente.

Aqui irei mostrar como isso pode ser feita a partir da utilização do [Zenodo](https://zenodo.org/), mas outros repositórios permanentes de dados e códigos estão disponíveis por aí, por exemplo Dryad.

Para armazenar seu código no Zenodo, a primeira coisa a ser feita é criar uma conta nele. A minha sugestão é que esta conta seja criada através da sua conta do GitHub, isso faz com que o Zenodo já tenha conexão com seus repositórios, incluindo aquele que pretende fazer o armazenamento permanente.

Para ver os seus repositórios através do Zenodo basta acessar a aba GitHub via zenodo, como mostrado na seta da Figura abaixo

![Acessando os repositórios do GitHub via Zenodo](/Users/gabrielnakamura/OneDrive/Aulas/Disciplina_ppgEco/Curso_UFRGS_organizacao_de_dados/Zenodo_gitHub.png)
Ao acessar a aba GitHub via Zenodo, todos os seus repositórios públicos irão aparecer, portanto, é importante que o repositório que você pretende fazer o armazenamento permanente dos dados seja público.

O primeiro passo é habilitar o acesso do Zenodo ao repositório de interesse. Como mostrado na própria página do Zenodo. Em seguida você deve fazer um **release** do seu repositório, mas o que é isso? Como o próprio nome diz, o release é um lançamento do repositório, é como se fosse uma fotografia do repositório inteiro em um dado momento. Fazemos isso, por exemplo, quando temos uma versão estável de um pacote estatístico, ou quando submetemos o nosso manuscrito para uma revista ou repositórios de preprints. O release é importante pois é a partir dele que será criado o DOI (Digital Object Identifier), que é como um RG do seu repositório, um número único pelo qual ele pode ser identificado na internet.

Para criar um release clique no botão destacado na Figura seguinte. Ele te redicionará para a página do GitHub.

![Criando um release](/Users/gabrielnakamura/OneDrive/Aulas/Disciplina_ppgEco/Curso_UFRGS_organizacao_de_dados/Release_Zenodo_git.png)

Ná página do GitHub dê um nome para esse seu novo release. Geralmente os nomes seguem um formato com três digitos separados por pontos, chamamos esse sistema de [versionamento semântico](https://semver.org/lang/pt-BR/) e utilizamos ele para controlar as versões de lançamento de acordo com mudanças que podemos ir fazendo no nosso código. Isso é mais comum de ser utilizado para controlar versões de pacotes, mas não impede que utilize no seu repositório.

Para lançar seu release basta atribuir um nome de versão para seu repositório e pronto! Basta clicar no botão para publicar o release e ele está pronto.

![Seu código lançado](/Users/gabrielnakamura/OneDrive/Aulas/Disciplina_ppgEco/Curso_UFRGS_organizacao_de_dados/Release_Description_github.png)

Após isso, volte para a página do Zenodo, lá você vai encontrar algumas coisas novas ao clicar no repositório que fez o release, a mais importante dela será o DOI. Esse número, a partir de agora, identificará seu repositório na internet. Você pode, por exemplo, adicionar esse número no seu README, de modo que quem acesse o seu repositório através do GitHub saiba que você tem uma versão de armazenamento permanente que pode ser acessada através desse DOI.


15 changes: 13 additions & 2 deletions Git_comandos_basicos.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -71,10 +71,21 @@ Para informações detalhadas de como usar esse recurso acesse essa [Referência

## Arquivos grandes - Git LFS

O GitHub não foi projetado pensando em hospedar arquivos que não são binários, por exemplo, Figuras em extensões como .png, .tiff, .jpeg. Sua principal função sempre foi, e ainda é, hospedar códigos em arquivos simples de texto, tal como nossos scripts em R. Porém, em alguns momentos não tem como fugir, e alguns arquivos pesados (>25Gb), como imagens de satélite, ou de elevado processamento, precisam ser hospedadas no nosso repositório, como fazemos? Para resolver isso precisamos utilizar uma extensão do Git chamado Git LFS (Large File Storage). Essa extenção funciona como um pacote, ela permite que o Git faça coisas que não estão na sua programação básica.
O GitHub não foi projetado pensando em hospedar arquivos que não são binários, por exemplo, Figuras em extensões como .png, .tiff, .jpeg. Sua principal função sempre foi, e ainda é, hospedar códigos em arquivos simples de texto, tal como nossos scripts em R. Porém, em alguns momentos não tem como fugir, e alguns arquivos pesados (>25Gb), como imagens de satélite, ou de elevado processamento, precisam ser hospedadas no nosso repositório, como fazemos? Para resolver isso precisamos utilizar uma extensão do Git chamado [Git LFS (Large File Storage)](https://qifengzhou.github.io/2018/04/29/Upload%20files%20bigger%20than%2025%20MB%20to%20Github/). Essa extenção funciona como um pacote, ela permite que o Git faça coisas que não estão na sua programação básica.

Para utiizar o Git LFS precisamos primeiro instalar esta extensão em nosso computador, sua instalação pode ser feita direta no [site do Git](https://git-lfs.github.com/), primeiro fazendo o download da versão adequada ao sistema operacional de sua máquina e depois seguindo os passos necessários para instalação.

Após instalado abra a linha de comando a partir da pasta do diretório que deseja que os arquivos grandes sejam upados para o GitHub e digite:

```{r echo=TRUE, eval=FALSE}
git lfs track "*.extensao"
```

Ao fazer isso estamos dizendo para o git permitir fazer o push de todos os arquivos que apresentam aquela extensao desejada, mesmo que eles sejam maiores que o tamanho máximo permitido.


[Referência](https://qifengzhou.github.io/2018/04/29/Upload%20files%20bigger%20than%2025%20MB%20to%20Github/)

**Em construção**

![](https://media.giphy.com/media/BpGWitbFZflfSUYuZ9/giphy.gif)

4 changes: 2 additions & 2 deletions Intro_Git.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ sudo yum install git

Após a instalação do git devemos configurá-lo no nosso computador. Para configurar o Git, ou seja, para que o Git saiba quem está o usando, abra o RStudio e digite:

```{r}
```{r echo=TRUE, eval=FALSE}
library(usethis)
use_git_config(user.name = "SeuNomeDeUsuario", user.email = "[email protected]")
```
Expand All @@ -109,7 +109,7 @@ Isso abrirá uma guia no seu navegador para que você gere um token, tal como mo

Após gerado, guarde esse token com carinho, pois ele vai ser sua nova senha de entrada para o GitHub via RStudio, quando for requerido. Para registrar esse token gerado faça o seguinte:

```{r}
```{r echo=TRUE, eval=FALSE}
library(gitcreds)
gitcreds_set()
```
Expand Down
14 changes: 13 additions & 1 deletion Intro_Git.html
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,19 @@ <h2>Configurando o git pelo RStudio</h2>
use_git_config(user.name = &quot;SeuNomeDeUsuario&quot;, user.email = &quot;[email protected]&quot;)</code></pre>
<p>Lembre de substituir os campos que aparecerão no console do seu R com suas informações.</p>
<p>Uma outra opção é não fazer nada disso, pois em muitos computadores o RStudio já irá reconhecer automaticamente o Git instalado no seu computador, desta maneira, a primeira vez que subir (push) algo para o GitHub você deverá realizar a sua autenticação, assim o Git saberá com quem ele está “falando”.</p>
<p><strong>Neste momento já digo, calma, a maior parte das coisas que faremos nesse curso não necessita da famigerada e temida linha de comando do seu sistema operacional. Em alguns momentos vamos usá-la apenas para nos certificarmos que o Git consegue se comunicar com o GitHub</strong></p>
<p>Durante nossas aulas prensenciais, percebemos que muitos de nós tivemos problemas associados ao registros de nossas credenciais do GitHub no cache, na prática, isso fazia com que qualquer pull ou push que fosse realizado requerisse as informações de login duas vezes seguidas (uma pelo GitHub e outra pelo RStudio). Achamos a solução para esse problema utilizando a autenticação através do <em>PAT</em> (Personal Access Token). O PAT nada mais é que uma chave aleatória gerada automaticamente pelo GitHub que irá servir como a sua senha para realizar ações de pull e push, ao cadastrarmos o PAT precisamos fazer isso só uma vez, a menos que você gere outro PAT para sua conta do GitHub. A vantagem de utilizar esse tipo de autenticação está associada a segurança de suas informações, já que você não vai precisar informar mais o seu nome de usuário e senha diretamente para um programa. Então, se você está tendo esse problema faça os seguintes passos:</p>
<p>Digite a linha de código no seu console do R:</p>
<pre class="r"><code>library(usethis)
create_github_token()</code></pre>
<p>Isso abrirá uma guia no seu navegador para que você gere um token, tal como mostrado na imagem abaixo</p>
<div class="figure">
<img src="PAT_Github.png" alt="" />
<p class="caption">Gerando um Token</p>
</div>
<p>Após gerado, guarde esse token com carinho, pois ele vai ser sua nova senha de entrada para o GitHub via RStudio, quando for requerido. Para registrar esse token gerado faça o seguinte:</p>
<pre class="r"><code>library(gitcreds)
gitcreds_set()</code></pre>
<p>No console aparecerá a mensagem para digitar o token, faça isso seu problema de autenticação estará resolvido.</p>
</div>
<div id="conectando-git-rstudio-e-github" class="section level2">
<h2>Conectando Git, RStudio e Github</h2>
Expand Down
29 changes: 19 additions & 10 deletions Locar_for_remote.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -13,42 +13,51 @@ Durante o curso vimos que as funções básicas necessárias para um controle de

# Do clica-clica para o digita-digita

Para iniciar um repositório local observado pelo git abra o terminal a partir da pasta que você deseja que o git observe, usando a linha de comando. No terminal digite:
*Como podemos fazer o caminho inverso para inicialização de um repositório, ou seja, a partir de um diretório local, já organizado, como podemos fazer com que ele seja observado pelo git e esteja conectado pelo com o GitHub (local -> remoto ao invés de inciar remoto -> local)? *

Para fazer com que um repositório local seja observado pelo git abra o terminal a partir da pasta que você deseja que o git observe, usando a linha de comando. No terminal digite:

```{r echo=TRUE, eval=FALSE}
git init
```

Para conectar um repositório local ao remoto
Em seguida conecte o diretório local ao remoto. A prieira linha informa o caminho https do seu repositório remoto, a segunda faz um push do seu diretório local (origin) para o remoto (master).

```{r echo=TRUE, eval=FALSE}
git remote add origin https://github.com/yourUserName/yourRepoName.git
git push -u origin master
```

*Como clonamos um repositório remoto a partir da linha de comando?*
Para clonar um repositório remoto no seu computador usando a linha de comando digite:

Para clonar um repositório local
```{r echo=TRUE, eval=FALSE}
git clone https://gitlab.com/gitlab-tests/sample-project.git
```

Para preparar o arquivo para fazer um commit
*Como fazemos o commit de um arquivo através da linha de comando?*

```{r echo=TRUE, eval=FALSE}
git add <file-name OR folder-name>
git commit -m "COMMENT TO DESCRIBE THE INTENTION OF THE COMMIT"
git commit -m "Um comentário para descrever a modificação neste arquivo"
```
A primeira linha adiciona o arquivo que você deseja fazer o commit, a segunda faz o commit com uma mensagem entre aspas.

*Quando estamos trabalhando em conjunto num mesmo repositório, mas em branches distintos, como fazemos para copiar um arquivo de um branch e jogar para o outro branch?*

Para copiar arquivos de um branch para outro branch dentro de um mesmo repositório. No branch em que o arquivo deve ser copiado digite:
Suponhamos que você esteja no branch master (que vai ser main em alguns casos), e deseja copiar um arquivo que só tem no branch do seu colaborador (apenas para exemplificar vamos chamar o branch de outro_branch). Primeiro precisamos copiar o arquivo desejado do branch do colaborador

```{r}
git checkout <nome do repo que contem arquivo a ser copiado> <Nome do arquivo com extensao>
```{r echo=TRUE, eval=FALSE}
git checkout outro_branch Nome_do_aruivo.extencao
```

O arquivo vai aparecer na área de stage do seu RStudio, na aba do git
O help do git é bastante informativo, portanto vale a pena olhar para ele para aprender as funções básicas. Para isso digite

[Referência](https://docs.gitlab.com/ee/gitlab-basics/start-using-git.html)
```{r echo=TRUE, eval=FALSE}
git help
```

Outra fonte de informação muito boa e completa é o livro da [Jenny Bryan](https://happygitwithr.com/)



17 changes: 11 additions & 6 deletions Locar_for_remote.html
Original file line number Diff line number Diff line change
Expand Up @@ -285,19 +285,24 @@ <h4 class="date">5/24/2021</h4>
</div>


<p>Durante o curso vimos que as funções básicas necessárias para um controle de versões efetivas para garantir um projeto científico reprodutível, podem ser realizadas através do RStudio, quando conectado com um repositório local observado pelo git e com o GitHub. Porém, vimos também que algumas coisas não são possíveis de se fazer apenas através dos botões que o RStudio nos apresenta, mas que são possíveis a partir da linha de comando, utilizando algumas poucas funções. Nesta seção apresentarei algumas funções básicas que são úteis conhecermos para que possamos realizar ações que não são possíveis serem realizadas através do RStudio.</p>
<div id="do-clica-clica-para-o-digita-digita" class="section level1">
<h1>Do clica-clica para o digita-digita</h1>
<p>Para iniciar um repositório local observado pelo git abra o terminal a partir da pasta que quer que o git observe usando a linha de comando. No terminal digite</p>
<p><em>Como podemos fazer o caminho inverso para inicialização de um repositório, ou seja, a partir de um diretório local, já organizado, como podemos fazer com que ele seja observado pelo git e esteja conectado pelo com o GitHub (local -&gt; remoto ao invés de inciar remoto -&gt; local)? </em></p>
<p>Para fazer com que um repositório local seja observado pelo git abra o terminal a partir da pasta que você deseja que o git observe, usando a linha de comando. No terminal digite:</p>
<pre class="r"><code>git init</code></pre>
<p>Para conectar um repositório local ao remoto</p>
<p>Em seguida conecte o diretório local ao remoto. A prieira linha informa o caminho https do seu repositório remoto, a segunda faz um push do seu diretório local (origin) para o remoto (master).</p>
<pre class="r"><code>git remote add origin https://github.com/yourUserName/yourRepoName.git
git push -u origin master</code></pre>
<p>Para clonar um repositório local</p>
<p><em>Como clonamos um repositório remoto a partir da linha de comando?</em> Para clonar um repositório remoto no seu computador usando a linha de comando digite:</p>
<pre class="r"><code>git clone https://gitlab.com/gitlab-tests/sample-project.git</code></pre>
<p>Para preparar o arquivo para fazer um commit</p>
<p><em>Como fazemos o commit de um arquivo através da linha de comando?</em></p>
<pre class="r"><code>git add &lt;file-name OR folder-name&gt;
git commit -m &quot;COMMENT TO DESCRIBE THE INTENTION OF THE COMMIT&quot;</code></pre>
<p><a href="https://docs.gitlab.com/ee/gitlab-basics/start-using-git.html">Referência</a></p>
git commit -m &quot;Um comentário para descrever a modificação neste arquivo&quot;</code></pre>
<p>A primeira linha adiciona o arquivo que você deseja fazer o commit, a segunda faz o commit com uma mensagem entre aspas.</p>
<p><em>Quando estamos trabalhando em conjunto num mesmo repositório, mas em branches distintos, como fazemos para copiar um arquivo de um branch e jogar para o outro branch?</em></p>
<p>Suponhamos que você esteja no branch master (que vai ser main em alguns casos), e deseja copiar um arquivo que só tem no branch do seu colaborador (apenas para exemplificar vamos chamar o branch de outro_branch). Primeiro precisamos copiar o arquivo desejado do branch do colaborador</p>
<pre class="r"><code>git checkout outro_branch Nome_do_aruivo.extencao</code></pre>
</div>


Expand Down
2 changes: 1 addition & 1 deletion Organizacao_script.Rmd
Original file line number Diff line number Diff line change
Expand Up @@ -166,5 +166,5 @@ Busque sempre estruturar o seu script, isso quer dizer separar suas partes. Da m

Nomeamos coisas para que possamos organizá-las de alguma maneira. Portanto, de nada adianta um script bem organizado com um nome completamente contra-intuitivo, ou que não faça sentido algum, dar nome é coisa séria, e, como todos os outros tópicos, podemos seguir algumas regrinhas, mas o mais importante de tudo é que os nossos padrões sejam consistentes e explicados (por exemplo num README).

Jenny Bryan nos fornece aulgumas regras que auxiliam a nomeação de scripts em R e pode ser acessado [aqui](https://github.com/GabrielNakamura/Curso_UFRGS_organizacao_de_dados/blob/6158cc12c07ea8c56e9a0e8f03f43c9241076006/naming-slides.pdf).
Jenny Bryan nos fornece aulgumas regras que auxiliam a nomeação de scripts em R e pode ser acessado [aqui](https://github.com/GabrielNakamura/Curso_UFRGS_organizacao_de_dados/blob/6158cc12c07ea8c56e9a0e8f03f43c9241076006/naming-slides.pdf). Este é o documento contempla todas as regras básicas para nomeação de arquivos, recomendo a leitura para guiar suas estratégias de nomeação

Binary file added Release_Description_github.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Release_Zenodo_git.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Zenodo_gitHub.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 3 additions & 1 deletion _site.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,6 @@ navbar:
- text: "Git - comandos básicos"
href: Git_comandos_basicos.html
- text: "Git - linha de comando"
href: Locar_for_remote.html
href: Locar_for_remote.html
- text: "Tornando seus dados e códigos citáveis"
href: Armazenamento_permanente_Zenodo.html

0 comments on commit 55ce45c

Please sign in to comment.