Cómo hacer un proyecto de Eclipse separado de una subcarpeta bajo el control de fuente de Git

Tengo un proyecto de website con los files principales en una carpeta raíz y una herramienta de administración en una subcarpeta. La herramienta de administración incluye algunas classs de la carpeta raíz.

Me gustaría mantener el control de la versión por separado sobre el 'sitio' (raíz) y la 'herramienta de administración' (subcarpeta) con Git. Con Git ignorando la subcarpeta en la raíz y un repository separado en la subcarpeta, funciona bien.

Sin embargo, me gusta usar Eclipse (4.4.2) como mi GUI de Git, pero Eclipse maneja esto sobre una base de proyecto y cuando bash crear un proyecto nuevo en Eclipse de la subcarpeta, se queja de que esto no está permitido porque esa carpeta ya es parte de otro proyecto (carpeta raíz).

¿Hay alguna manera, al igual que en Git, de hacer que Eclipse ignore una subcarpeta en un proyecto para poder crear un proyecto separado de la subcarpeta? ¿O debería abordar todo el asunto de manera diferente?

La forma correcta y conveniente:

Puede hacer un submodule fuera de esa carpeta con el command git-subtree.

Después de crear un submodule, podrá administrar su proyecto como dos repositorys git, uno nested en otro. Eclipse debe comprender esta estructura y permitir realizar compromisos por separado. También podrá tener diferentes repositorys remotos para cada uno de sus subproyectos.

Aquí hay un buen manual sobre git-subtree: Separar (mover) el subdirectory en un repository separado de Git

La manera no tan correcta y conveniente.

Puede agregar esa subcarpeta en .gitignore de la carpeta principal y luego iniciar un nuevo repository dentro de ella.

Desafortunadamente, Eclipse no indica visualmente cambios por separado cuando se usan submodules y la administración de la carpeta raíz y la subcarpeta como proyectos separados en Eclipse me ayudan a mantener las cosas organizadas por separado. Es por eso que elegí .gitignore la subcarpeta en la carpeta raíz y creo un repository separado en la subcarpeta.

Traer esto a Eclipse fue una molestia porque hay algunos errores conocidos en Eclipse que (irónicamente) hacen que EGit ignore el file .gitignore. Esto hace que Eclipse insista en comprometer la carpeta .git que encuentra en la subcarpeta como un submodule, aunque debería ignorarla.

Ahora tengo todo configurado usando los siguientes pasos:

  1. creando un enlace simbólico (Windows) de la subcarpeta a una carpeta al lado de la carpeta raíz. Esto ayuda a eludir la restricción de Eclipse de crear proyectos en subcarpetas de carpetas que ya son un proyecto.
  2. crear los repos antes de agregar los proyectos a Eclipse; de ​​lo contrario, Eclipse no usará el file .gitignore. Incluso si usa EGit para crearlos.
  3. Escribir el file .gitignore con saltos de línea de estilo Unix , usando una barra inclinada para ignorar la / subcarpeta. Git maneja bien otros formattings, pero Eclipse no usará el .gitignore correctamente si no está exactamente escrito de esa manera.
  4. Para limpiar las cosas; ocultar la subcarpeta del proyecto 'sitio' (raíz) añadiendo un filter de recurso en el proyecto que oculta la subcarpeta del tree del proyecto. De esta forma, solo se puede acceder al file de la subcarpeta 'herramienta de administración' en Eclipse a través de su propio proyecto.

Ahora tengo dos proyectos separados en Eclipse con cada uno su propio repository Git, aunque técnicamente es una subcarpeta del otro. Escribí un tutorial de detalles sobre esto en este post sobre la administración de una subcarpeta como un proyecto en Eclipse, Git y FTP .