2011-09-19 14 views
13

Próbuję otworzyć istniejącą aplikację Perforce. Wprowadziłem pewne lokalne zmiany, takie jak usuwanie plików, które chcę cofnąć (tzn. Chcę, aby moja lokalna kopia dokładnie pasowała do repozytorium - usuń dodane pliki, przywróć usunięte pliki i cofnij zmiany).Perforce Revert Pokazuje "plik (i) nie otwarty na tym kliencie"

Kiedy próbuję przywrócić za pomocą klienta GUI p4v, widzę ten błąd:

file(s) not opened on this client 

Co robię źle?

Udało mi się przywrócić wszystkie zmienione pliki, ale nie dodałem/usunięto plików.

Edit: zrobiłem następujący:

  • połączyć się z serwerem Perforce wykorzystaniem p4v
  • mapie katalog do mojego lokalnego systemu plików (powiedzmy C:\Perforce)
  • Pobierz najnowszą wersję Repozytorium
  • Przejdź do C: \ Perforce w Eksploratorze Windows
  • Usuń niektóre pliki i foldery
  • Dodaj niektóre pliki i foldery

chciałbym wrócić do „pierwotnego” stanu, kopia dokładnie co jest na serwerze, gdy dostałem ostatnią wersję repozytorium po raz pierwszy.

+0

Co masz na myśli, mówiąc "otwórz istniejącą aplikację perforacji"? Czy mówisz o kliencie (takim jak p4v) czy o czymś innym?Czy po usunięciu i dodaniu plików zrobiono to za pomocą komend "p4 add" p4 "p4 delete" lub ich odpowiedników w guziku p4v. Co więcej, kiedy mówisz, że chcesz dokładnie dopasować swoją lokalną kopię, masz na myśli? plik po pliku identyczny z tym, który znajduje się w magazynie (w ogóle bez żadnych plików zewnętrznych), czy masz na myśli to, że chcesz, aby pliki w obszarze roboczym pasowały do ​​składu, a dodatkowe pliki w obszarze roboczym są w porządku? – Mark

+0

@Mark Zaktualizowałem moje pytanie ze szczegółami – ashes999

+0

Czy dodałeś i usunąłeś pliki za pomocą Perforce? –

Odpowiedz

20

Dzięki wyglądowi edytowanego opisu dodałeś i usunąłeś pliki bezpośrednio w systemie plików, a nie przez perforce. Dlatego Perforce nie wie nic o tych zmianach, więc nie ma nic do odwrócenia. Zwykle, gdy chcesz dodać plik, używaj "p4 add" (lub równoważnej operacji p4v), a kiedy usuniesz, powinieneś użyć "p4 delete" (lub ponownie, odpowiednik operacji p4v)

Naprawdę, najlepszą opcją powrotu do pierwotnego stanu jest nukeowanie lokalnej kopii kodu w c: \ perforce (w Eksploratorze Windows), przejdź do p4v, kliknij prawym przyciskiem myszy obszar, który chcesz zsynchronizować, i wybierz "Get Revision .. . "i w następnym oknie dialogowym, upewnij się, że pole wyboru" wymuszenie działania "jest zaznaczone, co powie Perforce, że chcesz mieć nową kopię wszystkiego, niezależnie od tego, czy została zsynchronizowana, czy nie.

Możesz także uruchomić "uzgodnij pracę offline" w p4v Kliknij prawym przyciskiem myszy obszar magazynu i wybierz tę opcję, przeskanuje on lokalną strukturę folderów i da ci ponowne port, który pliki zostały dodane, które nie istnieją w perforce, jakie pliki zostały usunięte i jakie pliki zostały zmodyfikowane. W tym oknie dialogowym możesz kliknąć prawym przyciskiem myszy na pliki lokalne, które nie istnieją i usunąć je, lub możesz je "p4 dodać". Możesz także synchronizować usunięte pliki.

HTH.

+3

To jest to, co ja Chciałem wiedzieć: SVN, Hg, itd. Wszystkie pozwalają na użycie przywracania, aby usunąć pliki lokalne, które nie znajdują się w repozytorium, i ponownie dodać usunięte pliki, które wciąż znajdują się w repozytorium – ashes999

+0

Perforce będzie tylko śledzić pliki, które "zna". około. Więc co pl usuwasz pliki lokalne, które nie są przechowywane w repozytorium, Perforce nic o nich nie wie. Pamiętaj, że za każdym razem, gdy robisz pliki w swoim obszarze roboczym, jeśli chcesz wiedzieć o tym, musisz użyć poleceń Perforce (lub użyć czegoś podobnego do uzgodnienia pracy offline, aby zsynchronizować się z tym, co Perforce uważa, że ​​masz lokalnie na stacji roboczej) – Mark

+1

to zrozumiałe. Czego nie rozumiem (być może ze względu na moje tło SVN/Hg) jest to, że Perforce wydaje się "ignorować" system plików i nie pozwala na jedno kliknięcie, aby przywrócić dokładnie to, co jest na serwerze. Wydaje mi się to nieskuteczne. – ashes999

3

Tylko nie zwracam uwagi na inną przyczynę tego. Jeśli nazwa pliku zawiera nietypowy znak, którego nie można poprawnie przetłumaczyć, nazwa na kliencie nigdy nie będzie zgodna z nazwą na serwerze. Rozwiązaniem w tym przypadku jest zlokalizowanie tego znaku w nazwie pliku (będzie to znak zapytania na Linuksie) i użycie symbolu wieloznacznego, który pomoże zidentyfikować plik na serwerze, aby mógł go usunąć itp. (Usunięcie pliku jest p4 sposób na pójście).

+0

Cześć, dziękuję za odpowiedź/komentarz. – ashes999