it-swarm-eu.dev

Jak mohu soubory Subversion ignorovat?

Jak mohu soubory Subversion ignorovat?

Jak zjistím soubory, které nejsou pod kontrolou verze?

589
andyuk

(Tato odpověď byla aktualizována tak, aby odpovídala chování SVN 1.8 a 1.9)

Máte 2 otázky:

Označení souborů jako ignorovaných:

"Ignorovaný soubor" Myslím, že soubor se nezobrazí v seznamech ani jako "unversioned": váš klient SVN bude předstírat, že soubor v souborovém systému vůbec neexistuje.

Ignorované soubory jsou určeny "vzorem souborů". Syntaxe a formát vzorů souborů jsou popsány v online dokumentaci SVN: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "Vzorky souborů v Subversion ".

Subversion od verze 1.8 (červen 2013) a novější podporuje 3 různé způsoby určení vzorů souborů. Zde je přehled příkladů:

1 - Runtime Configuration Area - volba global-ignores:

  • Toto je nastavení client-only, takže váš seznam global-ignores nebude sdílen ostatními uživateli a bude platit pro všechny repo operace, které jste provedli v počítači.
  • Toto nastavení je definováno v souboru Runtime Configuration Area:
    • Windows (založené na souborech) - C:\Users\{you}\AppData\Roaming\Subversion\config
    • Windows (založené na registru) - Software\Tigris.org\Subversion\Config\Miscellany\global-ignores v obou HKLM a HKCU.
    • Linux/Unix - ~/.Subversion/config

2 - Vlastnost svn:ignore, která je nastavena v adresářích (nikoli v souborech):

  • To je uloženo v repo, takže ostatní uživatelé budou mít stejné soubory ignorovat. Podobný jak .gitignore práce.
  • svn:ignore je použito pro adresáře a není rekurzivní nebo zděděné. Jakýkoli soubor nebo podadresář okamžitý nadřazeného adresáře, který odpovídá vzoru souboru, bude vyloučen.
  • Zatímco SVN 1.8 přidává koncept "zděděných vlastností", vlastnost svn:ignore samotná je ignorována v adresářích, které nejsou bezprostřední:

    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že soubor ./subdirectory/ignoreThis není ignorován, i když je ignoreThis.txt "aplikováno na . repo root).

  • Pro rekurzivní použití seznamu ignorovaných proto musíte použít svn propset svn:ignore <filePattern> . --recursive.

    • Tím vytvoříte kopii vlastnosti v každém podadresáři.
    • Pokud je hodnota <filePattern> v podřízeném adresáři odlišná, potom hodnota dítěte zcela přepíše rodiče, takže neexistuje žádný "aditivní" efekt.
    • Pokud tedy změníte <filePattern> na kořenovém adresáři ., musíte jej změnit pomocí --recursive, abyste jej přepsali v adresářích potomků a potomků.
  • Všiml jsem si, že syntaxe příkazového řádku je proti intuitivní.

    • Začal jsem vypínat za předpokladu, že byste soubor v SVN ignorovali zadáním něco jako svn ignore pathToFileToIgnore.txt, ale to není to, co funkce SVN ignoruje.

3- Vlastnost svn:global-ignores. Vyžaduje SVN 1.8 (červen 2013):

  • To je podobné jako svn:ignore, kromě toho, že využívá funkci "zděděných vlastností" SVN 1.8.
  • Ve srovnání s svn:ignore se vzor souboru automaticky aplikuje v každém adresáři potomků (ne pouze bezprostředních dětí).
    • To znamená, že není nutné nastavit svn:global-ignores s příznakem --recursive, protože vzory zděděných ignorovaných souborů jsou automaticky aplikovány, jak jsou zděděny.
  • Spuštění stejné sady příkazů jako v předchozím příkladu, ale místo toho pomocí 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!
    

Pro uživatele TortoiseSVN:

Toto celé uspořádání bylo pro mě matoucí, protože terminologie TortoiseSVN (jak je používána v jejich systému Windows Explorer) byla pro mě zpočátku zavádějící - nebyl jsem si jistý, jaký je význam nabídky Ignorovat "Přidat rekurzivně", "Přidat" a "Přidat". možností. Doufám, že tento příspěvek vysvětlí, jak se funkce Ignorovat připojuje k funkci Vlastnosti SVN. To znamená, že doporučuji použít příkazový řádek k nastavení ignorovaných souborů, abyste měli pocit, jak to funguje místo použití grafického uživatelského rozhraní, a pouze pomocí grafického uživatelského rozhraní můžete manipulovat s vlastnostmi poté, co budete spokojeni s příkazovým řádkem.

Výpis souborů, které jsou ignorovány:

Příkaz svn status skryje ignorované soubory (tj. Soubory, které odpovídají vzoru RGA global-ignores, nebo odpovídají přímému svn:ignore vzoru nadřazeného adresáře nebo odpovídá libovolnému vzoru svn:global-ignores adresáře adresáře ancesoru).

Volba --no-ignore zobrazí tyto soubory. Ignorované soubory mají status I, pak výstup do grep zařadí pouze do řádků začínajících na "I".

Příkaz je:

svn status --no-ignore | grep "^I"

Například:

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!

690
andyuk

Pomocí následujícího příkazu vytvořte seznam, který není pod soubory pro správu verzí.

svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt

Pak upravte soubor do ponechte jen soubory, které chcete skutečně ignorovat . Pak použijte tento k ignorování souborů uvedených v souboru:

svn propset svn:ignore -F ignoring.txt .

Všimněte si tečky na konci řádku. Říká SVN, že vlastnost je nastavena v aktuálním adresáři.

Smazat soubor:

rm ignoring.txt

Nakonec se dopustit,

svn ci --message "ignoring some files"

Potom můžete zkontrolovat, které soubory jsou ignorovány prostřednictvím:

svn proplist -v
76
ulitosCoder

Pokud používáte TortoiseSVN , klepněte pravým tlačítkem myši na soubor a vyberte TortoiseSVN/Add to ignore list. Přidá se soubor/zástupný znak do vlastnosti svn:ignore.

svn:ignore bude zkontrolováno při kontrole souborů a odpovídající soubory budou ignorovány. Mám následující seznam ignorovat pro projekt Visual Studio .NET:

bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo

Tento seznam naleznete v kontextovém menu v menu TortoiseSVN/Properties.

47
artur02

Soubor nebo adresář můžete ignorovat jako .gitignore. Stačí vytvořit textový soubor se seznamem adresářů/souborů, které chcete ignorovat, a spustit níže uvedený kód:

svn propset svn:ignore -F ignorelist.txt .

Nebo pokud nechcete používat textový soubor, můžete to udělat takto:

svn propset svn:ignore "first
 second
 third" .

Zdroj: Karstenův blog - Nastavit svn: ignore pro více souborů z příkazového řádku

36
Adrian Enriquez

Našel jsem článek .svnignore Příklad Java.

Příklad: .svnignore pro Ruby on Rails,

/log

/public/*.JPEG
/public/*.jpeg
/public/*.png
/public/*.gif

*.*~

A poté:

svn propset svn:ignore -F .svnignore .

Příklady pro .gitignore. Můžete použít pro svůj .svnignore

https://github.com/github/gitignore

21
d.danailov

Jak se zdá, že o tom nikdo neřekl ...

svn propedit svn:ignore .

Poté upravte obsah souboru a určete vzory, které chcete ignorovat, ukončete editor a jste hotovi.

15
Yorick

Při použití propeditu se ujistěte, že nemáte žádné koncové mezery, protože to způsobí vyloučení souboru ze seznamu ignorovaných.

Tyto soubory se automaticky vloží, pokud na Linuxu vytvoříte soubor, který má začít, pomocí karty autocomplete:

svn propset svn:ignore 'file1
file2' .
10
Kenneth

Dalším řešením je:

svn st | awk '/^?/{print $2}' > svnignore.txt && svn propget svn:ignore >> svnignore.txt && svn propset svn:ignore -F svnignore.txt . && rm svnignore.txt

nebo řádek po řádku

svn st | awk '/^?/{print $2}' > svnignore.txt 
svn propget svn:ignore >> svnignore.txt 
svn propset svn:ignore -F svnignore.txt . 
rm svnignore.txt

Co to dělá:

  1. Získá stavové soubory ze svn
  2. Uloží všechny soubory pomocí? do souboru "svnignore.txt"
  3. Získá již ignorované soubory a připojí je k souboru "svnignore.txt"
  4. Říká svn, aby soubory v "svnignore.txt" ignoroval
  5. Odstraní soubor
8
bkbilly

Pokud také používáte Tortoise SVN, můžete to provést:

  1. V kontextovém menu vyberte "TortoiseSVN", pak "Vlastnosti"
  2. V zobrazeném okně klikněte na tlačítko Nový a potom na tlačítko Upřesnit.
  3. V zobrazeném okně naproti "Název vlastnosti" vyberte nebo zadejte "svn: ignore", naproti "Hodnota vlastnosti" zadejte požadovaný název souboru nebo název složky nebo masku souboru (v mém případě to bylo "*/cíl"), klikněte na "Použít vlastnost rekurzivně "
  4. OK. OK.
  5. Spáchat
7
msangel

Čitelnější verze odpověď 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 to dělá:

  1. Získá stavové soubory ze svn
  2. Uloží všechny soubory pomocí ? do souboru "svnignore.txt"
  3. Získá již ignorované soubory a připojí je k souboru "svnignore.txt"
  4. Říká svn, aby soubory v "svnignore.txt" ignoroval
  5. Odstraní soubor
5
LivingDust
  1. cd ~/.Subversion
  2. otevřít config
  3. najít řádek jako 'global-ignores'
  4. set ignore typ souboru takto: global-ignores = * .o * .lo * .la * .al .libs * .so .so [0-9] * .pyc * .pyo. ] 88 * .rej ~ # #. # *. *. Swp .DS_Store node_modules výstup
4
范陆离

SVN ignore lze snadno spravovat v TortoiseSVN. Otevřete TortoiseSVN a klikněte pravým tlačítkem myši na nabídku souboru a vyberte možnost Přidat do seznamu ignorovaných.

Tím se přidají soubory do vlastnosti svn:ignore. Když v souborech zkontrolujeme soubory, které jsou uzavřeny s svn:ignore, které budou ignorovány a nebudou potvrzeny.

V projektu Visual Studio jsme přidali následující soubory, které mají být ignorovány:

bin obj
*.exe
*.dll
*.pdb
*.suo

Spravujeme zdrojový kód na SVN z Comparetrap pomocí této metody úspěšně

3
Slack

svn status vám řekne, které soubory nejsou v SVN, stejně jako to, co se změnilo.

Podívejte se na vlastnosti SVN pro vlastnost ignore.

Pro všechny věci SVN, Červená kniha je požadováno čtení.

3
DGM

Globální vzor ignorování můžete také nastavit v konfiguračním souboru SVN.

3
petr k.

Přidání adresáře do Subversion a ignorování obsahu adresáře

svn propset svn:ignore '\*.*' .

nebo

svn propset svn:ignore '*' .
3
Al Conrad

Pomocí příkazu svn status na pracovní kopii zobrazte stav souborů, soubory, které ještě nejsou pod kontrolou verzí (a nejsou ignorovány), budou mít vedle nich otazník.

Pokud jde o ignorování souborů, je třeba upravit vlastnost svn: ignore, přečtěte si kapitolu Ignorování položek Unversioned ve svnbook na adrese http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special. ignore.html . Kniha také popisuje více o použití stavu svn.

2
  1. otevřete používáte produkt JetBrains (tj. Pycharm)
  2. pak klikněte na tlačítko 'commit' na horním panelu nástrojů nebo použijte zkratku 'ctrl + k' screenshot_toolbar
  3. na rozhraní pro odevzdání přesuňte nepotřebné soubory do jiného seznamu změn následujícím způsobem: screenshot_commit_change
  4. příště můžete provést pouze výchozí seznam změn.
0
G. Googol