Soy un usuario de Subversion desde hace mucho tiempo que probará Git. He leído algo al respecto y entiendo la naturaleza distribuida: puedo ver muchos de los beneficios.
Sin embargo, me gusta la idea de un servidor central que pueda asumir el rol de copias de seguridad, sistema de registro, etc., mientras sigo usando Git para mi bifurcación y uso compartido local. No estoy haciendo un proyecto de código abierto, por lo que no puedo usar Github (sin pagar), por lo que mi pregunta realmente es: ¿cuál es la mejor forma de ejecutar un servidor git local?
Me doy cuenta de que esto puede estar en contra del patrón de uso estándar de Git, pero será útil para mi proyecto. Sin embargo, cualquier preocupación que haya pasado por alto siempre es bienvenida.
¡Gracias!
Respuestas:
Simplemente puede configurar un servidor ssh y ejecutar un repositorio central allí. Todos los desarrolladores simplemente acuerdan (como una cuestión de política) empujar al servidor cuando terminan de hacer los compromisos. Este es el patrón de uso en mi lugar de trabajo. Muy CVS y SVN-like.
/var/gitroot
por ejemplo).mkdir project.git && cd project.git && git init --bare --shared=group
).git clone ssh://yourserver.com/var/gitroot/project.git && cd project
)git add README
)git commit -m "Initial import"
),git push origin master
)Esto debería preparar las cosas para ti.
fuente
git init --bare project.git
?Gitorious es una interfaz web de código abierto para git que puede ejecutar en su propio servidor, al igual que github:
http://getgitorious.com/
Actualizar:
http://gitlab.org/ es otra alternativa ahora también.
Actualización 2:
Gitorious ahora se ha unido a GitLab
fuente
Prueba GitLab
La mejor herramienta de GUI de git que he usado. Es muy similar a GitHub.
Es de código abierto (licencia MIT) y es el software de gestión de git más instalado con más de 25,000 instalaciones. Tiene lanzamientos mensuales y una comunidad activa con más de 375 contribuyentes. Puede tener depósitos privados, internos y públicos ilimitados en su propio servidor. Es una aplicación Ruby on Rails que se ejecuta en la mayoría de las plataformas Unix.
fuente
Si no le importa ensuciarse con la línea de comando, gitolite es una delicia absoluta cuando trabaja en un entorno corporativo donde necesita establecer diferentes derechos de acceso en diferentes repositorios. Es una especie de versión más nueva de gitosis mencionada por @Chris.
Aquí está el resumen del sitio web del autor:
Tiene un conjunto de funciones bastante completo, pero una cosa que me gusta mucho es que la edición de la configuración se realiza a través de un repositorio especial de git. Es decir, agregar un usuario es solo
Y cuando necesita mirar el código a través del navegador, gitolite tiene soporte para la configuración de "sincronización" con gitweb. O si le gusta cgit , que es una interfaz web muy buena para git escrito en C, mejor, entonces debería ver este tutorial .
fuente
Puede considerar Gitblit , un servidor, visor y administrador de repositorio Java Git puro, integrado y de código abierto para pequeños grupos de trabajo.
fuente
Navegador de huesos desnudos
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:
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?
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 llamarlogit serve
. Correr: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 serve
como así:git serve
. "Listo para retumbar", informará. Git es malo.git fetch git://192.168.1.123/
"También podría decirle a Jane
git clone git://192.168.1.123/ local-repo-name
si aún no tiene un clon del repositorio. O bien, usegit pull git://192.168.1.123/ branchname
para 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 el
git 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
fuente
Si necesita un servidor GIT bueno y fácil, entonces debe probar GitBlit. También uso gitolite pero solo servidor, con GitBlit obtienes todo en uno, servidor, administrador, repos. gerente ... URL: http://gitblit.com/
fuente
https://rhodecode.com es una aplicación web de código abierto para Git & Mercurial que se puede instalar muy fácilmente en cualquier sistema operativo (se incluye un instalador).
RhodeCode (la nueva versión se llama RhodeCode Enterprise) agrega las características faltantes de Git como la revisión de código y, en general, es muy rápido y confiable.
fuente
También puede instalar Indefero , es un clon GPL de GoogleCode, ya que admite Subversion y Git, puede tener una transición sin problemas. Soy el autor de Indefero.
fuente
Incluso puede instalar GitHub en su servidor local (pero no de forma gratuita):
https://enterprise.github.com/
fuente
Puede que no sea la configuración de servidor git más común , pero habiendo jugado con diferentes diseños, herramientas, duplicación y esquemas de permisos, diría que una alternativa bastante sólida para los repositorios empresariales es Gerrit , que puede parecer sorprendente ya que es más conocido como un herramienta de revisión de código. Comenzamos a usarlo como revisión de código y lentamente se convirtió en nuestro repositorio principal, desaprobando g3 / gitolite
Además, es utilizado por grandes proyectos (por ejemplo, Android, Chrome), por lo que escala y ahora es bastante sólido. Simplemente otorgue a sus usuarios el permiso PUSH si desea permitir omitir la parte de revisión de código.
fuente
Para un alojamiento remoto Como otros han dicho, bitbucket.org ofrece repositorios privados gratuitos, lo he estado usando sin problemas.
Para la red local o LAN, agregaré este scm-manager.org (un único archivo ejecutable, es realmente simple de instalar, está hecho en Java para que pueda ejecutarse en Linux o Windows). En caso de que lo instales, estas son contraseñas predeterminadas.
fuente
Mientras tanto, el sitio de alojamiento de Mercurial Bitbucket también ha comenzado a ofrecer repositorios Git.
Entonces, si no necesita un servidor local , solo un lugar central donde pueda alojar repositorios privados de Git de forma gratuita, IMO Bitbucket es la mejor opción.
De forma gratuita, obtiene depósitos ilimitados privados y públicos de Git y Mercurial.
La única limitación es que en el plan gratuito, no más de cinco usuarios pueden acceder a sus repositorios privados (para más, debe pagar).
¡Mira https://bitbucket.org/plans para más información!
fuente
Si desea solicitudes de extracción, existen los proyectos de código abierto de RhodeCode y GitLab y el Stash pagado
fuente
Si solo desea su repositorio en un lugar central, esto es bastante fácil con el control de versiones distribuido como Git:
puede colocar su repositorio central en una carpeta compartida en una máquina central y todos pueden clonarlo desde allí.
Si desea un sitio web "real" en su servidor local, conozco el sitio web de alojamiento de Git http://repo.or.cz .
Parece tener menos funciones que GitHub, pero a diferencia de GitHub, puede obtener el código fuente y alojarlo en su propio servidor local.
Descargo de responsabilidad: solo leí sobre repo.or.cz, ¡nunca lo intenté yo mismo!
fuente
para configuraciones simples, puede proporcionar acceso ssh a un servidor central y configurar el directorio de trabajo de cada usuario para empujar / extraer desde este 'origen'. Esa sería la configuración más simple y común para equipos pequeños.
También puede analizar la gitosis, que le brinda un servidor http y la capacidad de administrarlo de forma remota. De esa manera, no tiene que otorgar acceso ssh y todo lo que implica a cada committer.
fuente
Para agregar a lo que Chris ha dicho, puede usar la gitosis (http://eagain.net/gitweb/?p=gitosis.git) para controlar quién puede acceder al repositorio.
Dependiendo de su uso, también puede usar ganchos (en la carpeta .git / hooks) para que su código se incorpore automáticamente al sistema de archivos del servidor cuando empuje desde su máquina local. Aquí hay un script popular para hacerlo: http://utsl.gen.nz/git/post-update . Sin embargo, esto no será necesario en todos los casos.
fuente
http://repo.or.cz , aunque bastante bueno tiende a tener algunos problemas con algunos usuarios.
Si usted es uno de ellos, le recomiendo que pruebe http://unfuddle.com ya que proviene de un entorno de subversión.
Echa un vistazo a " The 30 Second Tour ": http://unfuddle.com/about/tour/plans
fuente
http://code.google.com/p/luna-tool/ es una aplicación scala que implementa la mayoría de las partes necesarias de github para mí
fuente