Manuals

Dołączanie wspólnego podprojektu

Niekiedy potrzeba zawrzeć inny projekt w kopii roboczej, może tu chodzi o kod biblioteki. Mamy co najmniej 4 sposoby poradzenia sobie z tym.

Użycie svn:externals

Ustawcie atrybut svn:externals dla folderu w projekcie. Ten atrybut składa się z jednej lub więcej linii, każda linia zawiera nazwę podfolderu, którego chcecie użyć jako folderu pobrania dla wspólnego kodu oraz adres URL repozytorium, z którego mają być robione pobrania. Aby uzyskać szczegółowe informacje sprawdźcie „Elementy zewnętrzne”.

Zatwierdźcie nowy folder. Teraz po aktualizacji, Subversion będzie zaczytywać kopię tego projektu z jego repozytorium do kopii roboczej. Podfoldery będą w razie potrzeby tworzone automatycznie. Podczas każdej aktualizacji podstawowej kopii roboczej, otrzymacie również najnowsze wersje wszystkich zewnętrznych projektów.

Jeśli zewnętrzny projekt leży w tym samym repozytorium, wszelkie zmiany w nim wprowadzone będą włączone do listy zatwierdzenia, jeśli użytkownik zatwierdza główny projekt.

Jeśli zewnętrzny projekt znajduje się w innym repozytorium, wszelkie zmiany wprowadzone do zewnętrznego projektu zostaną pokazane lub oznaczone podczas zatwierdzenia głównego projektu, jednak wymagane jest osobne zatwierdzenie tych zewnętrznych zmian.

Z trzech opisanych metod, ta jest jedyną, która nie wymaga instalacji po stronie klienta. Po określeniu zewnętrznych we właściwości folderu, wszystkie klienty dostaną zapełnione foldery podczas aktualizacji.

Użycie zagnieżdżonej kopii roboczej

Utwórzcie nowy folder w ramach projektu aby zawierał wspólny kod, ale nie dodawajcie go do Subversion.

Wybierzcie TortoiseSVNPobierz dla nowego folderu i pobierzcie do niego kopię wspólnego kodu. Teraz macie oddzielną kopię roboczą zagnieżdżoną w głównej kopii roboczej.

Dwie kopie robocze są niezależne. Kiedy dokonujecie zmian w rodzicu, zmiany zagnieżdżonej KR są ignorowane. Podobnie po aktualizacji rodzica, zagnieżdżona KR nie jest aktualizowana.

Użycie względnego położenia

Jeśli używacie tego samego wspólnego jądra kodu w kilku projektach, a nie chcecie przechowywać wielu kopii roboczych to dla każdego projektu, który go używa, wystarczy je pobrać w innym miejscu, które jest powiązane z wszystkimi innymi projektami, które z niego korzystają. Na przykład:

C:\Projects\Proj1
C:\Projects\Proj2
C:\Projects\Proj3
C:\Projects\Common

i odnosić się do wspólnego kodu przy użyciu ścieżki względnej, np. ..\..\Common\DSPcore.

Jeśli projekty są rozproszone w niezależnych miejscach można użyć wariantu, polegającego na umieszczeniu wspólnego kodu w jednym miejscu, wykonaniu substytucji napędu dla tej lokalizacji, by otrzymać literę dysku do wpisania na sztywno w kodzie projektów, np. Pobierzcie wspólny kod do D:\Documents\Framework lub C:\Documents and Settings\{login}\My Documents\framework następnie wykonajcie

SUBST X: "D:\Documents\framework"

aby utworzyć mapowanie dysku używanego w kodzie źródłowym. Wasz kod może wtedy użyć absolutnej lokalizacji.

#include "X:\superio\superio.h"

Ta metoda działa tylko w środowisku wszystkich PC, i trzeba będzie udokumentować wymagane mapowania dysków tak, by wasz zespół wiedział, gdzie znajdują się te tajemnicze pliki. Metoda ta jest do zastosowania wyłącznie w zamkniętych środowiskach programistycznych, i nie zalecana do ogólnego użytku.

Dodanie projektu do repozytorium

Prawdopodobnie najprostszym sposobem jest dodanie projektu w podfolderze własnego projektu w kopii roboczej. Jednak ma to taką wadę, że trzeba aktualizować i uzupełniać ten projekt zewnętrzny ręcznie.

Aby pomuc w aktualizacji, TortoiseSVN posiada polecenie w menu kontekstowym przesunięcia prawym klawiszem. PO prostu przesuń prawym przyciskiem myszy folder z rozpakowaną nową wersją biblioteki zewnętrznej do katalogu w kopii roboczej, a następnie wybierz Menu KontekstoweTu GałąźDostawcy SVN. Spowoduje to skopiowanie nowych plików do folderu docelowego automatycznie dodając nowe pliki i usuwając pliki nie występujące już w nowej wersji.

TortoiseSVN homepage