Git-TFS i VS 2012

2

W miniony weekend postanowiłem zaradzić coraz większemu zamulaniu pracowego laptopa. Wziąłem swój zakurzony, nieużywany od wielu miesięcy 120GB SSD OCZ Vertex2, wsadziłem jako główny dysk do Vostro i, dając się ponieść chwili, wrzuciłem nań Windows 8. Wszystko poszło zadziwiająco sprawnie i prawie bez problemów, i wreszcie komputer jest gotowy do pracy po 15 sekundach od wciśnięcia "on" a nie po 15 minutach.
Ale ja nie do końca o tym…

Pierwszy problem pojawił się w momencie, gdy chcialem wrzucić do firmowego TFSa swój kod – oczywiście przez git-tfs. Niby się łączy, niby ściąga zmiany z serwera, niby próbuje wysyłać, a potem… zonk!

[ERROR] Policy: Internal error in Changeset Comments Policy. Error loading the Changeset Comments Policy policy (The pol icy assembly ‘Microsoft.TeamFoundation.PowerTools.CheckinPolicies.ChangesetComments, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a’ is not registered.). Installation instructions: To install this policy, follow the instructions in CheckForComments.cs.

Jest to spowodowane tym, że na maszynie nie miałem VS2010, a tylko VS2012. Ta dllka instaluje się razem z TFS Power Tools dla VS 2010 (December 2011)… które to nie zainstalują się bez VS2010 na maszynie. Instalacja TFS Power Tools dla VS 2012 nic nie daje, ponieważ wsparcie dla tej policy zostało przeniesione z Power Tools do samego TFSa, oczywiście do dllki o innej nazwie (Microsoft.TeamFoundation.VersionControl.Controls.dll). Do tego jako klasa o innej nazwie (CheckForComments).

Znalazłem kilka rozwiązań, niektóre działają a niektóre nie:

  • zainstalować VS 2010 i TFS Power Tools dla niego – najgłupsze brute force, ale zakładam że działa, nie chciałem tego robić bo mimo SSD pewnie straciłbym pół dnia
  • znaleźć gdzieś dllkę Microsoft.TeamFoundation.PowerTools.CheckinPolicies.ChangesetComments i wrzucić ją do katalogu Git-TFS – sprawdziłem, nie działa
  • wrzucić do katalogu Git-TFS dllkę Microsoft.TeamFoundation.VersionControl.Controls.dll – sprawdziłem, nie działa
  • zrobić override tej policy z poziomu Git-TFS (dodając flagę -f do komendy rcheckin) – działa, ale to rozwiązanie na krótką metę

W rozwiązaniu problemu pomógł mi firmowy administracyjno/sprzętowo/wszelaki guru… jak to dobrze mieć mądrych ludzi w firmie:). Mimo że nie ma on styczności z Gitem, a tym bardziej Git-TFS, potrafił bardziej precyzyjnie ode mnie wyfiltrować to co wyrzygał Google i podesłał linka do https://github.com/git-tfs/git-tfs/issues/258. Opisany tam sposób działa, a składa się z dwóch kroków:

  • upgrade Git-TFS (ja miałem jakąś starą wersję więc upgrade do 0.16.1 i tak się przydał)
  • modyfikacja klucza w rejestrze:
    • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\11.0\TeamFoundation\SourceControl\Checkin Policies\Microsoft.TeamFoundation.VersionControl.Controls
    • wartość (dotychczas była pusta): C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Microsoft.TeamFoundation.VersionControl.Controls.dll

Podobno nie ma to żadnych skutków ubocznych. Tak czy siak Git-TFS znowu działa!

Share.

About Author

Programista, trener, prelegent, pasjonat, blogger. Autor podcasta programistycznego: DevTalk.pl. Jeden z liderów Białostockiej Grupy .NET i współorganizator konferencji Programistok. Od 2008 Microsoft MVP w kategorii .NET. Więcej informacji znajdziesz na stronie O autorze. Napisz do mnie ze strony Kontakt. Dodatkowo: Twitter, Facebook, YouTube.

2 Comments

  1. Dzięki Maćku za zapewnienie nam niezłego ubawu od rana.

    Wklejenie całego błędu do google.pl daje 1 (słownie : jeden) wynik (oprócz linku do tego artykułu) i zgadnij gdzie on prowadzi ;)

    Niekontrolowane ruchy przeponą z samego rana – samo zdrowie :)

Newsletter devstyle!
Dołącz do 2000 programistów!
  Zero spamu. Tylko ciekawe treści.
Dzięki za zaufanie!
Do przeczytania wkrótce!
Niech DEV będzie z Tobą!