Jak mogę ignorować pliki w Subversion?

Jak ignorować pliki w Subversion?

Również, jak znaleźć pliki, które nie są pod kontrolą wersji?

 565
Author: Peter Mortensen, 2008-09-17

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 w HKLM, jak i HKCU.
    • Linux / Unix - ~/.subversion/config

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.

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.
  • 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!

 671
Author: andyuk,
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
 73
Author: ulitosCoder,
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 .

 46
Author: artur02,
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

 35
Author: Adrian Enriquez,
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

Https://github.com/github/gitignore

 21
Author: d.danailov,
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.

 11
Author: Yorick,
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' .
 10
Author: Kenneth,
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:

  1. pobiera pliki statusu z svn
  2. zapisuje wszystkie pliki za pomocą ? do pliku " svnignore.txt "
  3. pobiera już ignorowane pliki i dodaje je do pliku " svnignore.txt "
  4. mówi svn, aby zignorował pliki w " svnignore.txt "
  5. usuwa plik
 8
Author: bkbilly,
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ć:

  1. w menu kontekstowym wybierz "TortoiseSVN", a następnie "Properties"
  2. w pojawiającym się oknie kliknij "New", a następnie "Advanced"
  3. 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"
  4. Ok. Ok.
  5. Commit
 6
Author: msangel,
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:

  1. pobiera pliki statusu z svn
  2. zapisuje wszystkie pliki za pomocą ? do pliku " svnignore.txt "
  3. pobiera już ignorowane pliki i dodaje je do pliku " svnignore.txt "
  4. mówi svn, aby zignorował pliki w " svnignore.txt "
  5. usuwa plik
 5
Author: LivingDust,
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.

 3
Author: petr k.,
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.

 3
Author: DGM,
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 '*' .
 3
Author: Al Conrad,
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
  1. cd~/.subversion
  2. open config
  3. znajdź linię w stylu 'global-ignores'
  4. 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
 3
Author: 范陆离,
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

 3
Author: Slack,
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.

 2
Author: Andreas Holstenson,
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
  1. Otwórz używasz Produktu JetBrains (np. Pycharm)
  2. następnie kliknij przycisk 'Zatwierdź' na górnym pasku narzędzi lub użyj skrótu 'ctrl + k' screenshot_toolbar
  3. w interfejsie zatwierdzania przenieś niechciane pliki do innej listy zmian w następujący sposób. screenshot_commit_change
  4. następnym razem możesz zatwierdzić tylko domyślną listę zmian.
 0
Author: G. Googol,
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