Navegador de huesos desnudos
git instaweb --httpd=webrick
del libro git scm
combínelo con algo como el enfoque descrito aquí para el desarrollo distribuido (crédito a datagrok por el concepto bien descrito)
Inicie un servidor git único desde cualquier repositorio local.
Ya twitteé esto, pero pensé que podría usar algo de expansión:
Habilite el flujo de trabajo descentralizado de git: git config alias.serve "daemon --verbose --export-all --base-path = .git --reuseaddr --strict-paths .git /"
Supongamos que usa un flujo de trabajo de git que implica trabajar con un repositorio "oficial" central desde el que extrae y empuja sus cambios. Estoy seguro de que muchas empresas hacen esto, al igual que muchos usuarios de servicios de alojamiento de git como Github.
Digamos que el servidor, o Github, se cae un poco.
No se preocupe, después de todo, una de las razones por las que usa git es para que tenga una copia del historial completo del proyecto en su clon local.
Puede seguir codificando y comprometiéndose, mientras espera que el equipo de operaciones le dé vida al servidor. Nota personal: compre donas para el equipo de operaciones.
Pero, ¿qué pasa si, durante este tiempo de inactividad, desea colaborar con otra persona, que puede no ser un experto en git, en el mismo repositorio?
O, en lugar del tiempo de inactividad, ¿qué sucede si usted y su colaborador están en el campo y, por alguna razón, no puede obtener su VPN para permitirle conectarse a su repositorio oficial?
O bien, ¿qué sucede si usted y su colaborador están generando un montón de cambios experimentales, y aunque tiene acceso, no desea llevar su desorden inacabado al repositorio central oficial? (Ni siquiera como ramas características). Tal vez esté en medio de la limpieza de un desastroso rebase o fusión y las ramas estén por todos lados.
Bueno, git, como probablemente ya sabe, es un sistema de control de versiones "distribuido" .
Aunque puede usar un repositorio git "oficial" central en su flujo de trabajo, todavía tiene la capacidad de usar git de manera punto a punto, donde usted y su colaborador simplemente construyen y comparten compromisos entre ellos, y el centro El servidor nunca tiene que saberlo.
Entonces, ¿cómo obtienes tus ramas y te comprometes con ellas, o viceversa?
- Puede utilizar las instalaciones de git para enviar parches por correo electrónico. Pero eso es un poco poco elegante y requiere un poco de conocimiento sobre cómo aplicar parches enviados por correo electrónico.
- Puede crear una cuenta en su propia máquina para que su colaborador pueda ingresar. Pero tal vez no tenga acceso raíz local, o tal vez no confíe en ellos con acceso SSH a su caja.
- Podrías clonar tu repositorio en una memoria USB y pasarlo de un lado a otro. Pero eso es bastante tedioso, especialmente si se encuentra en la misma red local y requiere una memoria USB.
Probablemente también puedas pensar en otros métodos. Pero hay una manera súper fácil: si pueden verse en la red, pueden iniciar un servidor git único que pueden usar como control remoto para clonar, buscar y extraer sus cambios, y matarlo cuando estén hecho con eso.
La herramienta que permite esto es git daemon, que tiene muchas opciones y funcionalidades, pero con el propósito de habilitar este servicio único "solo sirve el repositorio en el que estoy", la forma de usarlo es crear un alias. Me gusta llamarlo git serve. Correr:
git config --global alias.serve "daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/"
Usar un alias es realmente crucial, porque los alias git se ejecutan en el directorio base de su árbol de trabajo. Entonces, la ruta '.git' siempre apuntará al lugar correcto, sin importar dónde se encuentre dentro del árbol de directorios de su repositorio.
Use su nuevo git servecomo así:
- correr
git serve . "Listo para retumbar", informará. Git es malo.
- Encuentra tu dirección IP. Digamos que es 192.168.1.123.
- Di "hola Jane, no estoy lista / no puedo llevar estas confirmaciones al origen, pero puedes recuperar mis confirmaciones en tu clon ejecutando
git fetch git://192.168.1.123/ "
- Presione ctrl + c cuando ya no quiera servir ese repositorio.
También podría decirle a Jane git clone git://192.168.1.123/ local-repo-namesi aún no tiene un clon del repositorio. O bien, use git pull git://192.168.1.123/ branchnamepara buscar y fusionar de una vez, lo que es útil si está trabajando en conjunto en una rama de características.
Sin embargo, tenga en cuenta que no debe hacer esto en redes hostiles si guarda secretos en su repositorio, porque no hay autenticación. No anuncia su existencia, pero cualquiera con un escáner de puertos puede encontrarlo, conectarse a él y clonar su repositorio.
Pero no es súper peligroso porque es de solo lectura por defecto. Leer elgit daemon página manual detenidamente si cree que desea habilitar el acceso de escritura. En el caso de que desee obtener las confirmaciones de su colaborador, es mucho más seguro dejarlo solo de lectura y pedirle a su colaborador que también ejecute este comando, para que pueda extraerlo.
Relacionado tangencialmente: sobre el tema de los servidores únicos, si desea compartir temporalmente un montón de archivos estáticos a través de HTTP: python -m SimpleHTTPServer