2009-10-09 8 views
14

Il contesto è che ho un CMS disponibile sul mercato a cui voglio effettuare le personalizzazioni; quindi voglio mantenere i file che modifico sotto controllo di versione, ma non vedo la necessità di mettere l'intero albero dei file sotto controllo di versione.Aggiunta di un singolo file a un repository Subversion ma non ad altri file lungo il percorso

Il mio problema è che ho bisogno di aggiungere un file da tenere sotto controllo di versione che si trova poche sottodirectory in giù, ma non voglio aggiungere altro al repository a parte il file e le sue cartelle padre.

Per illustrare, dire che ho il seguente file nel mio progetto:

progetto/cartella1/cartella2/file.txt

voglio aggiungere file.txt al repository, e folder1 è in versione controllo ma folder2 non lo è. Ci sono file esistenti in folder1 e folder2 che non voglio mettere sotto controllo di versione.

L'esecuzione di un svn import folder1/folder2/file.txt non sembra funzionare, poiché è necessario controllare il file e anche se elimino prima la versione locale, SVN si lamenta della presenza della cartella principale. Presumo che questo significhi che se utilizzo l'opzione --force questo cloberebbe solo il contenuto di queste cartelle.

Il problema con svn add folder1/folder2/file.txt è che richiede già la presenza di ogni cartella principale nel repository (mi risulta dal fatto che non riesce a trovare il file folder2/.svn/entries), ma solo la cartella1 si trova nel repository . Quindi ho pensato di poter fare prima svn add folder1/folder2. Il problema è che questo mette l'intero contenuto di folder2 nel repository, che non voglio. Sembra che la soluzione sarebbe quella di fare svn add --depth=empty folder1/folder2 che aggiunge solo la cartella e nessun contenuto, ma l'opzione --depth è una nuova funzionalità in Subversion 1.5, mentre sto usando 1.4.2 e sarebbe bene evitare l'aggiornamento a questo punto .

Quindi mi chiedo se c'è un modo per aggirare la mancanza di un'opzione -depth nelle versioni precedenti di Subversion? Oppure c'è un altro modo per risolvere questo problema "Mi chiedo anche se forse il modo in cui ho iniziato a configurarlo non è stato di grande aiuto

risposta

33

È necessario aggiungere la cartella con l'opzione" --non -recursive ":

svn add --non-recursive folder1/folder2 
+0

Ho visto quell'opzione ma per qualche ragione pensavo che avrebbe significato aggiungere ogni sotto-voce, ma non scendere ulteriormente. Ma ha fatto esattamente quello che cercavo, grazie :) – nedned

16

è inoltre possibile utilizzare la versione veloce, "-N", che è la forma abbreviata di "--non-ricorsivo", come in

svn add -N folder1/folder2

24

Se la versione del tuo client è 1.5 o successiva, puoi semplicemente usare

svn add --parents folder1/folder2/file.txt 

per aggiungere il file e le relative directory madri.

+1

Questa risposta merita più attenzione. In questi giorni, questa è una soluzione molto più veloce rispetto alle altre risposte. – JMTyler

Problemi correlati