2011-10-07 11 views
39

Me estoy moviendo de svn a git, y estoy dispuesto a sentar algunas buenas bases.¿Debo almacenar el repositorio de git en Home o Eclipse Workspace?

Por defecto Eclipse quiere guardar mi depósito clon local en: ~/git. Me siento más cómodo manteniendo todos los datos para una tarea en el mismo espacio de trabajo, por lo que estoy dispuesto a mantenerlo en mi área de trabajo.

¿Hay algún pros/contra significativo que deba considerar?

no tengo la intención de hacer una gran cantidad de ramificación - Realmente voy por el camino de DVCS sobre todo para superar algunos problemas de Comms Internet no fiables.

+0

¿dónde está el ~ directorio? – rasen58

+7

el ~ directorio es el acceso directo utilizado para el directorio de inicio en los sistemas operativos basados ​​en Unix (consulte http://en.wikipedia.org/wiki/Home_directory) – ianmayo

Respuesta

25

También estoy cambiando a Git en Eclipse y leyendo sobre este tema. Parece que current wisdom (aunque no todos están de acuerdo) es:

  • que acostumbrarse a no tener sus proyectos por debajo del directorio de espacio de trabajo.

  • Tener un repositorio git para cada grupo de proyectos relacionados Eclipse (y quizá más archivos, por supuesto). El concepto de "proyectos relacionados" depende de su conveniencia [*]

  • Para cada repositorio, un primer directorio de nivel para cada proyecto Java. Esto implica que tendrá un directorio .git/ y, en el mismo nivel, los directorios del proyecto.

Ejemplo: supongamos que, "antes de GIT", que tenía un área de trabajo de Eclipse con varios proyectos:

/wk/workspace/.metadata/ 
/wk/workspace/projXXX/ 
/wk/workspace/projXXXtest/ (related with the previous) 
/wk/workspace/projYYY1/  | 
/wk/workspace/projYYY2/  > three related projects 
/wk/workspace/projYYY3/  | 
/wk/workspace/projZ/  (a project you are not going to version in git) 

A continuación, vamos a crear dos directorios vacíos, uno para cada repositorio, dice:

~/repositories/XXX/ 
~/repositories/YYY/ 

y después, con el nuevo diseño de GIT, tendrá:

/wk/workspace/.metadata/ 
/wk/workspace/projZ/ 

~/repositories/XXX/.git/ (XXX related repository - non-bare) 
~/repositories/XXX/projXXX/ 
~/repositories/XXX/projXXXtest/ 

~/repositories/YYY/.git/ (YYY related repository - non-bare) 
~/repositories/YYY/projYYY1/ 
~/repositories/YYY/projYYY2/ 
~/repositories/YYY/projYYY3/ 

Eclipse (EGit) hace todo esto para que cuando se hace clic Ruta Team-> Compartir sobre un proyecto existente y especificar (en el ejemplo) ~/repositories/XXX/.git/ como repositorio, (~/repositories/XXX/ como "Directorio de trabajo", deje " dentro del repositorio " en blanco).

[*] Tenga en cuenta que aquí cada grupo de proyectos es, desde el punto de vista de Git, solo un conjunto de directorios dentro de un repositorio. Algunas implicaciones relevantes: en el ejemplo anterior, nunca tendrá en el área de trabajo de Eclipse dos ramas/versiones diferentes de los proyectos projYYY1 - projYYY2 simultáneamente; y, por ejemplo, cuando etiqueta una confirmación de proyecto, en realidad está etiquetando el compromiso completo del repositorio (grupo de proyectos).

+2

¿Tiene un enlace o dos con personas que no están de acuerdo? Porque encuentro que la lógica del enfoque de "sabiduría común" no es del todo convincente. Todas las razones dadas se aplican al caso en el que el espacio de trabajo se convierte en el repositorio, en lugar de un proyecto del repositorio. Nota Acepto que parece que el camino recomendado para el eclipse , pero no estoy seguro de que tengan razón :). – studgeek

+0

No estoy seguro de entender la alternativa "hacer del espacio de trabajo el repositorio, en lugar de un proyecto el repositorio" En mi ejemplo, cada repositorio no corresponde ni a un espacio de trabajo ni a un proyecto, pero a un conjunto de proyectos. – leonbloy

+2

Puede hacer el repositorio a nivel de proyecto. Por lo tanto, no tiene que mover el proyecto y tampoco tiene ninguno de los problemas enumerados en el artículo que vincula Esto supone que no necesita más de un proyecto en un repositorio. – studgeek

2

El .git debe haber en su árbol de trabajo es (es decir, los archivos que representan el actual jefe de la rama actual que se está trabajando)

Recuerde que con Git, ramas no son directorios (en contraposición a SVN) , por lo que su árbol de trabajo representará directamente un contenido de rama, no varios directorios (para sus diversas ramas), seguido de un contenido por rama.

por lo general me gusta mantener mis fuentes proyecto separado de mi espacio de trabajo de Eclipse, pero eso es una cuestión de preferencia.

+0

Mantener las fuentes separadas del espacio de trabajo es, sí, una cuestión de preferencia , aunque se desprende de lo que Zoltán Ujhelyi ha escrito anteriormente que este enfoque podría tener algunas ventajas específicas para agrupar proyectos relacionados en una única carpeta para que puedan ser versionados dentro de un único repositorio de git. – Carl

+2

@Crowie eclipse workspace es principalmente para metadatos de Eclipse. Cuando cambia Eclipse o desea usar varias versiones de Eclipse en la misma máquina, desea importar su proyecto independientemente del Eclipse que realiza la importación: eso es más claro y sencillo si su proyecto tiene vida propia fuera de cualquier Eclipse. – VonC

2

creo, es una buena idea almacenar el árbol de versiones Git fuera del espacio de trabajo. De esta forma, es posible separar proyectos de diferentes repositorios, pero aún así manejarlos en el mismo espacio de trabajo.

Además, si coloca el código fuera del área de trabajo, puede organizar sus proyectos jerárquicamente fuera del área de trabajo (en la copia de trabajo), pero aún así ver la representación plana en Eclipse.

+0

Sí, esto parece muy razonable, ya que Eclipse se siente cómodo al tener sus proyectos fuera de su carpeta de espacio de trabajo. De modo que podría agrupar sus proyectos relacionados en una única carpeta, como se sugiere en la respuesta de leonbloy, solo que la carpeta estaría * fuera * de la jerarquía del espacio de trabajo, y los repositorios de git estarían fuera de cada carpeta. Aunque soy nuevo en git y en EGit, no estoy seguro de que EGit sea capaz de tratar con la fuente fuera del espacio de trabajo; tal vez su enfoque requiera el uso de la línea de comando regular git o una GUI construida sobre la parte superior de eso, y no EGit? – Carl

+0

Supongo que una alternativa podría ser permitir que solo los proyectos "relacionados" compartan un solo espacio de trabajo, y luego colocar su git repo fuera de la carpeta del espacio de trabajo de nivel superior. Pero eso podría ser inconvenientemente rígido, ya que uno podría querer tener proyectos de un tipo similar en el mismo espacio de trabajo para * referencia * fácil, incluso si no se desarrollasen juntos bajo un único repositorio de control de versiones. Entonces, tu sugerencia parece ser la más útil en general. – Carl

+0

En realidad, he encontrado la documentación que dice que puedes usar para este EGit aquí: http://wiki.eclipse.org/EGit/User_Guide#Creating_a_Git_Repository_for_multiple_Projects – Carl

Cuestiones relacionadas