Biblioteca compartida en repository con visual studio

Soy nuevo en el control de versiones de Git. Solo quiero que cada proyecto tenga su propio repository.

yo creé

  1. Un proyecto (Lib compartido) en RepoA
  2. B Project (Shanetworking Lib) en RepoB que tiene un subtree de A
  3. C Project (Shanetworking Lib) en RepoC que tiene un subtree de A
  4. D Project (Aplicación de console) en RepoD que tiene un subtree de B y C

la estructura de la carpeta es como a continuación.

re

-SEGUNDO

–UN

-DO

–UN

Como puede ver, una carpeta está duplicada, y no puedo agregar el mismo proyecto dos veces en Visual Studio.

Si agrego un proyecto en la carpeta B, se produce el error de compilation.

No se pudo encontrar el proyecto de file de metadatos C ….. 'A.dll' Dado que un proyecto en la carpeta C, nunca se ha comstackdo, falta A.dll.

Si el proyecto A en C se comstack una vez, funciona bien (abriendo O bien C.sln o A.sln en el proyecto C) Por supuesto, habría A.dll,

pero la próxima vez que otra persona descargue el proyecto D de git, él / ella debe comstackr C o A en el proyecto C antes de comstackr el proyecto D.

Alguien tiene una buena solución para esto?

Puedes intentar leer acerca de los submodules.

Submodules permiten que los repositorys extranjeros se Submodules dentro de un subdirectory dedicado del tree fuente, siempre apuntando a una confirmación particular.


git submodule

Divida su gran proyecto en sub proyectos como lo hizo hasta ahora.
Ahora agregue cada proyecto secundario a su proyecto principal usando:

 git submodule add <url> 

Una vez que lo proyectado se agrega a su repository, debe iniciarlo y actualizarlo.

 git submodule init git submodule update 

A partir de Git 1.8.2 nueva opción --remote fue agregado

 git submodule update --remote --merge 

obtendrá los últimos cambios de la stream ascendente en cada submodule, los merge them in y check out la última revisión del submodule.

Como los documentos lo describen:

--remote

Esta opción solo es válida para el command de actualización. En lugar de usar el SHA-1 grabado del superproyecto para actualizar el submodule, use el estado de la twig de seguimiento remoto del submodule.

Esto es equivalente a ejecutar git pull en cada submodule.


Sin embargo, ¿cómo presionaría una confirmación en el escenario de corrección de errores en C que afecta el código compartido con las capas padre?

De nuevo: al usar el submodule, colocarás tu código dentro de tu proyecto principal como parte de su contenido. La diferencia entre tenerlo localmente dentro de la carpeta o tenerlo como parte de un submodule es que en el submodule el contenido se gestiona (confirma) en un repository independiente diferente.


Esta es una ilustración del submodule: proyecto dentro de otro proyecto en el que cada proyecto es independiente.

enter image description here


git subtree

El subtree de Git le permite insert cualquier repository como un subdirectory de otro

Muy similar al submodule pero la principal diferencia es donde se administra su código. En los submodules, el contenido se coloca dentro de un repository separado y se gestiona allí, lo que le permite clonarlo a muchos otros repositorys también.

subtree es administrar el contenido como parte del proyecto raíz y no en un proyecto separado.

En lugar de anotar cómo configurarlo y comprender cómo usarlo, simplemente puede leer esta excelente publicación que lo explicará todo.

https://developer.atlassian.com/blog/2015/05/the-power-of-git-subtree/