Come faccio a ignorare i file in Subversion?
Inoltre, come posso trovare file che non sono sotto il controllo della versione?
Come faccio a ignorare i file in Subversion?
Inoltre, come posso trovare file che non sono sotto il controllo della versione?
Risposte:
(Questa risposta è stata aggiornata per corrispondere al comportamento di SVN 1.8 e 1.9)
Hai 2 domande:
Per "file ignorato" intendo che il file non apparirà negli elenchi anche come "non verificato": il tuo client SVN farà finta che il file non esista affatto nel filesystem.
I file ignorati sono specificati da un "modello di file". La sintassi e il formato dei pattern di file sono spiegati nella documentazione online di SVN: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "Pattern di file in Subversion".
Subversion, dalla versione 1.8 (giugno 2013) e successive, supporta 3 modi diversi di specificare i modelli di file. Ecco un riepilogo con esempi:
global-ignoresopzione:global-ignores elenco non sarà condiviso da altri utenti e si applica a tutti i repository che fai il checkout sul tuo computer.C:\Users\{you}\AppData\Roaming\Subversion\configSoftware\Tigris.org\Subversion\Config\Miscellany\global-ignoresin entrambi HKLMe HKCU.~/.subversion/configsvn:ignoreproprietà, che è impostata su directory (non file):.gitignorefunziona.svn:ignoreviene applicato alle directory ed è non ricorsivo o ereditato. Qualsiasi file o sottodirectory immediata della directory principale che corrisponde al modello di file verrà escluso.Mentre SVN 1.8 aggiunge il concetto di "proprietà ereditate", la svn:ignoreproprietà stessa viene ignorata nelle directory discendenti non immediate:
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
(Quindi il file ./subdirectory/ignoreThisnon viene ignorato, anche se " ignoreThis.txt" viene applicato alla .radice del repository).
Pertanto, per applicare ricorsivamente un elenco di ignori è necessario utilizzare svn propset svn:ignore <filePattern> . --recursive.
<filePattern>valore è diverso in una directory figlio, il valore del bambino sovrascrive completamente i genitori, quindi non vi è alcun effetto "additivo".<filePattern>root ., è necessario modificarlo con --recursiveper sovrascriverlo nelle directory figlio e discendente.Noto che la sintassi della riga di comando è controintuitiva.
svn ignore pathToFileToIgnore.txttuttavia non è così che funziona la funzione Ignora di SVN.svn:global-ignoresproprietà. Richiede SVN 1.8 (giugno 2013):svn:ignore, tranne per il fatto che utilizza la funzione "proprietà ereditate" di SVN 1.8.svn:ignore, il modello di file viene applicato automaticamente in ogni directory discendente (non solo dei figli immediati).
svn:global-ignorescon il --recursiveflag, poiché i modelli di file ignorati ereditati vengono automaticamente applicati man mano che vengono ereditati.Eseguendo lo stesso set di comandi dell'esempio precedente, ma usando svn:global-ignoresinvece:
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!
L'intero accordo è stato confuso per me, perché la terminologia di TortoiseSVN (come utilizzata nel loro sistema di menu di Windows Explorer) inizialmente mi è stata fuorviante - non ero sicuro del significato del "Aggiungi ricorsivamente", "Aggiungi *" e "Aggiungi" del menu Ignora opzioni. Spero che questo post spieghi come la funzione Ignora si collega alla funzione Proprietà SVN. Detto questo, ti suggerisco di utilizzare la riga di comando per impostare i file ignorati in modo da farti un'idea di come funziona invece di utilizzare la GUI e di utilizzare la GUI solo per manipolare le proprietà dopo che ti senti a tuo agio con la riga di comando.
Il comando svn statusnasconde i file ignorati (ovvero i file che corrispondono a un global-ignoresmodello RGA o corrispondono a un svn:ignoremodello di directory padre immediato o corrispondono a un modello di directory di un antenato svn:global-ignores.
Utilizzare l' --no-ignoreopzione per visualizzare i file elencati. I file ignorati hanno uno stato di I, quindi reindirizzare l'output a grepmostrare solo le righe che iniziano con "I".
Il comando è:
svn status --no-ignore | grep "^I"
Per esempio:
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!
svn propedit svn:ignore .e nessun editor di testo è configurato, riceverai un messaggio di errore che dice svn: E205007: nessuna delle variabili d'ambiente SVN_EDITOR, VISUAL o EDITOR è impostata e nessuna opzione di configurazione di runtime 'editor-cmd' era trovato invece di aprire un editor. Quindi basta specificare --editor-cmd nano in questo modosvn propedit svn:ignore . --editor-cmd nano
svn status | grep '^?'
Utilizzare il comando seguente per creare un elenco non in file di controllo versione.
svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt
Quindi modifica il file per lasciare solo i file che desideri effettivamente ignorare . Quindi utilizzare questo per ignorare i file elencati nel file:
svn propset svn:ignore -F ignoring.txt .
Nota il punto alla fine della riga. Indica a SVN che la proprietà è impostata sulla directory corrente.
Elimina il file:
rm ignoring.txt
Finalmente impegno,
svn ci --message "ignoring some files"
È quindi possibile verificare quali file vengono ignorati tramite:
svn proplist -v
svn status | awk "/^?/ {print \$2}" > ignoring.txt.
svn pg svn:ignore . >> ignore.txtdopo il primo comando per aggiungere gli attuali ignorati al file.
Puoi ignorare un file o una directory come .gitignore. Basta creare un file di testo con un elenco di directory / file che si desidera ignorare ed eseguire il codice seguente:
svn propset svn:ignore -F ignorelist.txt .
OPPURE se non si desidera utilizzare un file di testo, è possibile farlo in questo modo:
svn propset svn:ignore "first
second
third" .
Fonte: Blog di Karsten - Imposta svn: ignora per più file dalla riga di comando
svn:ignorecomando (vedi stackoverflow.com/a/58380306/189518 )
Se si utilizza TortoiseSVN , fare clic con il pulsante destro del mouse su un file e quindi selezionare TortoiseSVN / Aggiungi per ignorare l'elenco . Ciò aggiungerà il file / carattere jolly al filesvn:ignore proprietà.
svn:ignoreverrà verificato quando si esegue il check-in dei file e i file corrispondenti verranno ignorati. Ho il seguente elenco di ignorare per un progetto Visual Studio .NET:
bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo
Puoi trovare questo elenco nel menu contestuale su TortoiseSVN / Proprietà .
Come nessuno sembra averlo menzionato ...
svn propedit svn:ignore .
Quindi modifica il contenuto del file per specificare i motivi da ignorare, esci dall'editor e il gioco è fatto.
Ho trovato l'articolo .svnignore Esempio per Java .
Esempio: .svnignore per Ruby on Rails,
/log
/public/*.JPEG
/public/*.jpeg
/public/*.png
/public/*.gif
*.*~
Dopodiché:
svn propset svn:ignore -F .svnignore .
Esempi per .gitignore. Puoi usarlo per il tuo .svnignore
Quando si utilizza propedit assicurarsi di non avere spazi finali in quanto ciò causerà l'esclusione del file dall'elenco ignora.
Questi vengono inseriti automaticamente se hai usato tab-autocomplete su Linux per creare il file per iniziare:
svn propset svn:ignore 'file1
file2' .
Un'altra soluzione è:
svn st | awk '/^?/{print $2}' > svnignore.txt && svn propget svn:ignore >> svnignore.txt && svn propset svn:ignore -F svnignore.txt . && rm svnignore.txt
o riga per riga
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
Cosa fa:
Inoltre, se usi Tortoise SVN puoi farlo:
configfile.
Una versione più leggibile della risposta di bkbilly:
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
Cosa fa:
Puoi anche impostare un modello globale di ignore nel file di configurazione di SVN.
svn status ti dirà quali file non sono in SVN, così come cosa è cambiato.
Guarda le proprietà SVN per la proprietà ignore.
Per tutte le cose SVN, è necessario leggere il libro rosso .
Aggiunta di una directory a sovversione e ignoramento del contenuto della directory
svn propset svn:ignore '\*.*' .
o
svn propset svn:ignore '*' .
Utilizzare il comando svn status sulla tua copia di lavoro per mostrare lo stato dei file, i file che non sono ancora sotto controllo di versione (e non ignorati) avranno un punto interrogativo accanto a loro.
Per quanto riguarda l'ignoramento dei file, è necessario modificare la proprietà svn: ignore, leggere il capitolo Ignorare gli oggetti non visti nello svnbook su http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.ignore. html . Il libro descrive anche di più sull'uso dello stato svn.
SVN ignoreè facile da gestire in TortoiseSVN. Apri TortoiseSVN e fai clic con il pulsante destro del mouse sul menu file, quindi seleziona Aggiungi per ignorare l'elenco.
Ciò aggiungerà i file nella svn:ignoreproprietà. Quando eseguiamo il check-in dei file, i file corrispondenti svn:ignoreverranno ignorati e non verranno sottoposti a commit.
Nel progetto Visual Studio abbiamo aggiunto i seguenti file da ignorare:
bin obj
*.exe
*.dll
*.pdb
*.suo
Stiamo gestendo il codice sorgente su SVN di Comparetrap usando questo metodo con successo
Cosa ha funzionato per me:
Come faccio a ignorare i file in Subversion?
1.In Esplora file, fare clic con il tasto destro del mouse sul nome-cartella del progetto SVN
2.Fare clic su "SVN Commit ..."
3. Apparirà una finestra "commit"
4. Fare clic con il tasto destro del mouse sulla cartella / file che si desidera ignorare
5.Fare clic su Aggiungi per ignorare l'elenco
6.Selezionare la cartella / file
7.Commettere la "modifica della proprietà" su SVN
Inoltre, come posso trovare file che non sono sotto il controllo della versione?
Dopo il passaggio 3 sopra, fai clic su "Mostra file non visti"