Dela via


Metodtips för att implementera ett plugin-program för källkontroll

Följande tekniska information kan hjälpa dig att på ett tillförlitligt sätt implementera ett plugin-program för källkontroll i Visual Studio.

Problem med minneshantering

I de flesta fall släpper och allokerar den integrerade utvecklingsmiljön (IDE), som är anroparen, minne. Plugin-programmet för källkontroll returnerar strängar och andra objekt i anroparallokerade buffertar. Undantag anges i beskrivningar av specifika funktioner där de inträffar.

Matriser med filnamn

När en matris med filer skickas skickas den inte som en sammanhängande matris med filnamn. Den skickas som en matris med pekare till filnamn. I SccGet skickas till exempel filnamnen genom parametern lpFileNames, där lpFileNames faktiskt är en pekare till en char **. lpFileNames[0] är en pekare till förnamnet, lpFileNames[1] är en pekare till det andra namnet och så vidare.

Stor modell

Alla pekare är 32 bitar, även på 16-bitars operativsystem.

Fullständigt kvalificerade sökvägar

Om filnamn eller kataloger anges som argument måste de vara fullständigt kvalificerade sökvägar eller UNC-sökvägar, utan avslutande omvänt snedstreck. Det är källkontrollpluginets ansvar att översätta dem till relativa sökvägar om det är ett krav för det bakomliggande källkontrollsystemet.

Ange en fullständigt kvalificerad sökväg för den registrerade DLL:en

IDE läser inte längre in DLL:er från relativa sökvägar (till exempel .\NewProvider.dll). En fullständig sökväg för DLL:en måste anges (till exempel C:\Providers\NewProvider.dll). Det här kravet stärker säkerheten för IDE genom att förhindra inläsning av obehöriga eller personifierade DLL:er för källkontroll.

Sök efter ett befintligt VSSCI-plugin-program när du installerar plugin-programmet för källkontroll

En användare som planerar att installera plugin-programmet för källkontroll kanske redan har ett befintligt plugin-program för källkontroll installerat på datorn. Installationsprogrammet (installationsprogrammet) för plugin-programmet som du skapar bör avgöra om det finns befintliga värden för relevanta registernycklar. Om dessa nycklar redan har angetts bör installationsprogrammet fråga användaren om du vill registrera plugin-programmet som standard plugin-program för källkontroll och ersätta det som redan är installerat.

Felresultatkoder och rapportering

Returkoden SCC_OK för en källkontrollfunktion anger att åtgärden har slutförts för alla filer. Om åtgärden misslyckas förväntas den senaste felkoden returneras.

Regeln för rapportering är att om ett fel inträffar i IDE ansvarar IDE för att rapportera det. Om ett fel uppstår i källkontrollsystemet ansvarar plugin-programmet för källkontroll för att rapportera det. Till exempel rapporteras inga filer är för närvarande valda av IDEn, medan Den här filen är redan utcheckad skulle rapporteras av plugin-programmet.

Kontextstrukturen

Under anropet till SccInitialize skickar anroparen parametern ppvContext , som är ett onitialiserat handtag till ett tomrum. Plugin-programmet för källkontroll kan ignorera den här parametern eller allokera en struktur av något slag och placera en pekare till den strukturen i den skickade pekaren. IDE:n förstår inte den här strukturen, men den skickar en pekare till den här strukturen i alla andra anrop i plugin-programmet. Detta ger värdefull kontextcacheinformation till plugin-programmet som det kan använda för att underhålla global tillståndsinformation som bevaras mellan funktionsanrop utan att använda globala variabler. Plugin-programmet ansvarar för att frigöra strukturen vid ett anrop till SccUninitialize.

Om plugin-programmet anger biten SCC_CAP_REENTRANT i SccInitialize (specifikt i parametern lpSccCaps ) används flera kontextstrukturer för att spåra alla projekt som är öppna.

Bitflags och andra kommandoalternativ

För varje kommando, till exempel SccGet, kan IDE ange många alternativ som ändrar kommandots beteende.

API:et stöder inställningen av vissa alternativ av IDE via parametern fOptions . De här alternativen beskrivs i Bitflags som används av specifika kommandon tillsammans med de kommandon som de påverkar. I allmänhet är det här alternativ som användaren inte uppmanas till.

De flesta alternativ för användarkonfigurerbara inställningar definieras inte på det här sättet, eftersom de varierar kraftigt mellan plugin-program för källkontroll. Därför är den rekommenderade mekanismen en avancerad knapp. I dialogrutan Hämta visar till exempel IDE endast information som den förstår, men den visar också en avancerad knapp om plugin-programmet har alternativ för det här kommandot. När användaren klickar på knappen Avancerat anropar IDE SccGetCommandOptions för att aktivera plugin-programmet för källkontroll för att fråga användaren om information, till exempel bitflags eller datum/tid. Plugin-programmet returnerar den här informationen i en struktur som skickas tillbaka under SccGet kommandot .