2015-02-23 12 views
8

Mam projekt Git. Nazwijmy to Proj.Ponownie użyj submodule modułu Git

Proj ma dwa submoduły, Lib i Utils.

Lib również posiada moduł submodulny Utils.

Problem polega na tym, że gdy ktoś chce git clone --recursive Proj, musi dwukrotnie pobrać Utils. Kiedy projekt pogłębia się, sytuacja może być gorsza.

Jak mogę zatem dokonać Proj ponownego użycia Utils już pobranego przez Lib?

Moje drzewo robocze:

Proj      # Main project 
+-- .git 
`-- external 
    +-- Lib    # Proj depends on Lib 
    | +-- .git 
    | `-- external 
    |  `-- Utils  # Lib depends on Utils 
    |   `-- .git 
    `-- Utils    # Proj also depends on Utils 
     `-- .git 

Uwaga:

  1. to lepiej, że Utils pobyty w external/Utils.

  2. Z powodu kompatybilności z Windows, dowiązania symboliczne są niedozwolone.

Doceniam to, jeśli ktoś może mi pomóc w tak skomplikowanym pytaniu.

+2

Może lepiej byłoby użyć jakiegoś narzędzia do zarządzania zależnościami. Nie wiemy, jakiej technologii używasz, ale narzędzia takie jak Maven lub npm zostały stworzone do takich rzeczy. Nie widzę ogromnej korzyści w korzystaniu z submodułów Git - tylko przeszkadzają. – nwinkler

+0

Używam CMake dla projektu C++. 'Utils' to niektóre wspólne pliki nagłówkowe. Czy przeniesienie się do Maven będzie wielkim bólem? @nwinkler –

+2

Maven jest przeznaczony głównie do projektów Java, nie pomoże ci w projekcie C++. Oto kilka linków do podobnych dyskusji: http://stackoverflow.com/questions/1827705/c-buildsystem-with-ability-to-compile-dependencies-beforehand i http://www.reddit.com/r/cpp/ comments/2eiulw/dependency_manager_for_ccmake_projects/ – nwinkler

Odpowiedz

0

Jak już wspomniano w tym miłym programmers-stackexchange-post, jedynym sposobem na pobranie pliku dwa razy, jest tworzenie dowiązań symbolicznych do pierwszego wystąpienia modułu git-module.

Powiązane problemy