Aprender a usar Git y colaborar en proyectos colectivos de Python
Git
Repositorios remotos
Gitlab
Colaborar en proyectos colectivamente
Editar en local
Editar un repositorio remoto
El software de control de versiones permite trazar y manipular cambios realizados en un proyecto de software.
El primer software de control de versiones fue SCCS (1975) seguido por RCS (1982).
Estos operaban en el propio ordenador. El primer software con capacidades de red fue CVS(1986) que funcionaba sobre RCS
CVS tenía un modelo de red centralizado, los cambios se hacían en el servidor. Tras CVS aparecieron varias alternativas, principalmente Subversion (2001)
Git es un sistema de control de versiones distribuido, rápido y escalable
Esto se traduce en que el servidor cumple el papel de coordinador e integrador de los cambios, pero no es esencial
Por ejemplo en Linux los cambios se integran a través de parches enviados por correo, pero son distribuidos al resto gracias al servidor
Tradicionalmente el control de versiones de hacía aplicando deltas a un archivo original
echo "" > fichero1
echo "Contenido" > fichero2
diff fichero1 fichero2
diff fichero1 fichero2 > diff.patch
patch fichero1 diff.patch
diff fichero1 fichero2
Git descarta esto por ineficiente y guarda versiones completas de archivos
Git construye cada commit como una copia completa del entorno de trabajo.
git cat-file -p HEAD
tree 9ca608ee88ad280e90c7e89d35491a8fe8dc62d2
parent d4c96700cc8912b4bc6f6c3bd87f1dd02c26c121
author example <example@example.com> 1775841940 +0200
committer example <example@example.com> 1775841940 +0200
Varias actualizaciones
git cat-file -p 9ca608ee88ad280e90c7e89d35491a8fe8dc62d2
100644 blob 60b2f55386f99ab73fd33c094ee23df3eaa50dfd .gitignore
100644 blob 4459c54addb26ba0cbf8e25e5c16ca204af42e22 .gitlab-ci.yml
100644 blob cc51e70c65d0ddc7b5505b63b3c94ab684a6830b LICENSE
100644 blob 6f1b56bb60145f6d201641ea6a42bc989b4804d3 README.md
100644 blob b38501070b8cf9a0120db0d2372162d8326ff0ef _index.md
040000 tree 39bf6b17414e1e34ef82df423dca943c58fba35f archetypes
040000 tree e5a632a9e3535087525bb4893262e8b93398471e content
100644 blob e1978bc92261ca15ce4dbb8e0ad54196ecbb4500 go.mod
100644 blob 40af216c31df8ca015f6c79300b257871b6732ee go.sum
100644 blob c53f385cf1e5c5782bbeea6cbf209311d5e377fc hugo.toml
040000 tree 6b47d45e7210e135f65438157ce23fb746e1709e static
Por ende en git todo fichero pasa por un flujo concreto:
Pueden existir ficheros que queremos evitar, por ejemplo ficheros temporales
Para esto existe el fichero .gitignore
cat .gitignore
public
.hugo_build.lock
Existen dos formas de empezar con Git
Clonar un repositorio externo
git clone URL NOMBRE_REPOSITORIO
Iniciar un repositorio local y añadir repositorio remoto
mkdir mi_repo
cd mi_repo
git init
git init
git add
git commit
....

git worktree nos permite añadir espacios de trabajo a nuestro repo, pudiendo trabajar en varias ramas a la vez
git rebase nos permite aplicar nuestros cambios encima de los cambios de la rama remota
git bisect nos permite encontrar en qué momento de la historia se introdujo un error
git submodule nos permite añadir repositorios de git como directorios de nuestro repositorio
GitHub
GitLab
Framagit
Codeberg
…
Conflicto o mejora (Issue)
Propuesta de cambios (Merge Request o Pull Request (PR))
Aceptación y fusión de cambios
GitLab es una plataforma de gestión de proyectos y control de versiones que utiliza el sistema de control de versiones Git
Framagit.org es una instancia mantenida por Framasoft
0xacab.org es una instancia mantenida por Riseup
Gitlab.com es la instancia mantenida por Gitlab Inc
Pruebas del código (Issue)
Compilación y construcción del software (Merge Request (MR) o Pull Request (PR))
Despliegue automatizado
Compilador de web estáticas Hugo
GitLab CI / CD
GitLab Pages
Es herramienta que implementa las metodologías de integración, entrega e implementación continua con el objetivo de realizar actividades como el desarrollo, prueba y publicación de softwares
Es una funcionalidad del software de GitLab que permite el alojamiento de páginas estáticas gratuitamente y fácil de configurar y fácil de configurar.
Se encarga de compilar el código y publicar el resultado de páginas estáticas
Edición básica en local
Edición avanzada con repositorio remoto