Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Poniższe szczegóły techniczne mogą pomóc w niezawodnym zaimplementowaniu wtyczki kontroli źródła w programie Visual Studio.
Problemy z zarządzaniem pamięcią
W większości przypadków zintegrowane środowisko projektowe (IDE), które jest obiektem wywołującym, zwalnia i przydziela pamięć. Wtyczka kontroli wersji zwraca ciągi i inne elementy w buforach przydzielonych przez wywołującego. Wyjątki są zanotowane w opisach określonych funkcji, w których występują.
Tablice nazw plików
Gdy przekazuje się tablicę plików, nie jest ona przekazywana jako ciągła przestrzeń nazw plików. Przekazywana jest jako tablica wskaźników do nazw plików. Na przykład w SccGet nazwy plików są przekazywane przez lpFileNames ten parametr, gdzie lpFileNames jest w rzeczywistości wskaźnikiem do char **.
lpFileNames[0] jest wskaźnikiem do imienia, lpFileNames[1] jest wskaźnikiem do drugiej nazwy itd.
Duży model
Wszystkie wskaźniki to 32 bity, nawet w 16-bitowych systemach operacyjnych.
W pełni kwalifikowane ścieżki
Jeśli nazwy plików lub katalogi są określane jako argumenty, muszą być w pełni kwalifikowane ścieżki lub ścieżki UNC bez końcowych ukośników odwrotnych. Obowiązkiem wtyczki kontroli źródła jest przetłumaczenie ich na ścieżki względne, jeśli jest to wymaganie podstawowego systemu kontroli źródła.
Określ w pełni kwalifikowaną ścieżkę dla zarejestrowanej biblioteki DLL
Środowisko IDE nie ładuje już bibliotek DLL ze ścieżek względnych (na przykład .\NewProvider.dll). Należy określić pełną ścieżkę biblioteki DLL (na przykład C:\Providers\NewProvider.dll). To wymaganie zwiększa bezpieczeństwo środowiska IDE, uniemożliwiając ładowanie nieautoryzowanych lub podszytych się bibliotek DLL systemu kontroli wersji.
Sprawdź istniejącą wtyczkę VSSCI podczas instalowania wtyczki kontroli źródła
Użytkownik, który planuje zainstalować wtyczkę kontroli źródła, może już mieć zainstalowaną wtyczkę kontroli źródła na komputerze. Program instalacyjny (instalacyjny) dla utworzonej wtyczki powinien określić, czy istnieją istniejące wartości dla odpowiednich kluczy rejestru. Jeśli te klucze są już ustawione, program instalacyjny powinien zapytać użytkownika, czy zarejestrować wtyczkę jako domyślną wtyczkę kontroli źródła i zastąpić ten, który jest już zainstalowany.
Kody wyników błędów i raportowanie
Kod SCC_OK powrotny funkcji kontroli źródła wskazuje, że operacja zakończyła się pomyślnie dla wszystkich plików. Jeśli operacja zakończy się niepowodzeniem, oczekuje się, że zostanie zwrócony ostatni kod błędu.
Regułą raportowania jest to, że jeśli wystąpi błąd w środowisku IDE, środowisko IDE jest odpowiedzialne za raportowanie go. Jeśli w systemie kontroli źródła wystąpi błąd, wtyczka kontroli źródła jest odpowiedzialna za raportowanie go. Na przykład, w środowisku IDE nie wybrano żadnych plików, natomiast przez wtyczkę jest zgłaszane, że ten plik został już wyewidencjonowany.
Struktura kontekstu
Podczas wywołania SccInitialize obiekt wywołujący przekazuje ppvContext parametr, który jest niezainicjowanym dojściem do typu void. Wtyczka kontroli źródła może zignorować ten parametr lub może przydzielić strukturę dowolnego rodzaju i umieścić wskaźnik do tej struktury w przekazanym wskaźniku. Środowisko IDE nie rozumie tej struktury, ale przekazuje wskaźnik do tej struktury przy każdym innym wywołaniu plug-inu. Zapewnia cenne informacje o pamięci podręcznej kontekstu wtyczce, które może ona wykorzystać do utrzymania informacji o stanie globalnym, które są zapisywane pomiędzy wywołaniami funkcji bez potrzeby używania zmiennych globalnych. Wtyczka jest odpowiedzialna za zwolnienie struktury przy wywołaniu interfejsu SccUninitialize.
Jeśli wtyczka ustawia bit SCC_CAP_REENTRANT w SccInitialize (w szczególności w parametrze lpSccCaps ), do monitorowania wszystkich otwartych projektów są używane wiele struktur kontekstowych.
Bitflags i inne opcje poleceń
Dla każdego polecenia, takiego jak SccGet, środowisko IDE może określić wiele opcji, które zmieniają zachowanie polecenia.
Interfejs API obsługuje ustawienie niektórych opcji przez środowisko IDE za pomocą parametru fOptions . Te opcje są opisane w bitflagi używane przez określone polecenia wraz z poleceniami, na które wpływają. Ogólnie rzecz biorąc, są to opcje, dla których użytkownik nie będzie monitowany.
Większość opcji ustawień konfigurowalnych przez użytkownika nie jest definiowana w ten sposób, ponieważ różnią się one znacznie między wtyczkami kontroli źródła. W związku z tym zalecany mechanizm jest przyciskiem Zaawansowane . Na przykład w oknie dialogowym Pobieranie środowisko IDE wyświetla tylko informacje, które rozumie, ale wyświetla również przycisk Zaawansowane , jeśli wtyczka ma opcje dla tego polecenia. Gdy użytkownik kliknie przycisk Zaawansowane, środowisko IDE wywołuje polecenie SccGetCommandOptions, aby umożliwić wtyczce kontroli źródła wyświetlenie użytkownikowi monitu o informacje, takie jak bitflagi lub data/godzina. Wtyczka zwraca te informacje w formie struktury, która jest zwracana z powrotem w ramach polecenia SccGet.