Domanda

Posso ignorare una cartella al checkout svn? Devo ignorare la cartella DOCs al checkout sul mio server di build.

modifica: ignorare gli esterni non è un'opzione. Ho degli esterni di cui ho bisogno.

È stato utile?

Soluzione

Non puoi ignorare direttamente le cartelle in un checkout, ma puoi usare checkout sparsi in svn 1.5. Ad esempio:

$ svn co http://subversion/project/trunk my_checkout --depth immediates

Ciò controllerà i file e le directory dal trunk del progetto in "my_checkout", ma non verrà ricondotto a tali directory. Ad esempio:

$ cd my_checkout && ls
bar/ baz foo xyzzy/

Quindi per scaricare il contenuto di 'bar':

$ cd bar && svn update --set-depth infinity

Altri suggerimenti

Sì, è possibile utilizzare SVN 1.6. Dovrai prima fare un checkout, quindi contrassegnare la cartella per esclusione, quindi eliminare la cartella indesiderata.

svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr docs

D'ora in poi eventuali aggiornamenti alla copia di lavoro non ripopoleranno la cartella documenti.

Vedi http: //blogs.collab. net / subversion / 2009/03 / sparse-directory-ora-con-esclusione / e http://subversion.apache.org/docs/release-notes/1.6.html#sparse-directory-exclusion per maggiori dettagli.

Tom

Con le versioni precedenti alla 1.5 ho scoperto che se fai il checkout solo nella cartella più in alto e poi aggiorni selettivamente, da quel momento in poi gli aggiornamenti hanno effetto solo su ciò che hai estratto. Vale a dire.

svn co -N foo
cd foo
svn up -N bar
svn up

Il flag -N rende l'operazione non ricorsiva. Quanto sopra non verificherà nient'altro a livello di foo, ad es. diciamo che esiste una cartella lala , lo svn up finale non verificherà quella cartella, ma aggiornerà bar .

Ma in un secondo momento puoi svn up lala e quindi aggiungerlo alla cassa.

Presumibilmente funziona anche con 1.5.

Questo è nel client TortoiseSVN 1.7.1 (potrebbe essere disponibile anche in alcune versioni precedenti):

  • Pagamento SVN - > Seleziona l'URL del repository

  • Fai clic su " Checkout Items " (in Profondità di pagamento) e selezionare solo il cartelle richieste!

È possibile inserire la cartella documenti in un repository esterno e quindi utilizzare svn checkout --ignore-externals .

Sì, Subversion 1.5 ha una funzione chiamata Checkout sparsi che possono fare esattamente questo genere di cose.

Ho trovato questa domanda cercando un modo per controllare le fonti di WebKit escludendo i test di regressione. Ho finito con il seguente:

svn checkout http://svn.webkit.org/repository/webkit/trunk WebKit \
  --depth immediates

cd WebKit
find . \
  -maxdepth 1 -type d \
  -not -name '.*' \
  -not -name '*Tests' \
  -not -name 'Examples' \
  -not -name 'Websites' \
  | (while read SUBDIR; do svn update --set-depth infinity "$SUBDIR"; done)

Nota che puoi modificare le esclusioni come ritieni opportuno, ma. * si consiglia di saltare la directory di lavoro (che è già aggiornata) e tutte le directory .svn.

Di recente ho risolto lo stesso compito. L'idea è di ottenere l'elenco immediato di cartelle / file nel repository per escludere le voci necessarie, quindi controllare le cartelle rimanenti e aggiornare eventuali file immediati. Ecco la soluzione:

    # Path to the svn repository to be checked out
rpath=https://svn-repo.company.com/sw/trunk/ && \
    # This files are to be excluded (folders are ending with '/')
    # this is a regex pattern with OR ('|') between enties to be excluded
excludep='docs_folder/tests_folder/|huge_folder/|file1|file2' && \
    # Get list of the files/folders right under the repository path
filtered=`svn ls $rpath | egrep -v $excludep` && \
    # Get list of files out of filtered - they need to be 'uped'
files=`echo $filtered | sed 's| |\n|g' | egrep '^.*[^/]

Passa alla directory di lavoro di origine. Copia i comandi. Incolla. Modifica l'URL appropriato ed escludi il pattern. Esegui il comando.

Grazie,

` && \ # Get list of folders out of filtered - they need to be 'coed' folders=`echo $filtered | sed 's| |\n|g' | egrep '^.*[/]

Passa alla directory di lavoro di origine. Copia i comandi. Incolla. Modifica l'URL appropriato ed escludi il pattern. Esegui il comando.

Grazie,

` && \ # Initial nonrecursive checkout of repository - just empty # to the current (./) working directory svn co $rpath ./ --depth empty && \ # Update the files svn up $files &&\ # Check out the all other folders finally. svn co `echo $folders | sed "s|\<|$rpath|g"`

Passa alla directory di lavoro di origine. Copia i comandi. Incolla. Modifica l'URL appropriato ed escludi il pattern. Esegui il comando.

Grazie,

No, ignora è solo per aggiungere file.
Puoi usare checkout sparsi (se usi svn 1.5)

Come alcuni altri hanno già detto, puoi semplicemente usare le proprietà svn: externals e poi l'opzione --ignore-externals al momento del checkout. Una cosa da notare, tuttavia, è che svn: gli esterni non devono necessariamente fare riferimento a un altro repository. Può essere un riferimento ad un'altra cartella nello stesso repository.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top