Rozglądam się za zewnętrznymi elementami svn dla mojej firmy i wydaje się, że byłoby to dla nas dobrą cechą. Mamy kilka produktów, które często odwołują się do współdzielonych komponentów, ale mają zły nawyk polegania na starszych wersjach, a nawet na rozgałęzionych bazach kodu.Pomoc w zrozumieniu SVN Externals
Przeczytałem przyzwoity kawałek o tym, jak działają teraz i myślę, że rozumiem koncepcję OK. Nie jestem w 100% pewien, w jaki sposób różne wersje wielu repozytoriów łączą się ze sobą.
Załóżmy, że mam produkt i bibliotekę. Produkt jest budowany przeciwko bibliotece, więc jego repozytorium ma właściwość svn: externals, która łączy się ze źródłem biblioteki. W przypadku braku konkretnej wersji w definicji svn: externals, gdy sprawdzę HEAD produktu, otrzymuję również HEAD of Library.
Zbudowuję kilka wersji produktu na przestrzeni lat, za każdym razem odwołując się do najnowszej wersji Biblioteki. Pewnego dnia jednak muszę wrócić i sprawdzić wersję 1 produktu, ręcznie wybierając poprawną wersję. Kiedy to zrobię, jaką wersję biblioteki otrzymam, HEAD lub wersję, której użyłem, kiedy ją zbudowałem za pierwszym razem?
Mam nadzieję, że byłem dobrym programistą i zapamiętałem, aby otagować każdą wersję produktu, którą wypuszczam. Kiedy zastosuję mój tag "Product-1-0-0" do repozytorium, czy poprawiona wersja repozytorium biblioteki również zostanie oznaczona tagami? Jeśli później wypróbuję produkt oparty na tagu "Produkt-1-0-0", czy poprawiona wersja biblioteki zostanie z nim wyewidencjonowana?
Dla svn: externals, powinieneś prawie zawsze ustawiać swoje obroty. W przeciwnym razie, jeśli zmienisz coś w rzeczach przywoływanych zewnętrznie, nie możesz przywrócić projektu do poprzedniego stanu. Ryzykujesz też łamaniem rzeczy, nie wiedząc o tym. Zobacz http://tortoisesvn.net/docs/nightly/TortoiseSVN_en/tsvn-dug-externals.html, "Użyj wyraźnych numerów wersji". –