2010-10-29 20 views
7

Ecco il problema:Come posso copiare una struttura di directory ma escludere le directory .svn?

Passare attraverso tutti i file e le sottocartelle copiando tutti i contenuti TRANNE .svn in un'altra posizione.

Posso pensare ad alcuni modi piuttosto pelosi per farlo, ma mi chiedo se qualcuno conosce una funzione semplice per salvarmi un po 'di tempo? Grazie.

+2

Fuori interesse e dopo aver visto la risposta. Sono stupido, ma qual è il motivo per cui prendi questo dal controllo della sovversione. questa è una vera domanda sconsiderata !! – brumScouse

+0

Ho fatto una cosa simile per eseguire il backup di una copia locale di un repository sul posto di lavoro perché era abbastanza grande da eseguire il checkout ogni volta, risparmiando un sacco di tempo. Era solo una copia di 'apprendimento/rottura' che non sarebbe stata ricontrollata, altrimenti non la consiglierei. –

+2

È necessario modificare la domanda per indicare in modo più chiaro che si sta utilizzando AutoIt o rimuovere tale tag se non è necessaria una soluzione AutoIt. –

risposta

20

È possibile utilizzare il comando svn export. Popolerà una cartella di destinazione con il contenuto di una copia di lavoro (o una revisione su un repository).

+0

Solo un avviso. L'OP vuole copiare _tutti i contenuti_, che potrebbero includere file non sotto controllo di versione. La documentazione afferma chiaramente che 'svn export' NON COPY _files non sotto version control_. – MSX

+0

@msx si potrebbe avere, secondo il testo della domanda letterale. Fortunatamente il problema reale, che si trova sotto le parole e il fraseggio, riguardava la versione contenuta nel contenuto – xtofl

+0

@xtofl Ovviamente. Sono perfettamente d'accordo con te. Accettare la tua risposta come la migliore indica che l'OP è completamente soddisfatta della soluzione. Io stesso stavo cercando una soluzione per copiare tutto, ma la cartella '.svn' e' svn export' non risolvono il mio problema. Quindi, il mio commento ... speriamo che risparmierà tempo agli altri che cercano la soluzione a un problema simile al mio. – MSX

5

Utilizzare rsync e l'interruttore --exclude.

... anche se in questo caso specifico, l'opzione migliore è svn export

0

Se si utilizza TortoiseSVN, utilizzare Esporta ...

3

A volte usa Beyond Compare (http://beyond-compare.softonic.com/): selezionare la directory sorgente principale e quello di destinazione, escludere .svn e fare una sincronizzazione. Questo è utile se hai bisogno di farlo di nuovo: salva le impostazioni come un progetto.

1

Quindi il mio modo rapido e sporco di fare questo di recente stava usando python:

for root, dirs, files in os.walk(inRootDirArg): 
     for d in dirs: 
      if d.startswith('.'):#excludes directories that start with '.' 
       continue 
      ...<logic to move your desired directories>... 

Questa soluzione trascura qualsiasi directory a partire da una, ma se avevo bisogno per essere più precisi non è difficile '' per modificarlo per omettere solo le directory .svn.

0

Usa Cmd

Dir/a-d/s/b >>1.txt 

ed uso AutoIt per leggere il file, un migliore utilizzo _FileReadToArray, e l'in un ciclo, controllare il percorso del file se ha un' .svn'in si

0

Se autoit non è necessario, è possibile utilizzare xcopy con un file di esclusione:

xcopy "..\source\" "..\destination\" /E /Y /R /exclude:exclude.txt 

exclude.txt dovrebbe contenere:

\.svn\ 
Problemi correlati