2012-02-14 11 views
14

Me encargaron configurar Git para mi oficina. Tenemos varios sitios Acabo de configurar una unidad de red para que apliquemos nuestros cambios. Mi pregunta es: ¿dónde inicio el repositorio de Git?Mejores prácticas de configuración de Git

  1. ¿Nuevo dir + init para cada sitio?
  2. Un inicio en la unidad nueva & y cada dir un sitio diferente?
  3. ¿Algo mejor que me falta?

Busco el consejo de todos, especialmente si ha maldecido al primer tipo para configurarlo preguntando "¿POR QUÉ"?

+5

Si eres un novato completo: ¿cómo en este mundo podrían darte esa tarea? ¿Quién decidió tomar git cuando incluso el tipo que tiene que configurarlo no tiene absolutamente ningún conocimiento sobre el sistema? – eckes

+1

Equipo de desarrollo pequeño, todos llevamos muchos sombreros ... mi pregunta inicial es exactamente. – rpophessagr

+1

@rpophessagr - Es la primera vez que veo este poema de E.E. Cummings mencionado por cualquier persona. Incluso lo he usado como nombres de usuario para mí en alguna ocasión. ¡Guay! –

Respuesta

4

Es una cuestión de preferencia si prefiere tener todas las bases de código en un repositorio de git, o cada uno en el suyo. Dicho esto, mi preferencia sería un git repo por base de código/sitio. De esta forma, puede trabajar en un único sitio sin tener que consultar a los demás, y no tendrá que preocuparse de que los cambios en los otros sitios interfieran con las confirmaciones que pueda enviar a un sitio determinado.

+0

Gracias, eso tiene sentido. – rpophessagr

+1

Si necesita poder cambiar versiones de una cosa, sin afectar a otra, entonces deben estar en depósitos separados, eso no es una cuestión de preferencia. – Cascabel

36

La estructura de las cesiones temporales no es una cuestión si sitios (lo que queremos contar en eso), sino una cuestión de proyectos.

Como regla general:

  • utilizar una (bare, bendita) repo para cada proyecto independiente
  • si los módulos comunes se comparten, se dan cuenta con submodules

Dentro de cada una de recompra, estructurar el trabajo con branches, y do no confundir ramas con medios de organizar diferentes pilas de software: las ramas se utilizan para organizar el trabajo en o ne repo (es decir diferentes cadenas de desarrollo de UN software). Una ramificación modelo (que parece ser muy popular aquí en SO) es ésta:

enter image description here

confundido? ¿Curioso? Lee el explanation ...

+0

Gracias! Por submódulos, ¿te refieres a ramas? ¿o algo mas? – rpophessagr

+1

+1 para el repositorio desnudo ('git init --bare') - definitivamente una herramienta imprescindible para el entorno de OP, por lo que parece. –

+0

¡Grandes artículos gracias! – rpophessagr

1

Probablemente quieras tener un servidor centralizado desde el que presionar para realizar cambios y clonar. Este servidor puede tener un repositorio o muchos. Recomiendo leer http://sethrobertson.github.com/GitBestPractices/ que tiene varias secciones de interés directo. Específicamente, selecciona un flujo de trabajo local, un flujo de trabajo distribuido y cómo dividir tu trabajo en repositorios.

2

Recomendaría gitolite si aloja el repositorio internamente. Usted agrega un repositorio central simplemente cambiando el archivo de confusión.

A menos que esté haciendo un desarrollo multiplataforma, establezca auto crlf en falso.

Administrar sus ramas de esta manera:

http://dymitruk.com/blog/2012/02/05/branch-per-feature/

0

Configuración básica

Yo sugeriría crear un directorio dedicado a git en un servidor.

Utilicé el nombre del directorio /git en un servidor dirigido por mi empresa por cuestiones relacionadas con el trabajo, y para uso personal también creé un directorio llamado /git en un servidor web privado.

dentro de su directorio/git A continuación, puede crear repositorios desnudas para sus proyectos

ssh [email protected] 
cd /git 
mkdir Project7sName.git 
cd Project7sName.git 
git init --bare 
echo "Take over the world project" > description 

Añadir un visor

continuación, puede instalar algo así como GitList en el servidor para permitir cambios en el software a ser muy bien ver -able, por ejemplo eliminaciones en rojo e inserciones en verde.

GitList example image

distribuido de control de versiones?

Git es un sistema de control de versiones distribuidas. Por lo que es posible que desee hacer esto en varios sitios. Las ventajas son entonces que si en algún momento pierde su conexión a otros sitios, puede continuar trabajando ininterrumpidamente. Además, si tiene fallas en el disco duro o algún tipo de problema similar, tiene múltiples copias de los datos.

Puede nominar un sitio como el sitio principal si desea que las personas siempre lo presionen, o sus prácticas de trabajo podrían ser que las personas ingresen a todos sus sitios de servidor.

Hacer uso de comandos como

git remote add siteA ssh://[email protected]/git/repositoryX.git 

por lo que puede entonces hacer cosas como

git push siteA master 
git push siteB master 

Tengo un script de copia de seguridad, que funciona todos los días, tirando de GitHub, de nuestra propia gitserver, un NAS unidad, una unidad USB, y empujando a cada uno de ellos también.

Al hacer eso, hay dos métodos para garantizar que haya múltiples copias de un cambio de software.

  1. por el usuario (empujando a múltiples sitios) y
  2. Por administración (copiar cambios entre sitios).

Comience configurando Git en un servidor y agregando algo así como GitList para ver los cambios de manera agradable.

Una vez que comprende correctamente los pasos involucrados, puede repetirlos en otro sitio si lo desea, como y cuando lo desee.

¿Desea importar proyectos antiguos?

Como administrador del sistema, es posible que desee importar proyectos antiguos en Git.

Puede hacer esto al comprometer un repositorio vacío.

git touch .gitignore 
git add .gitignore 
git commit -m Empty 

Y luego descomprimir en repetidas ocasiones sus versiones archivadas de un proyecto en un directorio del proyecto (vaciado, aparte de los archivos GIT) y cometiendo el estado archivado.

rm * 
unzip ... 
git add * 
git commit -m "Archived state 2013 week 18" 
git tag ArchivedState2013week18 

Si comete los estados archivados en orden cronológico, entonces su software de visualización (GitList o lo que sea) es entonces probable que comience que muestra los cambios de software con corrección históricos, aunque mezclados entre sí y, a veces incompleta en otros.

Además, podrá usar git blame para tener una idea cuando se introdujeron algunas líneas de código.