Subversion: Posso checkout, modificare, e poi ne fanno un ramo?
-
19-09-2019 - |
Domanda
Ho fatto un checkout dal mio baule a un DIR locale e fatto un sacco di modifiche locali lì. Ora io non voglio commettere di nuovo al tronco, ma io preferisco fare un ramo da questa versione locale. È possibile?
Posso basta copiare il tronco ad un ramo, e poi cd DIR
e svn switch
al ramo?
Aggiorna : Grazie per le risposte, ha funzionato! Per riassumere i passi:
-
cd DIR
-
svn copy . new-branch-URL
-
svn switch new-branch-URL .
(notare i puntini)
Soluzione
Secondo il suo aiuto svn copy riga di comando può copiare da una directory a un URL repository. Così si dovrebbe essere in grado di copiare la vostra copia di lavoro al ramo, per esempio:.
svn copy working_directory url_to_branch
Altri suggerimenti
Il Libro SVN ( http: //svnbook.red-bean.com/en/1.6/svn-book.html#svn.branchmerge.using.create ) non raccomanda la creazione di un ramo dalla copia di lavoro locale.
Anche se è anche possibile creare un ramo utilizzando
svn copy
per duplicare una directory all'interno della copia di lavoro, questa tecnica non è raccomandato. Può essere piuttosto lento, in realtà! Copia di una directory sul lato client è un'operazione tempo lineare, nel senso che ha in realtà di duplicare tutti i file e sottodirectory in quella directory copia di lavoro sul disco locale.
Al contrario, creare il primo ramo e quindi utilizzare il comando svn switch
in modo da poter applicare le modifiche. Se la vostra copia di lavoro è significativamente fuori di data con il tronco poi aggiungere "@REV" all'URL di origine in cui "REV" è la revisione della copia di lavoro riportato da svn info
.
Copia di una directory sul server, tuttavia, è un'operazione a tempo costante, ed è il modo in cui la maggior parte delle persone creano rami.
$ svn copy http://svn.example.com/repos/calc/trunk \
http://svn.example.com/repos/calc/branches/my-calc-branch \
-m "Creating a private branch of /calc/trunk."
Nel mio client SVN: TortoiseSVN è sufficiente:
- tasto destro del mouse sulla directory principale che voglio ramo
- "Per URL" selezionare la directory ramo nel repository
- nella cornice "Crea copia nel repository da:" selezionare "copia di lavoro"
fatto:)
E 'proprio come la copia versione locale di URL del repository specificato.
Sì, è possibile farlo da SVN riga di comando e TortoiseSVN .
È necessario specificare il vostro workingcopy SVN come src e il vostro nuovo ramo come destinazione del
svn copy <file/path/to/working/copy> <URL/TO/REPOSITORY/BRANCH>
comando.
In TortoiseSVN basta puntare nella vostra copia di lavoro, scegliere "ramo / tag" dal menu contestuale e scegliere "copia di lavoro" nella sezione "Crea copia nel repository da:"
Si noti che non è una buona idea (per motivi di tracciabilità) per creare i tag in modo tale, ma per i rami è perfettamente bene.