Czasami używam funkcji „Uzgodnij pracę w trybie offline ...” znajdującej się w środowisku P4V IDE firmy Perforce, aby zsynchronizować wszystkie pliki, nad którymi pracowałem, będąc odłączonym od magazynu P4. Uruchamia kolejne okno, które wykonuje „Folder Diff”.
Mam pliki, których nigdy nie chcę wpisywać do kontroli źródła (takie jak te znalezione w folderze bin, takie jak biblioteki DLL, wygenerowany kod itp.) Czy istnieje sposób na odfiltrowanie tych plików / folderów, aby nie pojawiały się jako „nowe”, które mogą być dodany. Mają tendencję do zaśmiecania listy plików, którymi jestem naprawdę zainteresowany. Czy P4 ma odpowiednik funkcji „ignoruj plik” Subversion?
version-control
perforce
ignore
Promień
źródło
źródło
Odpowiedzi:
Od wersji 2012.1 Perforce obsługuje
P4IGNORE
zmienną środowiskową. Zaktualizowałem swoją odpowiedź na to pytanie dotyczące ignorowania katalogów o wyjaśnienie, jak to działa. Wtedy zauważyłem tę odpowiedź, która jest teraz chyba zbyteczna.Zakładając, że masz klienta o nazwie „CLIENT”, katalog o nazwie „foo” (znajdujący się w katalogu głównym projektu) i chcesz zignorować wszystkie pliki .dll w tym drzewie katalogów, możesz dodać następujące wiersze do widoku obszaru roboczego, aby wykonać to:
Pierwsza linia usuwa je z katalogu „foo”, a druga linia usuwa je ze wszystkich podkatalogów. Teraz, kiedy „Uzgodnij pracę w trybie offline…”, wszystkie pliki .dll zostaną przeniesione do folderów „Pliki wykluczone” na dole ekranu porównania folderów. Będą ci z drogi, ale nadal będą mogli je przeglądać i manipulować, jeśli naprawdę potrzebujesz.
Możesz również zrobić to w inny sposób, co zredukuje folder „Pliki wykluczone” do jednego, ale nie będziesz w stanie manipulować żadnym z plików, które zawiera, ponieważ ścieżka będzie uszkodzona (ale jeśli chcesz je usunąć na swój sposób, to nie ma znaczenia).
źródło
Reconcile Offline Work
oknie dialogowym. Działa, jeśli otworzysz go w środku,Advanced Reconcile...
ale jest to bezużyteczne, ponieważ w 99,9% przypadków nie potrzebujesz lub nie chcesz korzystać z zaawansowanego okna dialogowego.Tak ale.
Perforce w wersji 2012.1 dodał funkcję znaną jako p4ignore , zainspirowaną Git. Jednak programiści Perforce wprowadzili zmianę w zachowaniu bez uzasadnienia, co sprawia, że funkcja jest znacznie mniej użyteczna.
Podczas gdy Git pobiera reguły ze wszystkich
.gitignore
plików, Perforce nie wie, gdzie szukać, dopóki nie określisz nazwy pliku w zmiennej środowiskowejP4IGNORE
. Ta wolność jest przekleństwem. Nie możesz włamać się do dwóch repozytoriów, które używają różnych nazw dla swoich plików ignorujących.Ponadto funkcja ignorowania Perforce nie działa prawidłowo. Możesz to skonfigurować wystarczająco łatwo dla siebie, ale inni nie skorzystają na tym, chyba że wyraźnie się zgodzą. Kontrybutor, który tego nie zrobił, może przypadkowo przesłać niepożądane pliki (np.
bin
Folder utworzony przez skrypt budowania).Funkcja ignorowania w Git jest świetna, ponieważ działa od razu. Jeśli
.gitignore
pliki zostaną dodane do repozytorium ( wszyscy to zrobią), będą one dla wszystkich opracowane. Nikt przypadkowo nie opublikuje swojego klucza prywatnego.Co zabawne, dokumentacja Perforce pokazuje „.p4ignore” jako przykład ignorowania reguły, która jest odwrotna! Jeśli reguły są przydatne, należy je udostępnić w ramach repozytorium.
Perforce wciąż może zrobić coś dobrego na tej funkcji. Wybierz konwencję nazw plików, powiedzmy
p4ignore.txt
, aby funkcja działała jak należy. PorzućP4IGNORE
zmienną środowiskową, to przynosi efekt przeciwny do zamierzonego. Edytuj dokumenty, aby zachęcić programistów do udostępniania przydatnych reguł. Pozwól użytkownikom zapisywać osobiste reguły w pliku w ich folderze domowym, tak jak robi to Git .Jeśli znasz kogoś w Perforce, napisz do niego ten post.
źródło
Działa to od wersji Perforce 2013.1, nowy mechanizm P4IGNORE został po raz pierwszy dodany w wersji 2012.1, opisany na blogu Perforce tutaj:
Zgodnie z obecnym opisem, ustawiasz zmienną środowiskową „P4IGNORE” na nazwę pliku, która zawiera listę plików do zignorowania.
Możesz więc to sprawdzić, aby zobaczyć, jak Ci się podoba.
źródło
Jeśli potrzebujesz rozwiązania, które będzie miało zastosowanie do wszystkich obszarów roboczych bez konieczności kopiowania, ty (lub twój administrator systemu) możesz odmówić przesłania tych typów plików, używając linii takich jak poniżej w tabeli ochrony p4:
Pamiętam, że robiłem to wcześniej, ale nie mam niezbędnych uprawnień, aby to tutaj przetestować. Sprawdź przewodnik Perforce Sysadmin i wypróbuj go
źródło
Perforce Streams znacznie ułatwia ignorowanie plików od wersji 2011.1. Zgodnie z dokumentacją możesz zignorować niektóre rozszerzenia lub określone ścieżki w swoim katalogu.
Z
p4 help stream
To zasadniczo robi to, co określa odpowiedź @ raven, ale jest łatwiejsze w przypadku strumieni, ponieważ automatycznie propaguje się do każdego obszaru roboczego przy użyciu tego strumienia. Dotyczy to również wszystkich strumieni dziedziczących po strumieniu, w którym określisz typy ignorowania.
Możesz edytować strumień,
p4 stream //stream_depot/stream_name
klikając strumień lub klikając go prawym przyciskiem myszy w widoku strumienia p4v.Jak zauważył @svec, możliwość określania ignorowania plików dla każdego obszaru roboczego pojawi się wkrótce i jest w rzeczywistości w P4 2012.1 beta.
źródło
Propozycja Willa dotycząca używania
.p4ignore
wydaje się działać tylko z wtyczką WebSphere Studio (P4WSAD). Właśnie wypróbowałem to na moim lokalnym oknie Windows i żadne pliki i katalogi, które wymieniłem, nie zostały zignorowane.Sugestia Ravena dotycząca modyfikacji specyfikacji klienta jest właściwą drogą w Perforce. Właściwa organizacja Twojego kodu / danych / plików wykonywalnych i wygenerowanych plików wyjściowych znacznie ułatwi proces wykluczania plików z wpisywania.
Bardziej drakońskim podejściem jest to, że zawsze możesz napisać wyzwalacz przesyłania, który odrzuci przesłanie list zmian, jeśli zawierają one określony plik lub pliki z określonym rozszerzeniem itp.
źródło
HISTORYCZNA ODPOWIEDŹ - już nie jest poprawna. W chwili, gdy to zostało napisane, było to prawdą;
Nie możesz napisać i wpisać pliku, którego serwer użyje do ignorowania reguł; ogólny wzorzec pliku glob lub regexp ignoruje z konieczności.
Inne odpowiedzi mają globalne konfiguracje serwerów, które są globalne (a nie według folderu). Inne odpowiedzi pokazują rzeczy, które mogą zadziałać, jeśli chcesz, aby jeden wiersz w widoku na folder pomnożony przez liczbę rozszerzeń, które chcesz zignorować w tym pojedynczym folderze, lub które zapewniają tę możliwość tylko we wtyczkach WebSphere Studio lub zapewniają możliwość serwera administratorzy, ale niedostępni dla użytkowników.
Krótko mówiąc, uważam, że Perforce jest naprawdę słaby w tej dziedzinie. Chociaż doceniam, że ci, którzy używają wtyczki Eclipse, mogą z niej korzystać
.p4ignore
, i myślę, że to świetnie, pozostawia to tych z nas, którzy tego nie robią, w ciemności.AKTUALIZACJA: Zobacz zaakceptowaną odpowiedź na temat nowej funkcji P4IGNORE dodanej w połowie 2012 roku.
źródło
Wydaje mi się, że najłatwiej jest pogodzić pracę offline za pomocą skryptu BASH, takiego jak ten:
Zaadaptowałem to z tego artykułu bazy wiedzy Perforce .
źródło
Szukam również rozwiązania podobnego do .p4ignore (a nie takiego związanego z konkretnym IDE). Jak dotąd najbliższą rzeczą, jaką znalazłem, jest p4delta. Wygląda na to, że zrobi dokładnie to, o co prosił oryginalny plakat, choć poprzez inną warstwę pośrednictwa.
http://p4delta.sourceforge.net
Niestety, chociaż wydaje się, że tworzy to właściwą listę plików, nie mogę uruchomić "p4delta --execute" ("Nie można zmodyfikować zamrożonego ciągu"), a projekt nie był aktualizowany w ciągu roku. Może inni będą mieli więcej szczęścia.
źródło
Jeśli korzystasz z wtyczki Eclipse Perforce, dokumentacja wtyczki zawiera kilka sposobów ignorowania plików.
źródło