Opracowujemy Visual Studio 2010 (w języku C#) i migrujemy jakiś czas temu z SVN do GIT. Teraz próbujemy podzielić nasze repozytorium (które jest dość duże - ~ 30 000 plików) na wiele repozytoriów git - po jednym dla każdego rozwiązania. Rozwiązania dzielą niektóre projekty, głównie biblioteki, które tworzymy w firmie i lubimy dodawać do nich wszystkie rozwiązania.Jak radzić sobie z Submodules Git w Visual Studio rozwiązań o innym układzie?
Nowe repozytoria mają płaski układ. Jeden podkatalog dla każdego projektu (wspólne projekty to podmoduły). W dużym starym repo, projekty są w strukturze drzewa.
Problem występuje z odniesieniami zewnętrznymi w submodułach. W nowych reposach ścieżką do odniesienia może być "...... libs \ someproject", podczas gdy w nowym layoucie właściwą ścieżką będzie ".. \ someproject".
Mieliśmy już kilka wojen edycyjnych w tej sprawie i nie chcemy więcej.
połowiczne rozwiązania mogłem pomyśleć:
użytku „Reference” Ścieżki w ... csproj.user i uwzględniają ten plik z kontroli wersji (musi być przerobione dla każdego dewelopera i po każdym porządki reopsitory)
użytku oddziałów dla każdej sytuacji i starają się uczyć wszyscy, gdzie „prawdziwe” commity powinien iść i gdzie „zmiana środowiska” commity powinien iść (submoduły nie są już najprostsze pojęcia ...)
osadzonych binariów zamiast submodułów (ale co z rozwojem zmian w submodułach? co z różnymi wersjami log4net?)
Czy ktoś wie o rozsądnym rozwiązaniu?
Sądzę, że sugerujesz przejście od włączenia źródła do włączenia biblioteki DLL z rozsądnym zarządzaniem zależnościami. Jeśli tak, to brzmi kusząco, ale teraz opracowujemy wspólne biblioteki jako część obejmujących rozwiązań. Wydaje się dość ciężki sposób, aby rozwiązać problem. – plaugg
Jeśli, jak rozumiem, są to oddzielne projekty VS, nie powinno to stanowić problemu pod względem wykonalności, ale w rzeczywistości nie jest to szybkie hackowanie, którego możesz szukać ... Jeśli martwisz się debugowaniem, to obsługuje nuget łączenie z serwerem źródłowym symboli w celu utrzymania doświadczenia debugowania, ale jeśli istnieje wiele zmian między głównym i pomocniczym projektem, może to stanowić problem. Jestem trochę niezdecydowany w.r.t. brak elegancji submodułów git i chciałem zaproponować alternatywę, której nie wymieniłeś (i która obsługuje wersjonowanie!). – Dirk
Jestem trochę smutny, że ta opcja nie była dostępna, gdy nadal pracowałem z .NET jako zespołem. Visual Studio jest notorycznie głupie, jeśli chodzi o zależności. Takie podejście ma wiele zalet. Najważniejsze dla mnie jest jednak to, że z perspektywy programistów projekty staną się szybsze w konfiguracji, kompilacji i programowaniu. Kiedy sprawdzam nowy projekt, po prostu pobieram wszystkie potrzebne biblioteki i muszę po prostu skompilować biblioteki projektu, aby go uruchomić. Nie tylko to, ale zniknęło, jest zagraceniem tych podprojektów, które znacznie ułatwiają zrozumienie projektów. – SpoBo