2013-08-16 13 views
15

Sto lavorando a un gioco (Quake 3) e uso un repository SVN per memorizzare l'albero del codice. L'albero contiene anche dati di gioco (trame, modelli, ecc.). Questo deve essere inserito in un archivio PK3 (un archivio ZIP standard con un'estensione diversa). Io uso l'utilità ZIP in un semplice script per creare l'archivio PK3.Come escludere le cartelle .svn da un archivio ZIP?

Il mio problema è che anche i dati di gioco sono versionati e la cartella contenente i dati è ingombra di tutte quelle sottocartelle ".svn". Ovviamente, ZIP include queste sottocartelle nell'archivio. Non sono necessari per il gioco. C'è un modo semplice per dire a ZIP di escludere tutte le sottocartelle '.svn' dall'archivio?

+0

Quale strumento stai usando per creare l'archivio '.PK3'? Forse quello strumento accetta un argomento "estensioni di file ignorate", o una lista bianca che non conterrebbe alcun file nella cartella '.svn'. –

+0

Io uso l'utilità standard ZIP di Linux (e la sua porta GNU sotto Windows). Ha opzioni per escludere i file, ma non le directory AFAIK. – speaker

risposta

4

Invece di zippare direttamente l'albero dei sorgenti, perché non fare in modo che lo script esporti una copia dell'albero di origine senza le directory .svn? C'è uno strumento per questo: svn export.

+0

Questa è la tua unica vera risposta. Tuttavia vale la pena ricordare che in svn 1.7 la copia di lavoro è cambiata - c'è un singolo.directory svn al livello più alto del repository piuttosto che in ogni directory. Questo può essere d'aiuto (specialmente se le trame sono grandi e richiederebbe un po 'di tempo per esportarle) – thekbb

+0

Grazie per averlo indicato. Sembra che il VPS Debian su cui ho il repository esegua SVN 1.6.12 da Collabnet. Dovrò semplicemente effettuare l'aggiornamento alla versione 1.7 o successiva e le cartelle ".svn" non saranno più disponibili. – speaker

+0

Mentre lo aspetti, 'svn export' esiste dal primo giorno. Quindi ti suggerirei davvero di esaminarlo. :-) – Rytmis

25
zip -r output.zip inputdir -x "**/.svn**" 

questo escluderà tutto inizia con ".svn" in qualsiasi sottocartella

+0

Puoi spiegarci la sintassi? Perché sono necessarie le quotazioni? – flu

+3

le quotazioni sono necessarie per evitare l'espansione della shell nel caso in cui si abbia un file o una cartella nel percorso corrente corrispondente a quel modello: '-r' significa viaggiare ricorsivamente il percorso di input (inputdir) mentre le doppie stelle' ** 'significa corrispondere alle sottocartelle –

1

Io uso Windows 7.
cotto nel sistema operativo Right-Click su qualsiasi cartella e si può selezionare 'Send to' e quindi su " Compressed (zipped) folder ".

C'è una stranezza ho scoperto in cui Windows comprimerà solo la prima cartella con un punto (.) Prefisso .:
Windows 7 “send to compressed (zip) folder” omits some folders whose name begins with a dot

questo cavillo (o una funzione misteriosa in base alla progettazione) mi aveva pensando ...
Cosa succede se ho creato una cartella vuota prefisso "" punto (.) per comprimere invece della mia cartella .svn?

Windows non consente semplicemente di fare clic con il pulsante destro del mouse e creare una cartella con un prefisso punto (.).
Utilizzando il CMD, mi sono imbattuto "mkdir .skip_svn" nella stessa directory della cartella ".svn" era in
Ho usato questa risposta per capire che uno:.
How do I create a folder name that starts with a dot in Windows 7?

Compressione della directory mantiene il mio piccolo diversivo " .skip_svn "cartella ma ignora la cartella" .svn ".
Nessuna interfaccia da riga comandi o Software di terze parti per l'installazione.
Mi rendo conto che questo potrebbe non essere l'ideale per molti - non è affatto una soluzione definitiva.
Questo era tutto ciò di cui avevo bisogno per rendere i miei backup più veloci e ora occupano un intero lotto in meno dello spazio.

Problemi correlati