Domanda

Sono particolarmente fastidiosi quando devo caricare sul server una soluzione web.

Esiste un modo per configurare SVN per creare le cartelle _svn al di fuori della mia directory di lavoro? In caso contrario, qual è il modo migliore per gestirli quando è necessario copiare solo il codice?

Aggiorna: utilizzando " svn export " Il comando è problematico perché ci sono file che non sono sotto il controllo del codice sorgente ma necessari come .dll, file di dati xml o file di database e non verranno esportati. Pertanto sarebbe necessario copiarli manualmente ogni volta in sottodirectory diverse dalla copia di lavoro.

È stato utile?

Soluzione

Non è (attualmente) possibile configurare SVN (o TortoiseSVN) per creare le directory .svn (o _svn) al di fuori della copia di lavoro. Credo che la roadmap SVN 1.6 includa la rivisitazione della libreria delle copie funzionanti. La capacità di mettere le directory amministrative da qualche altra parte potrebbe venire fuori da questo lavoro, ma sto speculando.

Dovresti utilizzare " svn export " comando per creare un " clean " copia della tua copia di lavoro (ovvero senza le directory _svn). Funziona dal client della riga di comando.

Se stai usando TortoiseSVN, puoi fare clic con il tasto destro sulla copia di lavoro e scegliere " Esporta ... " ;. Questo ti chiederà una cartella in cui esportare i file. In alternativa, puoi trascinare a destra una copia di lavoro in una cartella (una che non è una copia di lavoro) e TortoiseSVN mostrerà un menu di scelta rapida; tra le opzioni sono " SVN Esporta qui " e " SVN Esporta tutto qui " ;, quest'ultimo esporta anche file non sotto controllo di versione .

Altri suggerimenti

Usa " svn export " per creare un albero di directory pulito.

Robocopy implementazione ...

robocopy {source} {dest} /MIR /XD _svn /XD .svn

In TortoiseSVN, puoi destra fare clic sulla copia di lavoro e trascinarla da qualche altra parte. E quando viene visualizzato il menu a comparsa, seleziona " SVN Esporta qui " ;. (Ciò richiede che tutto il codice nella copia di lavoro sia stato archiviato poiché l'esportazione sarà dal trunk e non dalla copia di lavoro)

Vedi queste risorse per i dettagli:

se si utilizza uno script nant per abilitare la distribuzione sul server Web, ha un _SVN e _SVN / ** come escluso automaticamente durante la copia dei file. nant filtrerà molti file non desiderati durante la copia di file tramite la sua attività di copia tra cui:

  • ** / * ~
  • ** / # * #
  • ** /. # *
  • ** /% *%
  • ** / CVS
  • / CVS /
  • ** /. cvsignore
  • ** /. svn
  • /.svn/
  • ** / _ svn
  • / _svn /
  • ** / SCCS
  • / SCCS /
  • ** / vssver.scc
  • / _vti_cnf /

puoi leggere ulteriori informazioni su NANT nella sua home page del progetto qui: NANT Home

+1 per la soluzione di Isak Savo.

E puoi fare un XCOPY ed escludere " / svn " cartelle:

XCOPY% 1% 1_deploy /EXCLUDE:C:\ExcludeSVN.txt / E / C / I / F / R / Y

Contenuto di ExcludeSVN.txt:

/ _ svn

In effetti, se vuoi ricaricare un server web, il tuo file di esclusione può contenere molto di più:

  • .pdb
  • .cs
  • .resx
  • .csproj
  • .sln
  • webinfo
  • .bak
  • .sql
  • .zip
  • .vspscc
  • .vssscc
  • .scc
  • \ Web.config

Avvertenza: se si escludono i file .cs, dopo aver eseguito la copia del file .css dopo

Il modo davvero sporco in Windows: crea una copia del tuo progetto, apri Explorer, vai alla directory in cui si trova la copia ed esegui una ricerca per tutto ciò che termina con _svn. Al termine della ricerca, seleziona tutto e premi Elimina.

Yuck! Ma funziona davvero bene.

Usiamo CruiseControl con robocopy per creare una copia pulita del tuo repository.

 <exec>
        <executable>C:\Archivos de programa\Windows Resource Kits\Tools\robocopy.exe</executable>
        <buildArgs>E:\CruiseControl\yourproject\Code\trunk\ E:\wwwroot\yourproject *.* /E /XX /XA:H /XO /NDL /NC /NS /NP /XF "*.cache" "*.designer.cs" "*.sln" "*.msbuild" "*.csproj" "*.PDB" "*.user" "*.designer" /XD .svn App_Code obj Properties</buildArgs>
        <buildTimeoutSeconds>60</buildTimeoutSeconds>
        <successExitCodes>1,0</successExitCodes>
 </exec>

Gli argomenti / XF e / XD escludono i file e le directory che non si desidera caricare in produzione.

Puoi trovare maggiori informazioni su robocopy qui .

Se desideri eliminare tutte le sottocartelle denominate .svn in Windows quindi creare un file batch con questo contenuto:

for /f "tokens=* delims=" %%i in ('dir /s /b /a:d *.svn') do (
rd /s /q "%%i"
)

salvalo in un file del_All_Dot_SVN_Folders.cmd . Eseguirlo. Fatto.

Grazie a http: // www .axelscript.com / 2008/03/11 / tutti-svn-files-in-finestre-delete /

Ricorda che il codice sopra ha .svn mentre il codice nel link ha solo * svn, quindi è meglio avere il .svn per non avere accidentalmente effetti indesiderati.

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