PyCharm / GitHub: gestión de los directorys de múltiples repositorys para el mismo proyecto

Antecedentes: actualmente estoy trabajando en un proyecto de bioinformática. Estoy usando PyCharm como un IDE y GitHub para el control de versiones. Me preguntaba sobre la estructura de mi proyecto …

Configuración: tenemos 2 repositorys:

  1. Un repository principal que alberga todos nuestros files y directorys
  2. Y luego tenemos un repository adicional que aloja nuestra aplicación / files / directores R-Shiny

El repository de GitHub para la aplicación R-shiny (2) es una image especular de uno de los directorys en el repository principal (1). Realizaremos un mantenimiento constante en la aplicación R-Shiny (de ahí el motivo de 2 repositorys).

Haré reference al proyecto PyCharm Y al repository GitHub como (1) y (2) de aquí en adelante.

Pregunta: ¿Cuál es la mejor manera de lidiar con esta situación?

1. En mi directory de proyecto principal (1) ¿es seguro crear un nuevo proyecto de PyCharm (2)?
Y luego empuje / tire el proyecto principal (1) + proyecto lateral (2) al repository principal del proyecto (1). Y luego empuje / tire el proyecto lateral (2) al repository de proyecto lateral (2)

2. Cree directorys separados para ambos proyectos PyCharm.
Tendría que copyr / pegar mis directorys desde (2) y pegarlos apropiadamente en (1).
Y luego empuje / tire el proyecto (1) y el proyecto (2) por separado.

3. ¿ O debería simplemente consolidar todo en un proyecto / repository, y luego crear una twig separada para la aplicación / directorys R-Shiny? No tengo idea si esto es posible o práctico.

4. Otros ..

Quiero encontrar una forma mejor / estándar / práctica para enfrentar esta situación. No soy un progtwigdor novato de ninguna manera. Pero me he enseñado mucho por ensayo y error, por lo que a veces mis methods son poco convencionales.

La forma correcta de manejar esto es con los submodules de Git, que le permiten include una reference a una confirmación específica de otro repository en el repository principal. Esto tiene el beneficio adicional de poder versionar sus dependencies: si actualiza algo en R-shiny, esos cambios no se propagan hasta que usted ingrese esos cambios manualmente y sepa que el código en el repository padre admite los cambios en el R -Maldita cosa. tl; dr: su configuration debe tener ambos como sus propios repositorys, con R-shiny incluido como un submodule del otro.

Vea mi respuesta aquí para una explicación más completa sobre cómo usar los submodules.

Ten cuidado: dices que es un proyecto de bioinformática, por lo que parece que las personas que necesitan poder ver tu código no necesariamente son los usuarios de Git más competentes, puede ser útil include scripts para que puedan moverse.

A menudo trabajo con proyectos en los que necesito hacer reference a otros treees de directorys que también son proyectos de PyCharm. Por lo general, solo agrego la reference como una Content Root . Abra el proyecto 1, luego vaya a Preferences > Project > Project Structure > Add Content Root y agregue la ruta al proyecto 2.

Ahora debería ver los proyectos 1 y 2 listdos en View > Tool Window > Project .

Excluya el subdirectory del proyecto 1 (haga clic con el button derecho en Mark Directory As > Excluded ), esto evitará que las classs, files y símbolos en esa location aparezcan como duplicates en las búsquedas Navigate .

PyCharm es inteligente sobre el seguimiento de múltiples repositorys git en el mismo proyecto, consulte Preferences > Version Control . Simplemente no andes git repos uno dentro del otro.

Para comparar los últimos cambios entre los proyectos 1 y 2, select las carpetas en la window de la herramienta de proyecto, haga clic con el button derecho y select Compare Directories .

Para mantener el proyecto 1 y 2 sincronizados, tienes un par de opciones

  • Use los submodules de git como lo sugiere la respuesta de @Pockets, tenga en count que los usuarios ocasionales de git pueden tener problemas con esta configuration. Si sigue esta ruta, no se aplican todos los pasos anteriores.

  • Mantenga el proyecto 1 y 2 en repositorys separados. No duplique el proyecto 2 dentro del proyecto 1. Agregue la ruta a la subcarpeta del proyecto 2 al .gitignore en el proyecto 1. Empuje desde la raíz del contenido del proyecto 2 y tire a la subcarpeta.

  • Duplicar files del proyecto 2 dentro de 1. Usar las Preferences > Build, Execution, Deployment > Deployment PyCharm Preferences > Build, Execution, Deployment > Deployment con Type > Local or mounted folder