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-ignores
opzione: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\config
Software\Tigris.org\Subversion\Config\Miscellany\global-ignores
in entrambi HKLM
e HKCU
.~/.subversion/config
svn:ignore
proprietà, che è impostata su directory (non file):.gitignore
funziona.svn:ignore
viene 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:ignore
proprietà 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/ignoreThis
non 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 --recursive
per sovrascriverlo nelle directory figlio e discendente.Noto che la sintassi della riga di comando è controintuitiva.
svn ignore pathToFileToIgnore.txt
tuttavia non è così che funziona la funzione Ignora di SVN.svn:global-ignores
proprietà. 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-ignores
con il --recursive
flag, 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-ignores
invece:
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 status
nasconde i file ignorati (ovvero i file che corrispondono a un global-ignores
modello RGA o corrispondono a un svn:ignore
modello di directory padre immediato o corrispondono a un modello di directory di un antenato svn:global-ignores
.
Utilizzare l' --no-ignore
opzione per visualizzare i file elencati. I file ignorati hanno uno stato di I
, quindi reindirizzare l'output a grep
mostrare 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.txt
dopo 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:ignore
comando (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:ignore
verrà 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:
config
file.
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:ignore
proprietà. Quando eseguiamo il check-in dei file, i file corrispondenti svn:ignore
verranno 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"