Jak mogę ignorować pliki w Subversion?
Jak ignorować pliki w Subversion?
Również, jak znaleźć pliki, które nie są pod kontrolą wersji?
17 answers
W związku z tym, że nie jest to możliwe, nie jest to możliwe.]}
Masz 2 pytania:
Oznaczanie plików jako ignorowane:
Przez " ignored file "mam na myśli, że plik nie pojawi się na listach nawet jako" unversioned": twój Klient SVN będzie udawał, że plik w ogóle nie istnieje w systemie plików.
Ignorowane pliki są określone przez "wzorzec pliku". Składnia i format wzorców plików są wyjaśnione w dokumentacji online SVN: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "wzorce plików w Subversion".
Subversion, od wersji 1.8 (czerwiec 2013) i późniejszych, obsługuje 3 różne sposoby określania wzorców plików. Oto podsumowanie z przykładami:
1 - Runtime Configuration Area - global-ignores
opcja:
- Jest to ustawienie
- tylko po stronie klienta, więc twoja lista
global-ignores
nie będzie udostępniana innym użytkownikom i dotyczy wszystkich transakcji, na których dokonujesz zakupu Twój komputer. - to ustawienie jest zdefiniowane w pliku Runtime Configuration Area:
- Windows (oparty na plikach) -
C:\Users\{you}\AppData\Roaming\Subversion\config
- Windows (oparty na rejestrze)-
Software\Tigris.org\Subversion\Config\Miscellany\global-ignores
zarówno wHKLM
, jak iHKCU
. - Linux / Unix -
~/.subversion/config
- Windows (oparty na plikach) -
2-właściwość svn:ignore
, która jest ustawiana na katalogach (Nie plikach):
- to jest przechowywane w repo, więc inni użytkownicy będą mieli te same ignorowane pliki. Podobne do tego, jak działa {[12] }.
-
svn:ignore
stosuje się do katalogów i nie jest rekurencyjna lub dziedziczona. Każdy plik lub bezpośredni podkatalog katalogu nadrzędnego, który pasuje do wzorca pliku, zostanie wykluczony. -
W przeciwieństwie do SVN 1.8, własność ta jest ignorowana w katalogach niemających bezpośredniego potomka:
cd ~/myRepoRoot # Open an existing repo. echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt". svn status # Check to see if the file is ignored or not. > ? ./ignoreThis.txt > 1 unversioned file # ...it is NOT currently ignored. svn propset svn:ignore "ignoreThis.txt" . # Apply the svn:ignore property to the "myRepoRoot" directory. svn status > 0 unversioned files # ...but now the file is ignored! cd subdirectory # now open a subdirectory. echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt". svn status > ? ./subdirectory/ignoreThis.txt # ...and is is NOT ignored! > 1 unversioned file
(Tak więc Plik
./subdirectory/ignoreThis
nie jest ignorowany, mimo że "ignoreThis.txt
" jest zastosowany na korzeniu repo.
). -
Dlatego, aby zastosować ignorowanie list recursively musisz użyć
svn propset svn:ignore <filePattern> . --recursive
.- spowoduje utworzenie kopii właściwości w każdym podkatalogu.
- jeśli wartość
<filePattern>
jest inna w katalogu podrzędnym, to wartość dziecka całkowicie nadpisuje rodziców, więc nie ma efektu "addytywnego". - więc jeśli zmienisz
<filePattern>
w katalogu głównym.
, musisz zmienić go za pomocą--recursive
, aby nadpisać go na katalogach potomnych i potomnych.
-
Zauważam, że wiersz poleceń składnia jest intuicyjna.
- zacząłem od założenia, że zignorujesz plik w SVN, wpisując coś w stylu
svn ignore pathToFileToIgnore.txt
, jednak nie tak działa funkcja ignorowania SVN.
- zacząłem od założenia, że zignorujesz plik w SVN, wpisując coś w stylu
3 - własność svn:global-ignores
. Wymaga SVN 1.8 (czerwiec 2013):
- jest to podobne do
svn:ignore
, z tym, że korzysta z funkcji "dziedziczone właściwości" SVN 1.8. - W porównaniu do
svn:ignore
, wzorzec pliku jest automatycznie stosowany w każdym katalogu potomnym (nie tylko bezpośrednie dzieci).- oznacza to, że nie jest konieczne ustawianie {[24] } z flagą
--recursive
, ponieważ dziedziczone wzorce ignorowanych plików są automatycznie stosowane w miarę dziedziczenia.
- oznacza to, że nie jest konieczne ustawianie {[24] } z flagą
-
Uruchomienie tego samego zestawu poleceń, co w poprzednim przykładzie, ale zamiast tego użycie
svn:global-ignores
:cd ~/myRepoRoot # Open an existing repo echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt" svn status # Check to see if the file is ignored or not > ? ./ignoreThis.txt > 1 unversioned file # ...it is NOT currently ignored svn propset svn:global-ignores "ignoreThis.txt" . svn status > 0 unversioned files # ...but now the file is ignored! cd subdirectory # now open a subdirectory echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt" svn status > 0 unversioned files # the file is ignored here too!
Dla użytkowników TortoiseSVN:
Ten cały układ był dla mnie mylący, ponieważ Terminologia TortoiseSVN (używana w menu Eksploratora Windows system) początkowo wprowadzał mnie w błąd - nie byłem pewien, jakie znaczenie mają Opcje "Dodaj rekurencyjnie", "Dodaj *" i "Dodaj" menu Ignoruj. Mam nadzieję, że ten post wyjaśnia, w jaki sposób funkcja Ignoruj łączy się z funkcją właściwości SVN. To powiedziawszy, sugeruję użycie wiersza poleceń do ustawiania ignorowanych plików, aby poczuć, jak to działa, zamiast używać GUI, i tylko używając GUI do manipulowania właściwościami po tym, jak czujesz się komfortowo z wierszem poleceń.
Lista plików, które są ignorowane:
Polecenie svn status
ukryje ignorowane Pliki (to znaczy pliki, które pasują do wzorca RGA global-ignores
, lub pasują do wzorca katalogu nadrzędnego svn:ignore
lub pasują do wzorca dowolnego katalogu przodków svn:global-ignores
.
Użyj opcji --no-ignore
, aby zobaczyć te pliki na liście. Ignorowane pliki mają status I
, a następnie przełącz wyjście na grep
, aby wyświetlać tylko linie zaczynające się od "I".
Komenda brzmi:
svn status --no-ignore | grep "^I"
Na przykład:
svn status
> ? foo # An unversioned file
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore
> ? foo # An unversioned file
> I ignoreThis.txt # A file matching an svn:ignore pattern
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore | grep "^I"
> I ignoreThis.txt # A file matching an svn:ignore pattern
Ta-da!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-13 13:40:47
Użyj następującego polecenia, aby utworzyć listę, która nie znajduje się w plikach kontroli wersji.
svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt
Następnie Edytuj plik do pozostaw tylko te pliki, które chcesz zignorować . Następnie użyj tego, aby zignorować pliki wymienione w pliku:
svn propset svn:ignore -F ignoring.txt .
Zwróć uwagę na kropkę na końcu wiersza. Informuje SVN, że właściwość jest ustawiana w bieżącym katalogu.
Usuń plik:
rm ignoring.txt
Wreszcie commit,
svn ci --message "ignoring some files"
Możesz następnie sprawdzić, które pliki są ignorowane via:
svn proplist -v
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-30 13:39:27
Jeśli używasz TortoiseSVN , Kliknij prawym przyciskiem myszy plik, a następnie wybierz TortoiseSVN / Dodaj do listy ignorowanych. Spowoduje to dodanie pliku / wildcard do Właściwości svn:ignore
.
svn:ignore
będą sprawdzane podczas sprawdzania plików, a dopasowane pliki będą ignorowane. Mam następującą listę ignorowanych dla projektu Visual Studio. NET:
bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo
Możesz znaleźć tę listę w menu kontekstowym pod adresem TortoiseSVN / Properties .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-28 16:56:51
Możesz zignorować plik lub katalog jak .gitignore
. Po prostu utwórz plik tekstowy z listą katalogów / plików, które chcesz zignorować i uruchom poniższy kod:
svn propset svn:ignore -F ignorelist.txt .
Lub jeśli nie chcesz używać pliku tekstowego, możesz to zrobić w następujący sposób:
svn propset svn:ignore "first
second
third" .
Źródło: Karsten ' s Blog-Set svn: ignore for multiple files from command line
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-05 20:13:35
Znalazłem artykuł .przykład svnignore dla Javy.
Przykład: .svnignore dla Ruby on Rails,
/log
/public/*.JPEG
/public/*.jpeg
/public/*.png
/public/*.gif
*.*~
A potem:
svn propset svn:ignore -F .svnignore .
Przykłady dla .gitignore. Możesz użyć dla swojego .svnignore
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-15 16:23:42
Jak się wydaje, nikt o tym nie wspominał...
svn propedit svn:ignore .
Następnie Edytuj zawartość pliku, aby określić wzorce do zignorowania, WYJDŹ z edytora i gotowe.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-26 21:37:07
Podczas używania propedit upewnij się, że nie ma spacji końcowych, ponieważ spowoduje to wykluczenie pliku z listy ignorowanych.
Są one wstawiane automatycznie, jeśli używasz tab-autocomplete w Linuksie, aby utworzyć plik zaczynający się od:
svn propset svn:ignore 'file1
file2' .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-01 13:54:11
Innym rozwiązaniem jest:
svn st | awk '/^?/{print $2}' > svnignore.txt && svn propget svn:ignore >> svnignore.txt && svn propset svn:ignore -F svnignore.txt . && rm svnignore.txt
Lub linia po linii
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
Co robi:
- pobiera pliki statusu z svn
- zapisuje wszystkie pliki za pomocą ? do pliku " svnignore.txt "
- pobiera już ignorowane pliki i dodaje je do pliku " svnignore.txt "
- mówi svn, aby zignorował pliki w " svnignore.txt "
- usuwa plik
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-01 02:00:34
Również, jeśli używasz Tortoise SVN możesz to zrobić:
- w menu kontekstowym wybierz "TortoiseSVN", a następnie "Properties"
- w pojawiającym się oknie kliknij "New", a następnie "Advanced"
- w oknie naprzeciwko "Property name" wybierz lub wpisz "svn: ignore", naprzeciwko "Property value" wpisz żądaną nazwę pliku lub nazwę folderu lub maskę pliku (w moim przypadku było to "*/target"), Kliknij "Apply property recursively" Ok. Ok.
- Commit
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-14 17:32:45
Bardziej czytelna Wersja odpowiedź bkbilly:
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
Co robi:
- pobiera pliki statusu z svn
- zapisuje wszystkie pliki za pomocą ? do pliku " svnignore.txt "
- pobiera już ignorowane pliki i dodaje je do pliku " svnignore.txt "
- mówi svn, aby zignorował pliki w " svnignore.txt "
- usuwa plik
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-14 17:31:58
Możesz również ustawić globalny wzorzec ignorowania w pliku konfiguracyjnym SVN.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 18:18:16
svn status
powie Ci, które pliki nie są w SVN, a także co się zmieniło.
Spójrz na właściwości SVN dla właściwości ignoruj.
Dla wszystkich rzeczy SVN, Czerwona Księga jest wymagana lektura.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-15 16:20:37
Dodawanie katalogu do subversion i ignorowanie zawartości katalogu
svn propset svn:ignore '\*.*' .
Lub
svn propset svn:ignore '*' .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-05 20:13:00
- cd~/.subversion
- open config
- znajdź linię w stylu 'global-ignores'
- Ustaw ignorowany Typ pliku w następujący sposób: global-ignores =*.o *.lo*. la*. al.libs*. so . so.[0-9] *.pyc *.pyo 88 *.rej ~ ## .#* .*.swp .DS_STORE node_modules output
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-11 09:54:37
SVN ignore
jest łatwy do zarządzania w TortoiseSVN. Otwórz TortoiseSVN i kliknij prawym przyciskiem myszy na menu plik, a następnie wybierz Dodaj do listy ignorowanych.
Spowoduje dodanie plików we właściwości svn:ignore
.
Kiedy sprawdzamy pliki, wtedy te pliki, które są dopasowane do svn:ignore
, zostaną zignorowane i nie zostaną zatwierdzone.
W projekcie Visual Studio dodaliśmy następujące pliki do zignorowania:
bin obj
*.exe
*.dll
*.pdb
*.suo
Zarządzamy kodem źródłowym na SVN z Comparetrap używając tej metody z powodzeniem
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-06 11:11:56
Użyj polecenia SVN status na swojej kopii roboczej, aby wyświetlić status plików, pliki, które nie są jeszcze pod kontrolą wersji (i nie są ignorowane) będą miały znak zapytania obok nich.
Jeśli chodzi o ignorowanie plików musisz edytować właściwość svn: ignore, przeczytaj rozdział ignorowanie niezweryfikowanych pozycji w svnbook pod adresem http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.ignore.html . książka opisuje również więcej o używaniu statusu svn.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-17 18:19:39
- Otwórz używasz Produktu JetBrains (np. Pycharm)
- następnie kliknij przycisk 'Zatwierdź' na górnym pasku narzędzi lub użyj skrótu 'ctrl + k' screenshot_toolbar
- w interfejsie zatwierdzania przenieś niechciane pliki do innej listy zmian w następujący sposób. screenshot_commit_change
- następnym razem możesz zatwierdzić tylko domyślną listę zmian.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-06 06:00:35