-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathR_SCV_y_github-ES.Rmd
More file actions
265 lines (181 loc) · 12.9 KB
/
R_SCV_y_github-ES.Rmd
File metadata and controls
265 lines (181 loc) · 12.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
---
title: "R, Sistemas de Control de Versión y github"
author: "Alex Sanchez (asanchez@ub.edu)"
output: slidy_presentation
css: my.css
---
# Introducción a los Sistemas de Contol de Versiones
<div align="center">

</div>
---
## ¿Qué son los SCV?
<br>
- Se llama __control de versiones__ a la gestión de los diversos cambios que se realizan sobre los elementos de algún producto o una configuración del mismo.
- Una _versión_, revisión o edición de un producto, es el estado en que se encuentra el mismo en un momento dado de su desarrollo o modificación.
- Los __Sistemas de control de versiones (SCV)__ son __programas__ que facilitan la administración de las diferentes versiones de cada producto desarrollado.
- Un _producto_ puede ser un archivo, un paquete, un proyecto entero.
---
## ¿Qué aportan los SCV?
- Un sistema de control de versiones debe proporcionar:
+ Un _mecanismo de almacenaje_ los elementos que tenga que gestionar (p.ej. Archivos de texto, imágenes, documentación ...).
+ La _posibilidad realizar cambios_ sobre los elementos almacenados (p, ej. Modificaciones parciales, añadir, borrar, renombrar o mover elementos).
+ Un _Registre histórico_ de las acciones realizadas con cada elemento o conjunto de elementos (normalmente pudiendo volver o extraer un estado anterior del producto).
- Un concepto importante es el de __repositorio__ que es como se denomina al lugar donde se almacenan los datos actualizados e históricos de cambios.
- Un repositorio puede tomar formas muy distintas: puede ser un sistema de archivos en un seridor web, en un disco duro, un banco de datos, etc.
---
# Tipo de SCV
- Podemos clasificar los sistemas de control de versiones atendiendo a la arquitectura utilizada para el almacenamiento del código
+ __Centralizados__: existe un repositorio centralizado de todo el código, del que es responsable un único usuario (o conjunto de ellos). Se facilitan las tareas administrativas a cambio de reducir flexibilidad, ya que todas las decisiones fuertes (como crear una nueva rama) necesitan la aprobación del responsable. Algunos ejemplos son __CVS__, __Subversion__ o __Team Foundation Server__.
+ __Distribuidos__: cada usuario tiene su propio repositorio. Los diferentes ubicaciones pueden intercambiar y mezclar revisiones entre ellos. Es frecuente el uso de un repositorio, que está normalmente disponible, que sirve de punto de sincronización de los diferentes ubicaciones locales. Algunos ejemplos son __Bazaar__ o __Git__,
---
# SCV centralizados o distribuidos
<div align = "center">

</div>
---
# ¿Qué es `github`?
- `GitHub` es un servicio de alojamiento de repositorios` git`.
- `GitHub` ofrece toda la funcionalidad de` git` de control de revisión distribuido y administración de código de la fuente (SCM) añadiendo una serie de características propias.
- A diferencia de `git`, que es estrictamente una herramienta de _línea de comandos_, ` GitHub` proporciona una interfaz gráfica basada en web y escritorio así como integración del móvil.
- También proporciona control de acceso y varias características de colaboración como _`bug tracking`_, _administración de tasques_, y _wikis_ por cada proyecto.
<Div align = "center">

</Div>
---
# Para que suele utilizarse git / github?
- Si se guarda el código en un repositorio
+ Es más fácil controlar los cambios que se van introduciendo
+ Es más sencillo acceder (uno mismo y otros) a la última versión.
+ Es posible trabajar colaborativamente.
- Los desarrolladores de programas pueden ...
+ Tener control de lo que van desarrollando.
- Versiones de desarrollo / Versiones estables
+ Distribuir más fácilmente las versiones estables
+ Recibir input de los usuarios de los programas
- Los usuarios de los programas pueden ...
+ Acceder a la última versión de los programas que quieren utilizar.
+ Dar feedback a los desarrolladores de los programas.
---
# Configuración inicial
- Conviene diferenciar la configuración de `git` de la de` github`
+ `git` es el programa que permite hacer el CV y debe se instalarse en el equipo.
+ `github` es el entorno web que adoptamos para hacerlo y hay que darse de alta.
- Como probablemente utilizaremos `Rstudio` también lo configuraremos
+ En primer lugar instalaremos `git` en el ordenador.
+ A continuación indicaremos su localización mediante la opción:
`Tools-->Global Options-->git/SVN`
<!-- - Recordemos: -->
<!-- + Para *acceder* a un repositorio y descargar su material no hay que hacer nada especial. -->
<!-- + Sí lo que se desea es poner código (u otros materiales) bajo control de versiones si que es preciso seguir determinados pasos. -->
---
# Creación de una cuenta en github
- Ir a [https://github.com/](https://github.com/) y crear un usuario
+ [https://github.com/hadley](https://github.com/hadley)
+ [https://github.com/alexGRBio](https://github.com/alexGRBio)
- Es gratuito y podemos crear repositorios públicos o privados.
- Podemos crear _Organizaciones_ que permite dar acceso a grupos de usuarios a ciertos repositorios.
---
# Instalación de git
- Básicamente lo hay que hacer es:
+ Descargar el programa
+ Instalarlo
+ Configurar el nombre de usuario.
- Por ejemplo para crear un usuario llamado `nombreUsuario` cuyo correo electrónico será `correo@usuario` escribiremos:
`git config --global user.email correo@usuario`
`git config --global user.name mombreUsuario`
- Podemos ver un ejemplo de cómo instalar git en el enlace:
[http://r-pkgs.had.co.nz/git.html#git-init](http://r-pkgs.had.co.nz/git.html#git-init)
---
# Configuración de Rstudio para trabajar con `git/github`
- Desde _Tools -> Version Control_ selecionar _Git_
- Desde _RStudio, Tools -> Global Options_, seleccionamos la pestaña _Git / SVN_
+ Hay que asegurarse de que el _path_ hacia el ejecutable es correcto, especialmente en Windows donde será algo parecido a: `C:\Program Files (x86)\git\bin\git.exe`.
- Opcionalmente, podemos crear una clave SSH para que, desde nuestro ordenador, no haga falta introducir el nombre de usuario y la contraseña cada vez que queramos acceder a github (ver diapositiva siguiente)
- Una buena fuente de información la encontraremos en los tutoriales de Rstudio:
[Using Version Control with Rstudio](https://support.rstudio.com/hc/en-us/articles/200532077?version=1.2.1335&mode=desktop)
<!-- + [http://www.r-bloggers.com/rstudio-and-github/](http://www.r-bloggers.com/rstudio-and-github/) -->
# Configuración adicional (opcional)
- Desde _RStudio, Tools -> Global Options_, seleccionamos la pestaña _Git/SVN_
+ Escogemos _Create RSA Key_. Se abrirá una ventana que muestra la clave creada.
+ Cerramos la ventana, pulsamos _View públic key_ y copiamos (Ctrl+C) la clave pública que se nos muestra.
- *Para el paso siguiente tenemos que haber creado anteriormente una cuenta en github*
+ Accedemos a github y nos identificamos con nuestro usuario y contraseña
+ Abrimos _account settings_ y seleccionamos la pestaña de claves SSH/GPG
+ Pulsamos _Add SSH key_ y pegamos la clave pública que hemos creado desde Rstudio.
- Finalmente debemos asociar la versión de git de nuestro ordenador com GitHub
+ En RStudio, pulsamos _Tools -> Shell_. Se abrirá una consola donde escribiremos:
`git config --global user.email correo@usuario`
`git config --global user.name nombreUsuario`
---
# Descarga o Clonación de repositorios
- github se ha convertido en una de las fuentes principales de software libre en internet. Podemos encontrar de todo, cursos, manuales, herramientas organizados como repositorios de github.
- ¿Que hay que hacer, que hay que saber hacer para tener acceso a esta información?
+ Obviamente lo primero es la url de cada repositorio
+ Lo segundo es decidir si se quiere descargar o clonar.
- Si sólo vamos a acceder a un repositorio una vez en la vida probablemente bastará con que lo descarguemos a nuestro ordenador.
- Si queremos poder seguir el desarrollo del proyecto que representa el repositorio y queremos poder mantenernos al día sin necesitar hacer descargas completas cada vez que sospechemos que ha habido cambios clonaremos el repositorio.
+ La clonación consiste en usar el programa "git" instalado en nuestro ordenador para descargar el contenido del repositorio todo su historial de versiones.
+ Una vez se ha clonado el repositorio se puede solicitar actualizaciones en cualquier momento con la instrucción "pull"
---
# Caso 1.1: Descargar o Clonar repositorios de github desde la consola
Si queremos clonar un repositorio podemos hacerlo facilmente
- Accedemos a la cuenta de github que contiene el repositorio que queremos clonar, por ejemplo [https://github.com/ASPteaching](https://github.com/ASPteaching)
- Entramos en el repositorio con doble clic, por ejemplo _Omics_Data_Analysis-Case_Study_1-Microarrays_
- Seleccionamos la opción `Clone/download', Esto __copiará la dirección del repositorio en la memoria__.
- Para cllonar el repositorio desde la consola: ...
+ En nuestro ordenador nos situamos en el directorio donde se desea situar el repositorio clonado.
+ Tecleamos: `git clone` y el nombre del repositorio, que en nuestro caso seria ` _Omics_Data_Analysis-Case_Study_1-Microarrays`
---
# Caso 1.2. Clonar repositorio en Rstudio
- Para clonar un repositorio desde Rstudio podemos crear un proyecto bajo control de versión;
+ Seleccionar __File / New Project... / Version Control / Git__
+ Donde se indica "Repository URL" pegar la URL del repositorio. Por ejemplo: "https://github.com/ASPteaching/Omics_Data_Analysis-Case_Study_1-Microarrays"
+ En el campo "Create project as subdirectory of.." seleccionamos el directorio en el que desea crear el proyecto
+ Pulsamos "Create Project". Esta acción descargará el contenido del repositorio al directorio indicado y tendremos una copia completa bajo control de versiones que podremos ir actualizando con la opción git/pull.
- Obsérvese que la URL del repositorio se puede obtener tanto de la barra de direcciones del navegador como pulsando el boton "clone" this repository
---
# Caso 2: Creación de proyectos con control de versión
- Como antes escogemos _new project_ y después _new Directory_
- Damos nombre al proyecto y marcamos: _Create a git repository_
- Desde RStudio, creamos un nuevo script ( `test.R`) que añadiremos al repositorio
+ Una vez grabado este nuevo script ( `test.R`), aparecerá en la pestaña __Git tab__ del panel __Environment / history__.
+ Seleccionamos el (los) archivos que queremos añadir al repositorio y pulsamos `Commit` entrando una breve descripción donde dice` Commit message`.
+ Esta acción no cambia nada en el repositorio, simplemente informa ("Commits") de la versión actual del archivo al repositorio local, o al servidor.
+ Tras el `commit` tenemos que actualizar ("push") los cambios en el repositorio de `GitHub`
- Esto se puede hacer simplemente pulsando el botón "push" lo que nos proporcionará (i) una copia de seguridad que (ii) será accesible a los que accedan al repositorio.
---
# Caso 3: Convertir un directorio local en un repositorio de github
- Si queremos convertir un repositorio local en un remoto debemos hacerlo mediante linea de comandos.
- Una vez hecho esto podremos "empujar" el repositorio en GitHub ...
+ Sin haber creado un directorio remoto que se corresponda
+ Habiendo creado previamente un directorio remoto con el que enlazar.
- Una vez creado el directorio a GitHub podremos añadir archivos
# 3.1 Creación del repositorio remoto
- Supongamos que tenemos un directorio local que queremos poner a github
- En primer lugar el convertiremos en repositorio y haremos un repositorio remoto a su imagen
```{r eval = FALSE}
echo "# 2017-02-09-MyFebruary_Talk" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/alexsanchezpla/-MyFebruary_Talk.git
git push -u origin master
```
---
# 3.2 Añadiendo archivos del repositorio local al remoto
- Con el repositorio remoto creado podemos añadir archivos
```{r eval = FALSE}
git add -A
git commit -m "Nos archivos añadidos"
git push -u origin master
```
- Cada vez que hacemos cambios y los queramos actualizar podemos repetir estas instrucciones.
---
# Caso 4: Creación de un paquete bajo control de versiones
- Si el proceso que hemos seguido anteriormente para crear el paquete del hubiéramos hecho dentro de un proyecto de bajo control de versiones podríamos haberlo subido directamente a GitHub
- Desde allí todo el que quiera se lo puede instalar o clonar.
# Referencias y enlaces
Internet está plagado de referencias buenas y malas sobre el uso de git y github, con o sin Rstudio
- [Using Git within RStudio](https://cfss.uchicago.edu/setup/git-with-rstudio/)
- [El control de versiones con Git](https://swcarpentry.github.io/git-novice-es/)