Qué es VCS? (Versioning Control System)

EITSAEB

Team Peacemaker Hater
Se incorporó
10 Septiembre 2006
Mensajes
4.656
hablando de desarrollo alguien podría comentarnos cómo se usa GIT(hub) yo aun no entiendo de qué se trata, he tratado de seguir algunas guías, pero preferiría que alguien trabajando en algún proyecto me explicara.

Podrian achorar alguna guia para newbies :inlove
 

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.065
hablando de desarrollo alguien podría comentarnos cómo se usa GIT(hub) yo aun no entiendo de qué se trata, he tratado de seguir algunas guías, pero preferiría que alguien trabajando en algún proyecto me explicara.

Podrian achorar alguna guia para newbies :inlove
Me estai webiando

Enviado desde mi Redmi Note 4 mediante Tapatalk
 
Upvote 0

K3rnelpanic

non serviam
Miembro del Equipo
MOD
Se incorporó
1 Octubre 2007
Mensajes
6.065
cacho la teoria, pero se me hace tremendamente complicado entender que ventaja tiene por sobre, onedrive, por ejemplo.
Pero weon, ERES PROGRAMADOR!. Git-hub debería ser tu mano derecha en los desarrollos. Incluso metiendo manos.
Compararlo con Onedrive es... como comparar la física cuántica con las sumas que hace el señor de la feria para sacar el total de las verduras que llevai. Nada que ver.

Github es una plataforma de control de versión y colaboración de proyectos de desarrollo de software. Si eres programador, no puedes NO saber qué es :yao

https://guides.github.com/activities/hello-world/

Acá la guía for starters explicando qué es Github.
Por cierto, Github es el segundo invento más exitoso de Linus Torvalds :inlove
 
Upvote 0

EITSAEB

Team Peacemaker Hater
Se incorporó
10 Septiembre 2006
Mensajes
4.656
Pero weon, ERES PROGRAMADOR!. Git-hub debería ser tu mano derecha en los desarrollos. Incluso metiendo manos.
Compararlo con Onedrive es... como comparar la física cuántica con las sumas que hace el señor de la feria para sacar el total de las verduras que llevai. Nada que ver.

Github es una plataforma de control de versión y colaboración de proyectos de desarrollo de software. Si eres programador, no puedes NO saber qué es :yao

https://guides.github.com/activities/hello-world/

Acá la guía for starters explicando qué es Github.
Por cierto, Github es el segundo invento más exitoso de Linus Torvalds :inlove

Por eso digo, e insisto, que prefiero verlo en un proyecto real, porque las basuras que hago primero, son personales y claramente no profesionales, además detesto trabajar con mas gente, considera también que pretendo ejercer nunca :v
 
Upvote 0

clusten

ADMIN
Miembro del Equipo
ADMIN
Se incorporó
1 Julio 2007
Mensajes
6.239
Github es una plataforma de control de versión y colaboración de proyectos de desarrollo de software.
Onedrive también es una plataforma con control de versión y colaboración de proyectos (solo queda corto en desarrollo de software, un pequeño detalle :zippy).

Lo único que no tiene es un log (en realidad si tiene, pero está escondido y es opcional, por lo que el 99% de las personas no lo usará ni revisará).
 
Upvote 0

unreal4u

I solve problems.
Miembro del Equipo
ADMIN
Se incorporó
2 Octubre 2005
Mensajes
13.600
Moví los temas a este nuevo thread para no ensuciar el otro.

Saludos.

(Más rato puedo responder un poco más)
 
Upvote 0

EITSAEB

Team Peacemaker Hater
Se incorporó
10 Septiembre 2006
Mensajes
4.656
al final me hice dependiente de Github.

Lo que aprendí:

1) Tu código está en la nube así puedes sincronizar desde diferentes lugares. Por ejemplo yo desarrollaba en mi casa y a veces en la pega en ratos libres y empezaba justo donde lo había dejado.
2) Queda un historial de cambios en el código, por lo tanto se puede volver a mirar lo que se hizo antes.
3) Se pueden crear versiones, es decir, sin git una nueva versión sería copiar toda la carpeta de desarrollo y ponerle otro nombre, lo que es muy poco practico.

*Varias cosas mas que por el momento no usé porque como el desarrollo lo hice solo no era necesario usar.
 
Upvote 0

t3b4n

Ocioso
Se incorporó
27 Febrero 2006
Mensajes
1.659
Pero weon, ERES PROGRAMADOR!. Git-hub debería ser tu mano derecha en los desarrollos. Incluso metiendo manos.
Compararlo con Onedrive es... como comparar la física cuántica con las sumas que hace el señor de la feria para sacar el total de las verduras que llevai. Nada que ver.

Github es una plataforma de control de versión y colaboración de proyectos de desarrollo de software. Si eres programador, no puedes NO saber qué es :yao

https://guides.github.com/activities/hello-world/

Acá la guía for starters explicando qué es Github.
Por cierto, Github es el segundo invento más exitoso de Linus Torvalds :inlove

Sí puede no saber, porque el haber aprendido a programar no lo dota de toda los conocimientos relacionados, se adquieren con la experiencia. Y el que no sabe: pregunta, que justamente fue lo que hizo el op. Los que más sabemos podemos aportar compartiendo lo que conocemos a los que están empezando, no criticandolos por lo que ignoran.

Un sistema de control de versiones es esencial durante el proceso de desarrollo de un software complejo, principalmente por la posibilidad de revertir cambios, que es su funcionalidad más básica. Un sistema de almacenamiento en la nube, en cambio, está pensado para almacenar información que quieres que sea accedida desde diversos lugares. Puedes usarlo como respaldo y eventualmente revertir algún cambio reciente, pero no te entrega la flexibilidad de un sistema de control de versiones.

Por ejemplo, si por accidente borré una línea de código importante un lunes, y durante el resto de la semana seguí haciendo cambios y guardándolos en el repositorio, y recién el domingo me doy cuenta del error, puedo perfectamente obtener desde el historial de versiones el cambio específico que hice y tomar una de 2 decisiones: revertir el archivo modificado a la versión del lunes pasado o incluir sus cambios en una versión nueva.

Un SCV es particularmente importante cuando se trabaja en equipo. Varias personas pueden trabajar en un mismo proyecto a la vez, y aquí la ventaja de git radica en la posibilidad de usar "ramas". Las ramas nos permiten tener distintas versiones de un mismo proyecto, por ejemplo, para registrar las diferencias entre un ambiente de desarrollo y de producción. O para registrar en una rama separada el trabajo en progreso de un desarrollador, sin afectar la rama que contiene la versión que está en producción, por ejemplo (las que se conocen como "feature branch").

Yendo aún más allá, un sistema de control de versiones también te podría permitir automatizar deployments, evitando que más manos intervengan en el proceso, lo que reduce la posibilidad de errores. Por ejemplo, en mi pega hay un proceso automático que cada cierto tiempo revise el código de la rama de producción. Si hay cambios, lo compila y copia los nuevos archivos al servidor. Y listo :)

Ah, y ojo que github no es git. Github es un proveedor de un servidor git en la nube, con la desventaja de que si no pagas no puedes tener repositorios privados, según recuerdo. Otra alternativa similar ofrece bitbucket. Y la alternativa más económica es hacerse uno mismo su servidor local en el que ir guardando los cambios, con la desventaja de que hay que pagar sus gastos asociados y que si se muere el hardware, cagó el proyecto :dalomismo
 
Última modificación:
Upvote 0

tglaria

InExperto
Se incorporó
10 Febrero 2005
Mensajes
9.753
Y la alternativa más económica es hacerse uno mismo su servidor local en el que ir guardando los cambios, con la desventaja de que hay que pagar sus gastos asociados y que si se muere el hardware, cagó el proyecto :dalomismo

Voy a comentar algo que no se ha dicho: en git todos los colaboradores tienen una copia completa del repositorio.
Si llega a fallar el servidor, se podria recrear a partir de alguno de los repositorios locales (de un desarrollador).
Asi que, si muere el hardware del servidor, tienes una copia local por lo que no murió el proyecto (aún)
 
Upvote 0

naarf

aaaasí no mas
Se incorporó
15 Diciembre 2011
Mensajes
691
Si te complica git, puedes utilizar otros mas "faciles" como CVS o SVN.
 
Upvote 0

Ribosoma

Gold Member
Se incorporó
4 Enero 2006
Mensajes
3.196
Voy a comentar algo que no se ha dicho: en git todos los colaboradores tienen una copia completa del repositorio.
Si llega a fallar el servidor, se podria recrear a partir de alguno de los repositorios locales (de un desarrollador).
Asi que, si muere el hardware del servidor, tienes una copia local por lo que no murió el proyecto (aún)

Igual ahora MS tiene el Azure DevOps (ex TFS), que hasta 5 usuarios es gratis, y tienes repositorios GIT (privados y públicos).

De todos modos, se nota que GIT está diseñado por ingenieros que pensaban en lo que ellos necesitaban y no una herramienta diseñada para ser fácil de usar. De hecho incluso los nombres de las funciones son oscuros...
 
Upvote 0

Amenadiel

Ille qui nos omnes servabit
Fundador
OVERLORD
REPORTERO
Se incorporó
15 Enero 2004
Mensajes
18.398
Bueno... Git no se inventó para ser fácil. Lo inventó Linus Torvalds para su uso personal.

Los comandos no son oscuros. Son perversos. Torvalds dijo una vez que todos los comandos de git son solo shortcuts de git rebase. Lo dijo curado como raja y luego lo negó, pero de una manera elaborada es verdad. Podríamos decir que por ejemplo

> git rebase --onto staging --prune --aggresive --abbrev --filter-branch ...

En realidad es la forma canónica de escribir

> git gc

(La sentencia de arriba no tiene sentido, es un ejemplo extremo usando flags que se me ocurrieron ahora).

Git !== GitHub

Con respecto a GitHub, efectivamente no es lo mismo que git. De alguna manera es mucho más. Yo he invertido cientos de horas codeando para proyectos open source que alguna vez usé como librerías en mis desarrollos. Si encontraba un bug, una limitación o quería añadir algo, clomlnaba el proyecto, añadía mí contribución, creaba un pull request en el repo original, Profit. Fama y fortuna (en realidad con cueva te dan las gracias)

Cuando sigo el mismo flujo y el proyecto está alojado en bitbucket o gitlab... Lamentablemente le hago el quite como si fuera agua mineral. No le meto horas a proyectos en otros sistemas. Son una paja.

Servidor local vs PaaS

Es técnicamente posible mantener tu propio servidor de git. También es posible inventar tu propio algoritmo de cifrado. Posible y buena idea no guardan correlación. Dado que tú copia local es fiel.reflejo de todo.el proyecto en realidad ya tienes un "servidor" local. Si lo necesitas para compartir código entonces necesariamente sácalo de tu entorno local. Si lo necesitas para tener un plan de recuperación de desastres, sácalo de tu local. Sácalo de Chile y si es posible del sistema solar.

Y si lo pones en la nube, no gastes tiempo en resolver temas.de alojamiento, acl, autenticación, llaves,. tokens, Hooks, CI, y sobretodo para almacenar el porno, etc. Ya está resuelto en GitHub. No solo en GitHub, pero revisa el párrafo anterior.

git vs Dropbox/OneDrive/Google drive

Actualmente la mayoría de los discos en la nube permiten restore-to-point-in-time y una papelera infinita. El espacio ya no vale nada -_-

Sin embargo hay dos aspectos a considerar que marcan toda la diferencia. Git es un sistema de control.de.versiones. Sí, pero es más que eso. SVN es un Cvs a secas. Git está hecho para facilitar el merge entre ramas.

Si en google drive tengo un documento donde escribo A, luego B, luego C, no hay cómo quedarse con una versión que tenga solo A y C. Eso como ejemplo básico. Obviamente no hay cómo mantener un árbol de versiones en paralelo, pero si un proyecto necesita mantener 25 ramas entonces hay que refactorizar urgente.

Segundo, de nuevo en comparación con SVN o cualquier sistema que permita revertir, git no guarda copias. Guarda diferencias. En comparación el espacio utilizado por SVN es exponencialmente mayor.

Hora de la anécdota

Cuando trabajaba en una empresa que no voy a nombrar (pero es Celfin Capital y que tanto) el gerente de turno puso a uno de sus perritos falderos a hacer control de.gestion del software, si eso significa algo.

No me acuerdo cómo se llamaba el pelotudo, pero en mí memoria está almacenado bajo la categoría "guaton chupapico" (sic). Un día llegó GC y me dijo

- oye, estuve revisando y eres el desarrollador que tiene menos commits

- es posible. De hecho según mis cálculos tengo uno al día.

- no, es menos, son cinco por semana.

- debe ser porque no vengo sábados ni domingos. Pero si miras el texto de lo que pushheo, son squashs de varios commits

- no entendí nada pero es normal porque no estoy acá porque sepa sumar sino porque se la soplo al gerente. Pero te advierto, estás al debe.

De ahí en adelante cada vez que apretaba una tecla se venía commit y después de cada commit se venía push. Al final del semestre me felicitó.








Enviado desde mi HMA-L29 mediante Tapatalk
[/B][/B]
 
Última modificación:
Upvote 0

BrujoChilote

Miembro Regular
Se incorporó
29 Noviembre 2019
Mensajes
33
Quisas git compa no es una alternativa por que has utilizado programas feos... xD yo actualmente utilizo GIT pero con GITKRAKEN, con eso puedes aprender super rapido. Si quieres mandame un DM y podemos coordinar una reu por hangouts y te explico algo de control de versiones. (no soy experto) pero algo cacho :D saludos
 
Upvote 0

Amenadiel

Ille qui nos omnes servabit
Fundador
OVERLORD
REPORTERO
Se incorporó
15 Enero 2004
Mensajes
18.398
Cuando empecé con git venía de svn (así que migré todo con git-svn). Y usaba tortoise-svn. Como estaba en windows empecé a usar tortoise-git, pero al final me acostumbré a la línea de comando.

Ahora sublime viene con un GUI para git, pero de verdad yo tengo un mono de la lógica armado en mi cabeza y ver un dibujo con otra interpretación me confunde.
 
Upvote 0

brujoadr

Pro
Se incorporó
24 Septiembre 2019
Mensajes
510
Git es el mejor ejemplo de: para qué hacer algo simple si lo podemos complicar todo lo q quiera.


Enviado desde mi motorola one action mediante Tapatalk
 
Upvote 0

t3b4n

Ocioso
Se incorporó
27 Febrero 2006
Mensajes
1.659
Yo al principio también lo encontraba complicado y tampoco podía vivir sin GUI (venía de trabajar en Windows con SVN y TortoiseSVN, igual que @Amenadiel), así es que el nuevo concepto me complicaba. Pero una vez que lo entendí, mandé a la mierda las GUIs y sus problemas y me quedé con la consola no más. Es mucho más fácil y rápido (para mi).
 
Upvote 0

EITSAEB

Team Peacemaker Hater
Se incorporó
10 Septiembre 2006
Mensajes
4.656
al final para el uso basico que le doy, creo que con el integrado de VSCode es mas que suficiente.
 
Upvote 0
Subir