V lednu 2011 jsme se konečně dostali k tomu ve firmě přejít na používání Team Foundation Serveru 2010 (TFS) (Edit: a později na TFS 2012 a 2013), do té doby jsme jako source control používali pouze Visual Source Safe (VSS). Ačkoliv jsme tento přechod udělali docela pozdě, o to víc nás překvapilo to, že některé funkce uživatelského prostředí TFS Source Control Exploreru jsou nedostačující (ve srovnáním se stařičkým Source Safem) a to i po doinstalování Team Foundation Server Power Tools.
Mezi největší nedostatky ovládání Source Control Explorer okna patří absence drag & drop, nemožnost použít funkce Move, Branch pří označení více souborů najednou. Po prohledání webů jsme zjistili, že ačkoliv tyto funkce nechybí pouze nám, řešení od MS a vlastně ani jiné není. Proto jsme se rozhodli napsat si vlastní doplněk do Visual Studia, který bude chybějící funkčnosti obsahovat. Doplněk je vytvořen jako Extension Package pro Visual Studio 2010/2012/2013 (soubor vsix), nazvali jsme ho TFS Source Control Explorer Extension.
Edit: Verze pro Visual Studio 2013 je k dispozici zde a pro Visual Studio 2012 zde.
Aktualizece Listopad 2013 (Nové):
- Funkce Multiple Cloak / Uncloak
- Zařazení příkazů doplňků contextového menu i do menu File \ Source Control.
- Oprava chyby "Microsoft Visual Studio has detected that an operation is blocking user input." ve volání Folder Browser dialogu.
- Oprava chyby An item with the same key has already been added.
- Oprava zjištění Source a Target v item branches
- Zobrazování Visual Studio icon prvků v treeview dialogu Merge from Sources.
Aktualizece Říjen 2013:
- Verze pro Visual Studio 2013
- Nový způsob zjišťování source pro Branching and Merging funkce, podpora Baseless merge ve funkci Merge from Sources.
- ErrorFailure messages - některá chybová hlášení jsou zobrazována ve VS Output window
- Další opravy podle Error Reportů
Aktualizece 24. Prosinec 2012:
- Funkce Filter Folders by folder mapping nově také pracuje is Cloaked folders. Chování filtru se dá nastavit volbou v options dialogu.
- Funkce Branch to Folder a Merge from Sources jsou nyní přesunuté do Branching and Merging podmenu.
- Změněna podpora instalačního balíku na Visual Studio 2012 Shell (Integrated).
- Icona funkce Show/Hide Deleted byla změněna na iconu, kterou nyní tato funkce má v VS Update 1.
- Další drobné úpravy
Aktualizece Červen 2012:
- Nová funkce Filter Folders by folder mapping pro filtrování složek stromu Source Control Exploreru podle mapování v aktuálně vybrané Workspace.
- Aktualizace pro Visual Studio 2012 RC.
- Vylepšen Error reporting.
- Funkce Show / hide deleted items and Destroy jsou nyní v podmenu Advanced (verze pro Visual Studio 2012).
- Opravy dalších chyb.
Aktualizece Únor 2012:
- Nová volba "Get Check In file date from comments in Source Safe converted projects", která umožňuje znovu zapnout načítání data pro Check In souboru z komentářů vytvořených při převodu Source Safe projektů. Toto chování je nyní ve výchozím nastavení vypnuto.
- Oprava chyby System.NullReferenceException v VersionControlServer_OperationFinished.
- Zpráva pro ošetření TFS chyby SQL Server Error: 18054.
- Oprava ošetření některých TFS chyb
Aktualizece Leden 2012:
- Oprava chyby ve funkci Icon change.
- Oprava chyby NullReferenceException pokud není nastaven aktuální workspace .
- Oprava chyb TF10125: The path '$' must start with $/ , "Full path can only be retrieved when a TreeNode has been added to a TreeView" a ArgumentOutOfRangeException "startIndex cannot be larger than length of string".
- Přidání funkce Error reporting pro možnost odeslání informací o vzniklé chybě.
- Funkce Icon change nyní provádí změnu ikon ve stromě a seznamu souboru v okně Source Controlu asynchroně.
- Oprava ve funkci Merge from Sources.
Aktualizece Prosinec 2011:
- Oprava chyby ve funkci Undo changes to unchanged files, pokud jsou některé soubory ve Visual Studiu neuloženy. Tento stav je nyní detekován a je zobrazeno varování a funkce nelze spustit.
- Oprava chyby ve funkci Icon change, kde u některých větví (Branched folders) mohlo dojít k zatuhnutí okna Source Contolu.
- Funkce Icon change and Merge from Sources nejsou podporovány, pokud doplněk TFSSCExplorerExtension běží proti TFS 2008/2005. Dříva byla opakovaně zobrazena chyba TFS "The Team Foundation server to which your team project is connected does not support querying merge relationships.". Nyní stále nejsou tyto funkce podporovány, ale jsou v tomto případě úplně potlačeny a chyba není zobrazena.
Aktualizace Říjen 2011:
- Nová funkce Undo changes to unchanged files in Pending Changes, která provede undo v nezměněných souborech podobně jako to dělá příkaz command line utility z TFS Power Tools "TFPT.EXE uu". Funkce je dostupná v toolbaru v okně Pending Changes.
- Funkce Změna ikony souborů je nyní rozšířena tak, že změna icony je provedena i na soubory a adresáře, které jsou ve větvy adresářů (Branched folders).
- Přidáno potlačení volby Branch pokud je soubor nový nebo smazaný.
- Přidáno potlačení volby Destroy pokud je na souboru provedena nepotvrzená (pending) operace nový, přesunutý nebo branch.
- Oprava funkce Move souboru.
Aktualizace Srpen 2011:
- Funkce Změna ikony souborů nyní změní icony také pro větve adresářů (Branched folders). Icona je také kromě pouze seznamu souboru změněna i ve stromě adresářů.
- Oprava DoubleClick na seznamu souborů Source Control exploreru
- Oprava ošetření Exceptions
- Volba Show Deleted items and Destroy menu commands option je nyní rozdělana na dvě nezávislé volby: Enable Show deleted items menu command a Enable Destroy menu command
- Přidán soubor license
- Změna kontext menu při Drag Drop operaci na Visual Studio context menu
Poznámka: Pokud nějaká operace TFS Source controlu nelze provést (např.: Branch souboru, který je již branchován), je chybová zpráva zobrazena ve Visual Studio Output okně. Aby to fungovalo, musí TFS SQL Server databáze obsahovat chybové zprávy v tabulce sys.messages, jinak bude vyhozena SQL Exception. Pokud chybové zprávy v tabulce sys.messages nejsou, lze to opravit spuštěním následujícího příkazu:
TFSConfig PrepSQL /SQLInstance:ServerName[\InstanceName]
Aktualizace Červenec 2011:
- Oprava funkce Změna ikony souborů
Branch (větve) adresářů jsou nyní v seznamu relací ignorovány. Tím zůstavají icony u souborů v branchovaném adresáři nezměněny.
- Options
Přidána stránka v Tools Options dialogu. Obsahuje následující volby:
Show Deleted items and Destroy menu commands - Podlačení voleb nabídky na zobrazení smazaných souboru a na úplné odstranění,
Enable Files icon change - Možnost vypnutí změny icon souborů v Source Control Exploreru,
Enable Change files date on Get - Vypnutí změny datumu souboru při Get operaci.
Teď k jednotlivým funkcím doplňku:
Move to Folder
Standartní funkce Move vyžaduje určení umístění a jména přímo jednoho souboru a proto nelze zavolat na více označených souborů. To oproti tomu jde v nové funkci Move to Folder, kde se zadá nebo vybere pouze cesta nového umístění.
Potvrzením dialogu jsou označené soubory přesunuty, jména souboru jsou zachována stejná jako mají soubory původní.
Branch to Folder
Obdobně jako u funkce Move to Folder i zde se na rozdíl od původní funkce Branch vybere pouze cesta umístění, do které se provede branch souboru nebo více vybraných souborů (jména souborů zůstanou zachována).
Merge from Sources
Tato funkce po zavolání zobrazí strom složek a souborů, které jsou do vybrané složky (nebo do označených složek/souborů) branchnuté. Dialog zobrazuje všechny soubory, né pouze změněné. Po označení některého souboru je dole v dialogu zobrazena cesta zdrojového souboru. Ve stromě je možné jednotlivé soubory vybrat, na ty se pak po odklepnutí OK v TFS provede operace Merge (nezměněné soubory jsou ignorovány).
Pozn.: Pokud jste byli v Source Safe zvyklí používat sdílení souborů (Share), tato funkce se v TFS nahrazuje funkcemi Merge a Branch. Místo vytvoření Share se použije Branch např. z nějakého sdíleného místa do vašeho projektu (k tomu dost pomáhá nová funkce Branch to Folder), dále aplikování změn zpět do sdíleného umístění provedeme funkcí Merge. Pokud potřebujeme na projektu kde máme takto vytvořené sdílení hromadně aktualizovat soubory z jednotlivých sdílených umístění použijeme na celou složku právě tuto funkcí Merge from Sources, ta zajistí merge všech souborů. (Ve VSS toto provedla přímo funkce Get Latest Version, protože ta automaticky načetla i všechny změny ve sdílených souborech.)
Změna ikony souborů
V zobrazení jednotlivých souborů v levé části okna Source Control Exploreru je u souborů, na kterých byla provedena operace Branch, změněna ikona.
Icona je zobrazena u souborů, které jsou cílem operace branch, nebo pokud je na nich proveden Branch pouze na jedno umístění. Pokud je soubor “branchnutý” do více umístění, je u něho zobrazena icona .
Drag & Drop
Doplněk dále přidává do okna Source Control Exploreru podporu pro drag & drop mezi seznamem souborů v levé části a stromem složek v pravé části okna (standardně okno podporuje pouze drag & drop z okna Windows Exploreru do okna source controlu). Pokud použijeme přetažení souborů levým tlačítkem myši, provede se akce Move souborů do cílové složky vybrané ve stromě. Pokud provedeme přetažení pravým tlačítkem myši, zobrazí se místní nabídka s možnosti Move, Branch nebo Copy.
Move, Branch provede výše popsané funkce, Copy provede lokální kopii souborů do cílového umístění a přidání z této cesty do source controlu.
Show / hide deleted items
Jedná se volbu v nabídce pro rychlejší zapínání nebo vypínání zobrazení smazaných souborů v Source Control Exploreru, tato funkce je normálně dostupná přes Visual Studio Options dialog, v části Source Control TFS.
Destroy
Volba provede úplné odstranění souboru nebo složek ze source controlu, lze jí vyvolat na výběr více souborů/složek, existujících nebo i již smazaných (při zobrazení i smazaných souborů).
Rozšíření a opravy Source Controlu
Kromě výše uvedených funkcí rozšiřujících UI Source Control Exploreru, obsahuje doplněk ještě další funkce které mění nebo opravují chování Source Controlu samotného.
Jsou to:
- Pří nahrání souborů ze Source Controlu do lokálního umístění (Workspace) operací Get (Get Latest Version nebo Get Specific Version) je změněno datum nahraného souboru na datum kdy byl soubor naposledy nahrán do Source Controlu tj. na datum CheckIn. (Podobně jako to dělal při operaci Get Source Safe).
- Při přidání nového souboru do Source Controlu se provede odstranění atributu readonly, tím lze pak rovnou ve VS editovat.
- Při přejmenování souboru se vynutí obnova okna Pending Changes, standardně totiž okno po operaci rename začne chybně zobrazovat soubor jako dvě položky (dvě změny) a pak nelze provést Check In.
Doplněk TFSSCExplorerExtension pro Visual Studio 2010/2012/2013 je možné doinstalovat pomoci Extension Manageru přímo z Visual Studio Galery, nebo případně stáhnout těmito odkazy pro Visual Studio 2013, pro Visual Studio 2012 nebo pro Visual Studio 2010.