Så här visar du automatiskt SVN-revisionen i din LabVIEW EXE

Av Henrik Hjorth

Ett vanligt sätt att få ett nytt versionsnummer när man bygger en applikation är att använda funktionen "auto-increment version on build" som finns tillgänglig i en LabVIEW-byggspecifikation. På så sätt får du en annan version än den tidigare versionen, men nackdelen är att det inte finns någon direkt länk mellan versionsnumret och versionshanteringssystemet (förutsatt att ett källhanteringssystem används).

En annan metod är att inkludera ett revisionsnummer från källkontrollen, och om du till exempel använder SVN kan den här processen automatiseras i byggprocessen. Genom att använda SVN-revisionsnumret blir det lättare att spåra den faktiska källan till en viss build.

Det första steget är att se till att alla filer som byggs in i applikationen finns i versionskontrollen; en fil som inte är känd i källkontrollen kommer naturligtvis aldrig att tilldelas en revision av det systemet.

Det andra steget är att aktivera åtgärden före byggandet. Öppna byggspecifikationen i projektet, välj fliken Pre/Post Build Action och aktivera Execute VI before build. Genom att generera ett VI skapas ett tomt VI med en definierad uppsättning ingångar.

I åtgärden före byggandet lägger vi till lite kod för att hämta SVN-revisionsnumret för det projekt som byggs och sedan uppdatera byggversionen i byggspecifikationen med det numret. Det finns förmodligen flera sätt att få SVN-revisionsnumret, men här är ett par sätt som fungerar: Verktyg för kommandoklient

Om kommandoklientverktyget svn installerades med Tortoise-klienten (detta alternativ är som standard inaktiverat i installationsprogrammet), kan System Exec VI användas för att hämta revisionen med följande kommando:

svn info -r HEAD -visa objekt = senast ändrade version

Utdata kommer att vara revisionsnumret, ingen analys krävs.

SubWCRev-verktyg

Om kommandoradsverktyget inte är installerat kan ett verktyg som heter SubWCRev användas i stället (detta fungerar endast i Windows). Detta kan göras antingen genom att anropa SubWCRev.exe eller genom att använda det ActiveX-objekt som medföljer verktyget; här visas ActiveX-varianten.

Lägg till ett automationsrefnummer, högerklicka och välj "Select ActiveX Class", bläddra sedan och välj SubWCRev Type Library som ska finnas i listan.

Lägg sedan till följande noder i blockdiagrammet och anslut dem enligt bilden här:

Det finns också andra egenskaper som kan läsas från egenskapsnoden, t.ex. om ett objekt inte är i revisionskontroll eller har modifieringar. Nästa steg är att lägga till revisionsnumret i versionsinformationen i byggspecifikationen. Detta görs enkelt med hjälp av VI:na Get/Set Build Specification Version som finns i paletten Application Builder.

Det sista steget är att bygga applikationen. Tyvärr har NI inte utformat funktionen för åtgärder före byggandet för användningsfallet att ändra versionen vid byggtiden (och har inga planer på att göra det heller). Den aktuella byggningen måste därför avbrytas och en ny måste startas, antingen manuellt eller programmatiskt. Nackdelen med att starta en ny build programmatiskt är att statusfönstret för build progress inte kommer att visa någon feedback i det här fallet, så en manuell omstart är det bästa valet här. Det är enkelt att avbryta en build, det är bara att ange ett felmeddelande från åtgärden VI för pre-build. Ett anpassat felmeddelande kan läggas till för att informera användaren om att byggversionen har uppdaterats och att byggprocessen ska startas om. Nästa gång byggprocessen startas kommer versionsinformationen att vara korrekt och byggapplikationsprocessen kommer att starta som vanligt.

Om vi kombinerar de steg som beskrivs ovan får vi den här åtgärden VI före byggstart

Resultatet när du startar en build är att den första gången avbryts och dialogrutan Build Errors öppnas. När den startas om öppnas fönstret Build Progress och applikationen byggs.

Naturligtvis finns det också sätt att skapa en egen applikationsbyggare, inklusive uppdateringar av framsteg och felinformation, genom att använda API:et för applikationsbyggare, men med ovanstående tillvägagångssätt kommer revisionsnumret att visas i din byggda applikation utan alltför stora investeringar i tid och ansträngning.