Te posty wydają się powiązane, ale mój mózg zaczyna się topić, próbując to przemyśleć: P.
Mój pracodawca właśnie zaczął korzystać z kontroli źródła, przede wszystkim dlatego, że zanim zatrudnili więcej programistów, „repozytorium” było dyskiem twardym samotnego programisty, który pracuje głównie z domu. Cały napisany przez niego kod .NET został masowo sprawdzony i istnieje wiele zduplikowanych funkcji (czytaj: kopiuj-wklej). Obecnie nasz system SCM to gloryfikowana kopia zapasowa.
Chciałbym pobrać część powielonego kodu do bibliotek współdzielonych. Oryginalne repozytorium pozostawiam w spokoju, aby niczego nie zepsuć - możemy przesuwać i / lub refaktoryzować istniejący kod w razie potrzeby. Więc skonfigurowałem repozytorium tylko dla nowego kodu, w tym bibliotek.
Mój problem dotyczy wersjonowania bibliotek bez nadmiernego nakładania się na nas: przyznając, że potrzebujemy bardziej spójnego podejścia, z większą liczbą programistów piszących bardzo podobny kod, zarządzanie i inni deweloperzy są otwarci na reorganizację, ale prawdopodobnie nie będzie zejdź dobrze, jeśli rozwiązanie zacznie wpływać na wydajność.
Idealnym rozwiązaniem w moim obsesyjnym umyśle jest tworzenie bibliotek osobno, a każdy projekt zależny jest budowany na podstawie świadomie wybranych, zgodnych wersji. W ten sposób wiemy dokładnie, którzy klienci mają wersje, które biblioteki, mogą bardziej niezawodnie odtwarzać błędy, utrzymywać niezależne gałęzie wydań dla produktów i bibliotek oraz nie przerywać sobie nawzajem projektów podczas zmiany kodu współdzielonego.
To sprawia, że aktualizacja bibliotek jest uciążliwa, szczególnie dla programistów pracujących z domu. Oczekuję, że biblioteki szybko się zmienią, przynajmniej początkowo, gdy (w końcu) połączymy wspólne elementy. Całkiem możliwe, że całkowicie się nad tym zastanawiam i dobrze byłoby po prostu zbudować wszystko w oparciu o najnowsze zatwierdzenia biblioteki, ale chciałbym być przynajmniej przygotowany na dzień, w którym zdecydujemy, że niektóre komponenty muszą być niezależnie wersjonowane i Rozpowszechniane. Fakt, że niektóre biblioteki będą musiały być zainstalowane w GAC, sprawia, że wersja jest szczególnie ważna.
Więc moje pytanie brzmi: czego mi brakuje? Wydaje mi się, że skupiłem się na jednym rozwiązaniu i teraz próbuję znaleźć odmiany, które sprawią, że zmiany będą płynniejsze. Jakie strategie zastosowałeś wcześniej do rozwiązania tego rodzaju problemu? Zdaję sobie sprawę, że to pytanie jest wszędzie; Zrobię co w mojej mocy, aby oczyścić i wyjaśnić wszelkie wątpliwości.
I chociaż bardzo chciałbym korzystać z Mercurial, już wydaliśmy pieniądze na scentralizowany komercyjny SCM (Vault), a zmiana nie jest opcją. Poza tym myślę, że tutaj chodzi o coś głębszego niż wybór narzędzia kontroli wersji.