Konfigurationsinformation för källkontroll

För att implementera källkontroll måste du konfigurera projektsystemet eller redigeraren korrekt för att göra följande:

  • Begär behörighet att övergå till ändrat tillstånd

  • Begär behörighet att spara en fil

  • Begär behörighet att lägga till, ta bort eller byta namn på filer i projektet

Begär behörighet att övergå till ändrat tillstånd

Ett projekt eller en redigerare måste begära behörighet att övergå till det ändrade tillståndet (smutsigt) genom att anropa IVsQueryEditQuerySave2. Varje redigerare som implementerar IsDocDataDirty måste anropa QueryEditFiles och ta emot godkännande för att ändra dokumentet från miljön innan det returneras True för IsDocDataDirty. Ett projekt är i princip en redigerare för en projektfil och har därför samma ansvar för att implementera spårning av ändrade tillstånd för projektfilen som en textredigerare gör för sina filer. Miljön hanterar lösningens ändrade tillstånd, men du måste hantera det ändrade tillståndet för alla objekt som lösningen refererar till men inte lagrar, till exempel en projektfil eller dess objekt. I allmänhet, om ditt projekt eller din redigerare ansvarar för hantering av beständighet för ett objekt är det också ansvarigt för att implementera spårning av ändrat tillstånd.

Som svar på anropet IVsQueryEditQuerySave2::QueryEditFiles kan miljön göra följande:

  • Avvisa anropet för att ändra, i vilket fall redigeraren eller projektet måste förbli i oförändrat (rent) tillstånd.

  • Ange att dokumentdata ska läsas in igen. För ett projekt läser miljön in data för projektet igen. En redigerare måste läsa in data från disken igen genom implementeringen ReloadDocData . I båda fallen kan kontexten i projektet eller redigeraren ändras när data laddas in igen.

    Det är en komplex och svår uppgift att eftermontera lämpliga IVsQueryEditQuerySave2::QueryEditFiles anrop till en befintlig kodbas. Därför bör dessa funktioner integreras när projektet eller redigeraren skapas.

Begär behörighet att spara en fil

Innan ett projekt eller en redigerare sparar en fil måste den anropa QuerySaveFile eller QuerySaveFiles. För projektfiler slutförs dessa anrop automatiskt av lösningen, som vet när en projektfil ska sparas. Redigerare ansvarar för att göra dessa anrop om inte redigeringsprogrammets implementering av IVsPersistDocData2 använder hjälpfunktionen SaveDocDataToFile. Om ditt redigeringsprogram implementerar IVsPersistDocData2 på det här sättet, görs anropet till IVsQueryEditQuerySave2::QuerySaveFile eller IVsQueryEditQuerySave2::QuerySaveFiles automatiskt för dig.

Anmärkning

Gör alltid dessa anrop förebyggande, det vill säga vid en tidpunkt då redigeraren kan ta emot ett avbokningssamtal.

Begär behörighet att lägga till, ta bort eller byta namn på filer i projektet

Innan ett projekt kan lägga till, byta namn på eller ta bort en fil eller katalog måste det anropa lämplig IVsTrackProjectDocuments2::OnQuery* metod för att begära behörighet från miljön. Om behörighet beviljas måste projektet slutföra åtgärden och sedan anropa lämplig IVsTrackProjectDocuments2::OnAfter* metod för att meddela miljön att åtgärden är klar. Projektet måste anropa metoderna i IVsTrackProjectDocuments2 gränssnittet för alla filer (till exempel särskilda filer) och inte bara de överordnade filerna. Filanrop är obligatoriska, men kataloganrop är valfria. Om ditt projekt har kataloginformation bör det anropa lämpliga IVsTrackProjectDocuments2 metoder, men om det inte har den här informationen kommer miljön att härleda kataloginformation.

Projektet bör inte anropa IVsTrackProjectDocuments2:s metoder vid projektets öppning eller stängning. Lyssnare som vill ha den här informationen vid uppstart kan vänta på OnAfterOpenSolution-händelsen och iterera genom lösningen för att hitta den information de behöver. Vid avstängning behövs inte den här informationen. IVsTrackProjectDocuments2 tillhandahålls från SVsTrackProjectDocuments.

För varje åtgärd för att lägga till, byta namn på och ta bort finns det en OnQuery* metod och en OnAfter* metod. OnQuery* Anropa metoden för att be om behörighet att lägga till, byta namn på eller ta bort filen eller katalogen. OnAfter* Anropa metoden när filen eller katalogen har lagts till, bytt namn eller tagits bort och projekttillståndet återspeglar det nya tillståndet.