Czy ktoś ma skrypt lub alias do znajdowania nieśledzonych (naprawdę: niedodanych) plików w drzewie Perforce?
EDYCJA: Zaktualizowałem zaakceptowaną odpowiedź na ten, ponieważ wygląda na to, że P4V dodał obsługę tego w wydaniu ze stycznia 2009.
version-control
perforce
David Joyner
źródło
źródło
p4 status
nie tylko ZNAJDŹ nieśledzone pliki, ale faktycznie ROZPOCZYNA JE ŚLEDZENIE. Top4 status
znaczy nie jest zapytaniem tylko do odczytu, jak można by podejrzewać po nazwie, ale w rzeczywistości jest poleceniem, które zmienia rzeczy - nie pliki obszaru roboczego. To NIE jest to, co polecenie statusu powinno robić, a NIE to, cosvn status
robi. Najbliższą rzeczą, jaką mogę znaleźć,svn status
jestp4 reconcile -na
- -a powiedzieć „pliki, które powinny zostać dodane”, -n powiedzieć „właściwie niczego nie zmieniaj”. /// Pierwotnie powiedziałem coś znacznie mocniejszego.p4 status
) i sam odpowiedziałem. Lepiej witanyp4 reconcile
ip4 status
są powolne jak diabli, agit status
wykonywanie trwało od 1 do 3 sekund.Odpowiedzi:
EDYCJA: Użyj
p4 status
teraz. Nie ma już potrzeby skakania przez obręcze. Zobacz @ ColonelPanic za odpowiedź .W wersji P4V ze stycznia 2009 r. Można kliknąć prawym przyciskiem myszy dowolny folder w drzewie obszaru roboczego i kliknąć opcję „uzgodnij pracę offline ...”
Spowoduje to niewielkie przetworzenie, a następnie wyświetlenie podzielonego widoku drzewa plików, które nie zostały wyewidencjonowane, ale różnią się od wersji składu lub w ogóle nie zostały wpisane. Może być nawet kilka innych kategorii, które przywołuje.
Możesz kliknąć prawym przyciskiem myszy pliki w tym widoku i wyewidencjonować je, dodać, a nawet cofnąć.
To bardzo przydatne narzędzie, które kilka razy uratowało mi tyłek.
EDYCJA: ach pytanie zadawane konkretnie w sprawie skryptów, ale zostawię tę odpowiedź na wszelki wypadek.
źródło
p4 status
nie tylko ZNAJDŹ nieśledzone pliki, w rzeczywistości ZACZYNA JE ŚLEDZIĆ. Top4 status
znaczy nie jest zapytaniem tylko do odczytu, jak można by podejrzewać po nazwie, ale w rzeczywistości jest to polecenie, które zmienia rzeczy - nie pliki obszaru roboczego. To NIE jest to, co powinno robić polecenie statusu, a NIE to, cosvn status
robi. Najbliższą rzeczą, jaką mogę znaleźć,svn status
jestp4 reconcile -na
- -a powiedzieć „pliki, które powinny zostać dodane”, -n powiedzieć „właściwie niczego nie zmieniaj”. /// Pierwotnie powiedziałem coś znacznie mocniejszego.p4 status
jest w zasadzie synonimemp4 reconcile -n
. Może biegałeś,p4 status -A
co jest synonimemp4 reconcile
?W systemie Linux lub jeśli masz zainstalowane narzędzia gnu w systemie Windows:
Spowoduje to wyświetlenie komunikatu o błędzie dla każdego nierozliczonego pliku. Jeśli chcesz przechwycić ten wynik:
źródło
.p4ignore
i może wyświetlać podgląd i automatycznie edytować niezatwierdzone / zmienione / usunięte pliki.find . -type l
) i daje mylące dane wyjściowe dla plików P4 dodanych siłą, ponieważ zawierają one znaki@
lub%
. Jednak takie pliki są w mniejszości, więc ręczne przeglądanie tych skrajnych przypadków będzie działać w większości przypadków.W systemie Unix:
Spowoduje to wydrukowanie listy plików, które nie zostały dodane w Twoim kliencie ani w składzie Perforce. Użyłem
! -name '*~'
wykluczyć pliki kończące się ~.źródło
Ach, jeden z klasyków Perforce :) Tak, to naprawdę do niczego, że NADAL nie ma na to łatwego sposobu wbudowanego w domyślne polecenia.
Najłatwiej jest uruchomić polecenie, aby znaleźć wszystkie pliki w katalogu głównym klienta, a następnie spróbować dodać je do składu. Otrzymasz listę zmian zawierającą wszystkie nowe pliki, a istniejące pliki będą ignorowane.
Np. Dir / s / b / AD | p4 -x - dodaj
(użyj 'find. -type f -print' z wiersza poleceń nix).
Jeśli chcesz mieć fizyczną listę (w konsoli lub pliku), możesz potokować wyniki porównania (lub dodać, jeśli chcesz je również umieścić na liście zmian).
Jeśli uruchamiasz to w P4Win, możesz użyć $ r do zastąpienia katalogu głównego klienta w bieżącym obszarze roboczym.
źródło
Tak, ALE .
Począwszy od wersji Perforce 2012.1 istnieje polecenie
p4 status
oraz w P4V „uzgodnij pracę offline”. Jednak oba są bardzo powolne. Aby wykluczyć nieistotne pliki, musisz napisaćp4ignore.txt
plik na https://stackoverflow.com/a/13126496/284795źródło
p4 status
wydania 2012.1 wprowadzono kilka ulepszeń wydajności . Jeśli trzymałeś się z daleka zp4 status
powodu problemów z wydajnością, warto przetestować go ponownie, aby zobaczyć, jak zachowuje się teraz.Czuję potrzebę dodania odpowiedzi, ponieważ zaakceptowana odpowiedź i niektóre inne mają coś, co uważam za znaczący problem: nie rozumieją różnicy między poleceniem zapytania tylko do odczytu a poleceniem, które wprowadza zmiany.
Nie oczekuję żadnego uznania za tę odpowiedź, ale mam nadzieję, że pomoże to innym uniknąć marnowania czasu i popełniania błędów, wykonując zaakceptowaną, ale niepoprawną odpowiedź IMHO.
--- + KRÓTKI
Prawdopodobnie najwygodniejszym sposobem znajdowania wszystkich nieśledzonych plików w obszarze roboczym koniecznym jest
p4 reconcile -na
.-a
mówi „daj mi pliki, których nie ma w repozytorium, czyli takie, które powinny zostać dodane”.-n
mówi „nie wprowadzaj żadnych zmian” - czyli próba uruchomienia. (Chociaż w wiadomościach może być napisane „otwarte do dodania”, w myślach musisz zinterpretować to jako „zostanie otwarte do dodania, jeśli nie -n”)Prawdopodobnie najwygodniejszym sposobem znajdowania wszystkich zmian lokalnych dokonanych w trybie offline - nie tylko plików, które mogą wymagać dodania, ale także plików, które mogą wymagać usunięcia lub które zostały zmienione bez otwierania do edycji za pomocą programu
p4 edit
, jestp4 reconcile -n
.Kilka odpowiedzi zawierało scenariusze, często z udziałem
p4 fstat
. Chociaż nie zweryfikowałem wszystkich tych skryptów, często używam podobnych skryptów, aby nadrobić braki poleceń koniecznych, takich jakp4 reconcile -n
Perforce, - np. Często stwierdzam, że wolę ścieżki lokalne niż ścieżki magazynu Perforce lub ścieżki obszaru roboczego.--- + OSTRZEŻENIE
p4 status
NIE jest odpowiednikiem poleceń stanu w innych systemach kontroli wersji.p4 status
NIE jest zapytaniem tylko do odczytu.p4 status
faktycznie znajduje ten sam rodzaj zmian, cop4 reconcile
robi, i dodaje je do repozytorium.p4 status
nie wydaje się mieć-n
opcji uruchomienia na sucho, jakp4 reconcile
ma.Jeśli tak
p4 status
, spójrz na pliki i pomyśl „Och, nie potrzebuję ich”. Będzieszp4 revert
je musiał, jeśli chcesz kontynuować edycję w tym samym obszarze roboczym. W przeciwnym razie zmianyp4 status
dodane do zestawu zmian zostaną sprawdzone następnym razem.Wydaje się, że jest niewiele lub nie ma powodu do używania
p4 status
zamiastp4 reconcile -n
, z wyjątkiem niektórych szczegółów dotyczących lokalnego obszaru roboczego w porównaniu z nazwą ścieżki magazynu.Mogę sobie tylko wyobrazić, że ktokolwiek wybrał „status” dla polecenia nie tylko do odczytu, miał ograniczoną znajomość języka angielskiego i innych narzędzi kontroli wersji.
--- +
P4V
GUIW graficznym interfejsie użytkownika
p4v
polecenie uzgadniania znajduje lokalne zmiany, które mogą wymagać dodania, usunięcia lub otwarcia do edycji. Na szczęście nie dodaje ich domyślnie do listy zmian; ale nadal możesz chcieć uważać, aby zamknąć okno uzgadniania po sprawdzeniu go, jeśli nie chcesz zatwierdzać zmian.źródło
W moim narzędziu używam następującego narzędzia, które tworzy kopie zapasowe wszystkich plików w obszarze roboczym, które różnią się od repozytorium (dla systemu Windows). Obsługuje kilka dziwnych przypadków, których Perforce nie lubi, takich jak osadzone spacje, gwiazdki, procenty i znaki hash:
„ dir / S / B / AD ” wyświetla listę wszystkich plików znajdujących się w tym folderze lub poniżej tego folderu ( / S ) w „gołym” formacie ( / B ), z wyłączeniem katalogów (/ AD ). " Sed " zmienia niebezpieczne znaki do ich postaci " % xx " (a la HTML), a polecenie " p4 have " sprawdza tę listę (" -x- ") pod kątem tego, czy serwer odrzuca wszystko o plikach, które faktycznie lokalizuje w repozytorium („ 1> NUL: ”). Rezultatem jest kilka linii, takich jak:
Gotowe!
źródło
Alternatywnie z P4Win, użyj opcji "Pliki lokalne nie są w magazynie" na lewym panelu widoku.
Nie używam dużo P4V, ale myślę, że odpowiednikiem jest wybranie "Ukryj lokalne pliki obszaru roboczego" z listy rozwijanej filtru na karcie widoku obszaru roboczego. P4 pomoc fstat
W P4V 2015.1 znajdziesz te opcje pod przyciskiem filtru w ten sposób:
źródło
Quick 'n Dirty: W p4v kliknij prawym przyciskiem myszy folder, o którym mowa, i dodaj wszystkie pliki znajdujące się pod nim do nowej listy zmian. Lista zmian będzie teraz zawierać wszystkie pliki, które obecnie nie są częścią składu.
źródło
Następujące polecenia generują wyjście podobne do statusu, ale żadne nie jest w pełni równoważne z
svn status
lubgit status
, dostarczając jednowierszowe podsumowanie statusu każdego pliku:p4 status
p4 opened
p4 diff -ds
źródło
Nie mam wystarczającej liczby punktów reputacji do komentowania, ale rozwiązanie Rossa zawiera również listę plików, które można dodać. Prawdopodobnie nie chcesz używać jego odpowiedzi do czyszczenia swojego obszaru roboczego.
Następujące zastosowania
p4 fstat
(dzięki Mark Harrison) zamiastp4 have
i wymienia pliki, których nie ma w magazynie i nie są otwarte do dodania.=== Jac
źródło
Metoda szybka, ale mało ortodoksyjna. Jeśli baza kodu nie dodaje nowych plików / nie zmienia widoku zbyt często, możesz utworzyć lokalne repozytorium „git” poza kasą. Od czystej synchronizacji perforce, git init, dodawaj i zatwierdzaj wszystkie pliki lokalnie. Status Git jest szybki i pokaże pliki, które nie zostały wcześniej zatwierdzone.
źródło
p4 fstat
Polecenie pozwala sprawdzić, czy plik istnieje w obszarze roboczym, połączyć zfind
zlokalizować pliki, aby sprawdzić, jak w poniższym przykładzie Perl:Lub możesz użyć
p4 reconcile -n -m ...
Jeśli jest „otwarty do usunięcia”, oznacza to, że został usunięty z obszaru roboczego. Zauważ, że powyższe polecenie działa w trybie podglądu (
-n
).źródło
Potrzebowałem czegoś, co działałoby na Linuksie, Macu lub Windowsie. Więc napisałem dla niego skrypt w Pythonie. Podstawową ideą jest iteracja plików i wykonanie
p4 fstat
na każdym z nich. (oczywiście ignorując zależności i foldery tmp)Znajdziesz go tutaj: https://gist.github.com/givanse/8c69f55f8243733702cf7bcb0e9290a9
źródło
To polecenie może dać ci listę plików, które należy dodać, edytować lub usunąć:
p4 status -aed ...
możesz ich również używać osobno
p4 status -a ...
p4 status -e ...
p4 status -d ...
źródło
W P4V, w pozycji menu „Widok” wybierz „Pliki w folderze”, co spowoduje wyświetlenie nowej karty w prawym panelu. Po prawej stronie zakładek znajduje się mała ikona, która wyświetla okno „Pliki w folderze” z 2 ikonami. Wybierz lewą ikonę, która wygląda jak lejek, a zobaczysz kilka opcji. Wybierz opcję „Pokaż elementy, których nie ma w magazynie”, a wszystkie pliki w folderze zostaną wyświetlone. Następnie kliknij prawym przyciskiem myszy plik, który chcesz dodać i wybierz „Oznacz do dodania ...”. Możesz to sprawdzić w zakładce „Oczekujące”. Po prostu prześlij jak zwykle (Ctrl + S).
źródło