\

Školení Návrhové vzory, OOP a UML


 Sunday, August 15, 2004
Windows služba pro pravidelné stahování souborů z Visual Source Safe databáze

I když je Visual Source Safe na mém soukromém žebříčku mizerných programů zcela zaslouženě na nelichotivém prvním místě a jeho programátory podezřívám, že byli do Microsoftu infiltrováni konkurenčními firmami a plní zde (nutno přiznat, že ale velmi úspěšně :) ) roli Trojského koně, musel jsem se smířit s tim, že ve firmě VSS stále používáme, byť všichni s kletbami na rtech. Protože ve VSS nemusí být ukládány jen zdrojové kódy, ale i dokumentace a analytické artefakty, o něž mají zájem i lidé*, kteří s VSS jinak nepracují a které nemá smysl nutit, aby instalovali a používali VSS klienta, rozhodl jsem se, že pro DIGI TRADE napíšu Windows službu, která vybrané projekty z VSS databáze v pravidelných intervalech uloží do adresáře v souborovém systému.
A protože se služba bude asi hodit více lidem, betu Windows služby si můžete zdarma stáhnout a otestovat.

Po rozbalení archivu musíte službu nainstalovat nástrojem InstallUtil.
installutil.exe DigiTrade.VSS.VSSService.exe


V konfiguračním souboru DigiTrade.VSS.VSSService.exe.config změňte cestu, kam má být ukládán "trace" log (hodnota atributu initializeData). Jestliže budete reportovat chyby, přiložte vždy prosím i "trace" log.


Účet, pod kterým běží služba, musí mít právo zapisovat do souboru s " trace" logem!
<add name="VSSListener"
type="System.Diagnostics.TextWriterTraceListener"
initializeData="c:\LOGS\VSSService.log"/>

Když chcete používat jiný soubor s VSS konfigurací (viz dále), změňte v souboru hodnotu klíče IniFile.
<add key="IniFile" value="VSSManagerConfig.xml"/>

 Soubor s konfigurací VSS manažera (VSSManagerConfig.xml) má následující strukturu:

Element vssManager - kořenový element.
Povolený obsah - Elementy generalSettings, commonProjects a exactProjects

Element generalSettings - základní nastavení VSS služby.
Povolený obsah - žádný

Atributy

  • vssIniFile - Cesta k ini souboru VSS databáze, se kterou má služba pracovat.
  • userName - Jméno uživatele ve VSS, pod kterým se bude služba přihlašovat.
  • password - Heslo uživatele ve VSS (v Betě není kryptováno!).
  • saveAllItems - Pokud má atribut hodnotu true, tak se ignorují sekce commonProjects a exactProjects a dojde ke stažení všech projektů z VSS databáze.
  • saveDirectory - Adresář, do kterého budou uloženy soubory z VSS.
  • checkerInterval - Interval v minutách, po jehož uplynutí jsou stahovány soubory z VSS databáze.

Element commonProjects - projekty, které budou staženy vždy bez ohledu na jejich místo v hierarchii projektů ve VSS. Tuto sekci využijete například tehdy, když ve většině projektů máte podprojekty se stejným názvem.(například adresář DOC s dokumentací projektu).
Povolený obsah - element project

Element exactProjects - Projekty určené absolutní cestou (začíná znakem $), které mají být staženy z VSS.
Povolený obsah - element project

Element project - element reprezentující projekt ve VSS.
Povolený obsah - žádný

Atributy

  • name - Název projektu


Služba využívá přes interop COM knihovnu SSAPI.dll dodávanou s VSS.
Po instalaci doporučuji vytvořit pro službu nový Windows účet, pod kterým poběží a který bude mít přidělen jen nejnutnější práva - přístup k souboru s "trace" logem, přístup k VSS databázi a právo zapisovat do adresáře určeného atributem saveData. Vhodné je také vytvoření nového uživatelského účtu ve VSS.

Pro úplnost jen podotýkám, že vím o existenci konzolového nástroje ss.exe s desítkamí neintuitivních přepínačů, který je součástí VSS, ale správa desítek nebo stovek řádků v BAT souboru mě nelákala, a proto vznikla tato služba.

*Pro účely tohoto spotu jsem se rozhodl zjednodušeně považovat projektové manažery a obchodníky za lidi, i když u některých členů těchto kast mám o jejich pravé podstatě kvůli jimi bezskrupulózně projevované deficitní intelektuální potenci důvodné pochybnosti:)



Sunday, August 15, 2004 12:07:00 PM (Central Europe Standard Time, UTC+01:00)       
Comments [9]  .NET Framework | VSS Windows Service


Tuesday, July 19, 2005 11:01:47 AM (Central Europe Standard Time, UTC+01:00)
Moc hezke.

Poznamku za hvezdickou si dovolim ulozit do sve soukrome sbirky vtipu :-)
Tuesday, July 19, 2005 11:01:47 AM (Central Europe Standard Time, UTC+01:00)
Diky Michale.
Zarazenim poznamky jsem pocten:)
Tuesday, July 19, 2005 11:01:47 AM (Central Europe Standard Time, UTC+01:00)
Hmm. VSS je sice hruza ale v tomto pripade by mozna stacilo zvazit jestli funkce &quot;Shadow Folders&quot; neni presne to co resite pomoci Vaseho kodu... Lze to nastavit i na jednotlive projekty.
Tuesday, July 19, 2005 11:01:47 AM (Central Europe Standard Time, UTC+01:00)
A pro uplnost dodavam ze Shadow Folders se nastavuje pres UI :-)
Tuesday, July 19, 2005 11:01:47 AM (Central Europe Standard Time, UTC+01:00)
To Petr Lazecky - a lze pres Shadow Folders nastavit, ze budou z kazdeho projektu (i nove zalozeneho) vytazeny projekty s urcitym nazvem a ze stahovani souboru se deje v pravidelnych intervalech?
Tuesday, July 19, 2005 11:01:47 AM (Central Europe Standard Time, UTC+01:00)
On SourceSafe neni puvodne MS produkt. Nekde to kdysi koupili :-)
Tuesday, July 19, 2005 11:01:47 AM (Central Europe Standard Time, UTC+01:00)
Shadow Folders lze nastavit zvlast pro kazdy VSS projekt. Nove vytvoreny projekt dedi nastaveni rodicovskeho projektu takze pokud vytvorite shadow nad jistou vetvi ve VSS, a v teto vetvi vytvorite novy projekt, tak se pro tento projekt vytvori ...
Tuesday, July 19, 2005 11:01:47 AM (Central Europe Standard Time, UTC+01:00)
To Petr Lazecky: Uz jsem se poradne podival do dokumentace - Shadow Folders nejsou spatne, ale na ty vecio, co jsem popisoval vyse, nestaci.
Hlavne mi chybi moznost definovat adresare, ktere maji byt vytazeny, at uz se nachazeji v libovolne ...
Tuesday, July 19, 2005 11:01:47 AM (Central Europe Standard Time, UTC+01:00)
To BDA.
:) Tomu rikam extremne nevyhodna koupe.
Comments are closed.