Risposte:
La ramificazione in Subversion è facilitata da una funzione di copia molto leggera ed efficiente.
Branching e tagging sono effettivamente gli stessi. Basta copiare un'intera cartella nel repository da qualche altra parte nel repository usando il svn copy
comando
Fondamentalmente questo significa che è per convenzione cosa significa copiare una cartella - che si tratti di un backup, tag, ramo o altro. A seconda di come si desidera pensare alle cose (normalmente a seconda dello strumento SCM utilizzato in passato) è necessario impostare una struttura di cartelle all'interno del repository per supportare il proprio stile.
Stili comuni sono di avere un mucchio di cartelle nella parte superiore del vostro repository chiamato tags
, branches
, trunk
, ecc - che permette di copiare le intere trunk
(o sottoinsiemi) nei tags
e / o branches
le cartelle. Se hai più di un progetto, potresti voler replicare questo tipo di struttura in ciascun progetto:
Può volerci un po 'di tempo per abituarsi al concetto, ma funziona, assicurati solo che tu (e il tuo team) siate chiari sulle convenzioni che userete. È anche una buona idea avere una buona convenzione di denominazione - qualcosa che ti dice perché il ramo / tag è stato creato e se è ancora appropriato - considerare i modi per archiviare i rami che sono obsoleti.
svn cp
utilizza copie economiche, non copia i file effettivi durante la diramazione. Vedi svnbook.red-bean.com/en/1.1/ch04s02.html
Creare un nuovo ramo usando il svn copy
comando come segue:
$ svn copy svn+ssh://host.example.com/repos/project/trunk \
svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH \
-m "Creating a branch of project"
svn switch svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH .
(se si desidera passare al checkout corrente in un nuovo ramo) o svn checkout svn+ssh://host.example.com/repos/project/branches/NAME_OF_BRANCH
(se si desidera avere un nuovo ramo in una directory separata) per iniziare a lavorare sul ramo appena creato.
--parents
opzione consvn copy
!
-m
opzione, dice come svn: E155010: Path '/home/constantine/someDirectory/svn+ssh:https:/myhost.com/svn/dir1/dir2/trunk/dir3/dir4/dir5' does not exist
. Con -m
dice svn: E205009: Local, non-commit operations do not take a log message or revision properties
. (Ho sostituito gli indirizzi, ma esistono, tranne, ofc, la nuova directory di diramazione e l'intero percorso + url che SVN per qualche motivo ha unito all'errore) .
svn cp /trunk/ /branch/NEW_Branch
Se sono presenti alcune modifiche locali nel trunk, utilizzare Rsync
per sincronizzare le modifiche
rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch
rsync
in questo modo. svn cp
copierà anche eventuali modifiche locali.
Supponiamo di voler creare un ramo da un nome trunk (come "TEST") quindi utilizzare:
svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST
Normalmente lo copieresti in svn + ssh: //host.example.com/repos/project/branches/mybranch in modo da poter mantenere diversi rami nel repository, ma la tua sintassi è valida.
Ecco alcuni consigli su come impostare il layout del repository .
Suggerimento per i nuovi utenti SVN; questo può aiutare un po 'a ottenere rapidamente gli URL corretti.
Esegui svn info
per visualizzare informazioni utili sul ramo di check-out corrente.
L'URL dovrebbe (se si esegue svn nella cartella principale) fornire l'URL da cui è necessario copiare.
Inoltre, per passare al ramo appena creato, utilizzare il svn switch
comando:
svn switch http://my.repo.url/myrepo/branches/newBranchName
Se hai anche intenzione di unire la tua filiale, ti consiglio vivamente di guardare questo:
Ho sentito che Subversion 1.5 costruisce di più il monitoraggio delle fusioni, non ne ho esperienza. Il mio progetto è su 1.4.xe svnmerge.py è un salvavita!
Di seguito sono riportati i passaggi per creare un ramo dal trunk utilizzando TortoiseSVN nel computer Windows. Ciò ovviamente richiede l'installazione del client TortoiseSVN.