2015-03-11 13 views
13

Używam aktualizacji VS2013 4 z aktualizacją TFS 2013 4. W Eksploratorze kontroli źródła, ilekroć przenoszę plik z jednego folderu do drugiego, widzę, że historia pliku jest zachowywana w nowym Lokalizacja. Jednak ta historia zniknęła, gdy sprawdzam oczekujące zmiany. To samo dzieje się, gdy próbuję uruchomić polecenie "tf move". Jak więc przenieść plik w TFS i zachować historię pliku?Przenoszenie plików traci historię w TFS 2013

+0

Zobacz także: http://stackoverflow.com/questions/27491584/how-can-i-fix-tfs-history-after-rename – jessehouwing

+0

W zależności od powodu twojego ruchu, możesz również użyć ponownego nadawania gałęzi do obejścia tego problemu. Jakie zmiany wprowadzasz? – moarboilerplate

+0

Zdarza się również, gdy łączę gałąź – Damian

Odpowiedz

18

Gdy nazwa pliku jest zmieniana poprawnie, historia nie jest "Przegrana", jest ona przypisana do "starej nazwy".Zmieniły nazwy, które odbywa się we właściwy sposób (śledzone jako zmiany nazwy, a nie jako kasowania + dodaj) posiada opcję drążenia, aby wyświetlić „starszych” Historia:

enter image description here

  • changeset 81 ~ 82 zawierają zmiany do starej nazwy
  • changeset 83 zawiera kasowania + przemianować
  • changeset 84 nowe zmiany, które zostały sprawdzone w po przemianowania

Kiedy zmiana nazwy odbywa się na zewnątrz o f Source Access Explorer (lub z bardzo starej wersji Source Control Explorer (np. VS 2008)) lub poza programem Solution Explorer, wówczas zmiana zostanie wykryta jako dwie pojedyncze akcje, jedna usuń i jedna dodaj. Można użyć okna „oczekujące zmiany”, aby promować je do zmiany nazwy tak, że historia jest zachowana:

enter image description here

w linii poleceń, można to osiągnąć jedynie za pomocą „tf Zmień nazwę” i „tf Move”. Używanie standardowych poleceń "mv" i "ren" nie pozwoli zachować historii.

Poniżej jest kolejnym przykładem wykorzystania wszystkich różnych metod i pokazuje, że historia jest zachowana, patrząc na historię bieżącej Nazwa pliku:

enter image description here

+0

Dzięki @jessehouwing za dokładną odpowiedź! Właściwie uruchomiłem polecenie "tf move" i jak powiedziałeś, zachowałeś historię. Po prostu nie wiedziałem o opcji drążenia! Teraz, kiedy wracam, widzę "starszą" historię. – TDN

+0

Właśnie zmieniłem to :) – TDN

+0

co z przeniesionymi folderami? Jedyne rozwiązanie, jakie znam, to wykorzystanie historii lub przejście do plików znajdujących się pod nim lub pokazanie usuniętych folderów w aplikacji Source Control Explorer i zapytanie o historię tam. – vezenkov

2

Przyszedłem do tego numeru z tego question.

Problem istnieje od TFS2010 i nie jest tylko problemem w przypadku plików o zmienionej nazwie lub przeniesionych, ale również w przypadku nazw o zmienionej nazwie lub przeniesionych. Najgorsze jest to, gdy zmienisz nazwę gałęzi, a następnie przejrzysz historię folderów. Wtedy znajdziesz tylko zmianę zestawu zmian nazwy.

Here Możesz zobaczyć reakcję MS na to zadanie. Zasadniczo mówią, że nie robią tego, ponieważ jest to dużo pracy i sprawia, że ​​historia jest wolniejsza.

Nie mogłem z tym żyć i zaprogramowałem poprawkę. Wybór historii rekurencyjnej odbywa się w SP dbo.prc_QueryHistory. Zmieniłem SP i dodano następujące działanie:

  • (w normalnym poszukiwaniu ostatnich 256 Zestawienia zmian rekurencyjnie)
  • następnie sprawdzić Zestawienia zmian jeśli niektóre z nich stanowią zmiany nazwy/przenieść operacje
  • jeśli tak rekurencyjnie (w pętli) postępuj zgodnie z każdą zmianą/przenieś do poprzedniego ItemId i powtórz ten krok (w przypadku wielokrotnej zmiany nazwy pliku/folderu)
  • następnie znajdź wszystkie wcześniejsze zmiany do poprzednich ItemIds (przenoszenie/zmiana nazwy zmienia ItemId)
  • dodać nowo znalezione zestawy zmian do listy zestawów zmian i przyciąć go w wierszu 256

Efekt jest wolniejszą historią (szczególnie jeśli robisz to w katalogu głównym głębokiego drzewa folderów), ale problem został rozwiązany. Wolę raczej żyć z powolną historią niż z niekompletnością.

Mogę podać SP, który napisałem, ale nie jestem pewien, czy mógłbym go opublikować tutaj, ponieważ zawiera on chroniony kod MS. (i oczywiście nie mogę zagwarantować, że poprawka będzie utrzymywać się podczas aktualizacji systemu - pisałam SP w TFS 2013 SP3.).

Aktualizacja: Poprosiłem MS o zgodę na opublikowanie mojego fix (2nd Link w moim wpisie)

+0

Możesz otworzyć prywatny czat, gdy masz wystarczające uprawnienia: http://stackoverflow.com/help/privileges/chat-rooms – jessehouwing

+0

** OSTRZEŻENIE **: To oficjalnie umieści Twój TFS instalacja w nieobsługiwanym stanie. – jessehouwing

+0

Sposób obejścia problemu * działa * po jego użyciu, chociaż przypisuje również konto używane do przeprowadzenia migracji jako autora zmian. Z drugiej strony informacje te nie są tracone, ponieważ są one dołączane do opisu zmian. Więc jeśli możesz z tym żyć, polecam to. – moarboilerplate

0

Nie sądzę jessehouwing prace poprawek dla folderów. W rzeczywistości, jeśli korzystasz z Source Control Explorer VS 2012+, przenoszenie folderów zachowuje historię plików (pokazuje rekurencję w VS), ale nie dotyczy folderów. Historia folderów jest płaska.

Rozwiązaniem tego problemu:

  1. Microsoft naprawić historia folderu sposób przedstawiono w VS lub dodać menu kontekstowego Pokaż Recursive Historia.
  2. Migracja wszystkich zestawów zmian z jednego folderu do drugiego. Niestety nadal nie mogę zidentyfikować narzędzia zdolnego zrobić to dla TFS 2013 lub VSO.
Powiązane problemy