Repositorio de GitHub y estructuras de desarrollo local

Primero, todos nuestros proyectos son proyectos .Net C #.

Necesito algunos consejos sobre la mejor forma de configurar mis estructuras locales y repositorias.

Tenemos un proyecto principal que sirve como la biblioteca central que utilizan todos nuestros proyectos. No necesariamente quiero tener un repository con múltiples proyectos, pero sí quiero que mis otros proyectos tengan acceso al proyecto de la biblioteca principal. Me gustaría tener cada proyecto en su propio repository para fines de organización.

Tengo una idea de lo que debería hacer en mi sistema local para que esto ocurra, pero quería get las opiniones de las comunidades antes de comenzar a configurar mis proyectos.

Actualizar

Tan similar a lo que Bradley sugirió que fui con una estructura similar a esta:

All Projects Folder Core Project Another Project Yet another Project 

Usando GitHub para Windows puede usar la function Clone To para colocar sus repositorys locales en la carpeta principal de proyectos. Por lo tanto, en este ejemplo, seleccionaría el repository remoto de GitHub para Windows, haga clic derecho en el repository remoto que desea clonar y select Clonar. Seleccionaría la carpeta "Todos los proyectos" para colocar mi código. Esto creará la estructura de la carpeta y el proyecto para usted. Luego, otros proyectos pueden referirse entre ellos utilizando las routes relativas dentro de esa estructura. Descubrí que también usar Git Source Provider para Visual Studio 2012 ayuda a ver todos los cambios pendientes entre proyectos.

Suponiendo que vas a dividir tu código en varios repositorys, una forma de include un repository como dependencia de otro es usar submodules de git .

Personalmente, he encontrado que los submodules son un poco difíciles de usar en el día a día. (Por ejemplo, git checkout no actualiza los submodules automáticamente al cambiar de twig, muy a menudo, los desarrolladores involuntariamente han revertido un submodule al olvidarse de git submodule update antes de agregar todo, etc.)

Como resultado, preferimos un enfoque de "convención sobre configuration" y simplemente clonamos todos los repositorys necesarios como hermanos entre sí. Al realizar cambios en dos repositorys, simplemente se compromete y presiona ambos repositorys, y asume que otros desarrolladores están rastreando la twig master en ambos repositorys y extraerán ambos a la vez.

Es fácil escribir un script bash o un file por lotes que lo configurará en una máquina nueva o actualizará todos los repos a la vez en una máquina existente.

Para ver ejemplos más detallados, consulte mi publicación Compartir blog de proyectos en el proyecto .

Puede create and publish a NuGet package partir de este proyecto principal y luego tener los otros proyectos simplemente instale este NuGet. De esta manera, otras personas también podrían consumir este NuGet común en sus aplicaciones.