Plugin-arkitektur för källkontroll

Du kan lägga till stöd för källkontroll i Visual Studio Integrated Development Environment (IDE) genom att implementera och ansluta ett plugin-program för källkontroll. IDE ansluter till källkontroll-plug-in via det väldefinierade källkontroll-plug-in-API. IDE exponerar versionskontrollfunktionerna i källkontrollsystemet genom att tillhandahålla ett användargränssnitt (UI) som består av verktygsfält och menykommandon. Plugin-programmet för källkontroll implementerar källkontrollfunktionen.

Plugin-resurser för källkontroll

Plugin-programmet för källkontroll innehåller resurser som hjälper dig att skapa och ansluta versionsprogrammet till Visual Studio IDE. Plugin-programmet för källkontroll innehåller API-specifikationen som måste implementeras av ett plugin-program för källkontroll så att det kan integreras i Visual Studio IDE. Den innehåller också ett kodexempel (skrivet i C++) som implementerar ett skelett-plugin för källkontroll som demonstrerar implementeringen av viktiga funktioner som är kompatibla med källkontroll-pluginens API.

Med api-specifikationen för plugin-programmet för källkontroll kan du använda valfritt källkontrollsystem om du skapar en källkontroll-DLL med den nödvändiga uppsättningen funktioner som implementerats i enlighet med plugin-api:et för källkontroll.

Components

Paketet för källkontrolladapter i diagrammet är komponenten i den IDE:n som översätter användarens begäran om en källkontrollåtgärd till ett funktionsanrop som stöds av insticksprogrammet för källkontroll. För att detta ska hända måste plugin-programmet för IDE och källkontroll ha en effektiv dialogruta som skickar information fram och tillbaka mellan IDE och plugin-programmet. För att den här dialogrutan ska äga rum måste båda tala samma språk. Plugin-API:et för källkontroll som beskrivs i den här dokumentationen är det vanliga vokabuläret för det här utbytet.

Arkitekturdiagram för källkodskontroll

Arkitekturdiagram som visar interaktion mellan VS och plugin-programmet för källkontroll

Som du ser i arkitekturdiagrammet är Visual Studio-gränssnittet, märkt som VS Shell i diagrammet, värd för användarens arbetsprojekt och associerade komponenter, till exempel redigeringsprogram och Solution Explorer. Paketet för källkontrolladapter hanterar interaktionen mellan IDE och plugin-programmet för källkontroll. Adapterpaket för versionskontroll har ett eget användargränssnitt för versionskontroll. Det är användargränssnittet på den översta nivån som användaren interagerar med för att initiera och definiera omfattningen för en källkontrollåtgärd.

Plugin-programmet för källkontroll kan ha ett eget användargränssnitt, som kan bestå av två delar enligt bilden. Rutan med etiketten "Leverantörsgränssnitt" representerar anpassade användargränssnittselement som du, som skapare av ett plugin-program för källkontroll, anger. Dessa visas direkt av plugin-programmet för källkontroll när användaren anropar en avancerad källkontrollåtgärd. Rutan med etiketten "Helper UI" är en uppsättning källkontroll-plugin-funktioner som anropas indirekt via IDE. Plugin-programmet för källkontroll skickar användargränssnittsrelaterade meddelanden till IDE via särskilda återanropsfunktioner som tillhandahålls av IDE. Hjälpgränssnittet underlättar en smidigare integrering med IDE (ofta med hjälp av en avancerad knapp) och ger därmed en mer enhetlig slutanvändarupplevelse.

Ett plugin-program för källkontroll kan inte göra ändringar i Visual Studio-skalet och följaktligen inte heller i antingen adapterpaket för källkontroll eller det källkontrollgränssnitt som IDE:en tillhandahåller. Den måste använda den flexibilitet som erbjuds genom implementeringen av de olika API-funktionerna för plugin-programmet för källkontroll som bidrar till en integrerad upplevelse för slutanvändaren. Referensavsnittet i dokumentationen för plugin-programmet för källkontroll innehåller information om vissa avancerade plugin-funktioner för källkontroll. För att utnyttja de här funktionerna måste plugin-programmet för källkontroll deklarera sina avancerade funktioner för IDE under initieringen, och det måste implementera specifika avancerade funktioner för varje funktion.