2009-10-21 11 views
39

Ho una copia funzionante che viene caricata automaticamente in SVN durante la notte utilizzando uno script.Aggiungere tutti i file non verificati a SVN

Io uso la riga di comando SVN per farlo.

Dopo una battaglia frustrante con Google, non sono riuscito a capire come aggiungere automaticamente tutti i file non verificati nella copia di lavoro al repository prima del commit.

Qualcuno sa come potrei andare a fare questo?

Gentilezza e grazie in anticipo,

Dan

risposta

68
svn --force --depth infinity add . 

Attenzione, però, perché questo sarà anche aggiungere qualsiasi svn:ignore 'd file.

+2

Dopo ulteriori test, sembra '--depth' non è necessario, ma non sarebbe male neanche. –

+0

il --force era quello che mi mancava ... muchos gracias! –

+4

questo aggiungerà anche i file attualmente ignorati, state attenti! –

0

dovete chiamare svn add nello script per ogni file senza versione prima svn commit-qualcosa come questo per uno script di shell:

for file in `svn st | grep '^\?' | awk '{ print $2; }'`; do 
    svn add $file 
done 
+2

Eww. Usando '--force' nella directory radice della directory di lavoro si aggiungeranno automaticamente tutti i file non sotto di esso. –

+0

Mentre la tua risposta è tecnicamente corretta, è molto ingegnerizzata, date le alternative :) –

+1

Questo fallisce se ci sono spazi nei nomi dei file. –

14

Prova questo uno su per le dimensioni - molto più elegante che costringere attraverso uno svn aggiungere:

$ svn add `svn status|grep '\?'|awk '{print $2}'` 
+8

Oppure prova questo. Accetta spazi nel percorso: 'svn st | grep '^ \?' | sed 's/^ \? * // '| xargs -I% svn aggiungi% ' – nickiaconis

+3

Ho usato il suggerimento di codefox421 e aggiunto un alias a ~/.bashrc:' alias svn-add-unversioned = "svn st | grep '^ \?' | sed 's/^ \? * //' | xargs -I% svn aggiungi% "' Ora digito 'svn-a' e premo tab, invio! –

25

La soluzione accettata

svn --force Inserisci .

aggiungerà anche tutti i file ignorati. La maggior parte delle persone preferisce lo solo per aggiungere tutti i file non verificati ma non ignorati.

Per aggiungere tutti senza versione, ma non ignorate file, risposta codefox421 ha ragione:

svn st | grep '^ \?' | sed 's/^ \? * // '| xargs -I% svn aggiungi%

come svn st non mostra file ignorati.

0

Nel mio caso ho bisogno di specificare:

svn --force add dir/*/*/* 

* è il livello di albero che voglio aggiungere.

Controllare il risultato con

svn status --no-ignore 
Problemi correlati