Vă mulțumim pentru susținere

Cum creez o sucursală în SVN?

Cum creez o sucursală în SVN?

0
adăugat editat

9 răspunsuri

În mod normal, l-ați copia la svn + ssh: //host.example.com/repos/project/branches/mybranch pentru a putea păstra mai multe ramuri în depozit, însă sintaxa dvs. este validă.

Iată câteva sfaturi despre cum să configurați aspectul depozitului .

0
adăugat

Dacă intenționați chiar să vă îmbinați sucursala, vă sugerez să vă uitați la acest lucru:

Svnmerge.py

Am auzit că Subversion 1.5 construiește mai mult din urmărirea fuzionării, nu am nici o experiență cu asta. Proiectul meu este pe 1.4.x și svnmerge.py este un salvator de viață!

0
adăugat

Subversiunea ușurează (unii cred că este prea ușor) să creeze o nouă ramură utilizând comanda svn copy.

$ 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"
0
adăugat
Folosiți ulterior svn comanda svn + ssh: //host.example.com/repos/project/branches/NAME_OF_BR‌ ANCH. (dacă doriți să comutați comanda curentă la o nouă filială) sau svn checkout svn + ssh: //host.example.com/repos/project/branches/NAME_OF_BR‌ ANCH (dacă doriți să aveți o sucursală nouă în directorul separat) pentru a începe să lucrați la sucursala nou creată.
adăugat autor Jakub Narębski
Notă: în unele cazuri va trebui să utilizați opțiunea părinții code>!
adăugat autor Jakub Narębski
pentru unele motive am folosit acest cmd și nu a funcționat, dar când am schimbat svn + ssh la doar https a funcționat. Am făcut ceva greșit? ce înseamnă sn + ssh? Mulțumiri!
adăugat autor Aviel Gross
răspunzând la propria mea întrebare, sa întâmplat deoarece directorul sucursalei a existat deja. dacă ramura țintă dir nu există încă, funcționează.
adăugat autor peedee
Am făcut acest cod și am terminat cu o structură ca ... / project / branches / my_new_branch / trunk /.... Cum pot evita să am un alt "trunchi" în noua mea ramură?
adăugat autor peedee
Doar a fi pretentios pe partea usoara. E ușor în comparație cu git? branch branch -b branch_name
adăugat autor pellucide
trebuie să creați mai întâi un director nou în sucursala dvs. -> svn mkdir host.example.com/repos/project/branches/NAME_OF_BRANCH -m "face directorul sucursalelor să dețină toate sucursalele"
adăugat autor Silvio Troia
Bine, răspunsul de mai jos a funcționat. Deoarece, cred că == svn copy , partea svn + ssh în acest răspuns este greșită, i> (declanșează eroarea de mai sus?) .
adăugat autor Hi-Angel
Dacă omiteți opțiunea -m , se spune ca svn: E155010: Path '/home/constantine/someDirectory/svn+ssh:https:/myhost.com/s‌ vn / dir1 / dir2 / trunk / d & zwnj; ir3 / dir4 / dir5 "nu există . Cu -m se afișează svn: E205009: Operațiile locale, fără comitere nu iau un mesaj de jurnal sau proprietăți revizie . (Am înlocuit adresele, dar ele există, cu excepția, ofc, noul director de ramură și întreaga cale + url pe care SVN, dintr-un anumit motiv, a fuzionat-o în eroare) .
adăugat autor Hi-Angel
"unii cred prea ușor" ce ar trebui să însemne asta? De ce ar vrea cineva să fie mai greu?
adăugat autor deetz

Brancharea în Subversion este facilitată de o facilitate de copiere foarte ușoară și eficientă.

Ramificarea și etichetarea sunt efectiv aceleași. Trebuie doar să copiați un întreg dosar în depozit la alt loc din depozit utilizând comanda svn copy .

Practic, aceasta înseamnă că prin convenție este ceea ce înseamnă copierea unui dosar - fie că este vorba despre o copie de rezervă, o etichetă, o ramură sau o altă pagină. În funcție de modul în care doriți să vă gândiți la lucruri (în mod normal, depinde de instrumentul SCM pe care l-ați folosit în trecut), trebuie să configurați o structură de directoare în depozitul dvs. pentru a vă sprijini stilul.

Stilurile comune sunt de a avea o grămadă de directoare din partea de sus a depozitului, numite tags , branches , trunk etc. copiați întregul trunk (sau subseturi) în folderele tags și / sau branches . Dacă aveți mai multe proiecte, ați putea dori să replicați acest tip de structură în cadrul fiecărui proiect:

Poate dura ceva timp ca să vă obișnuiți cu acest concept - dar funcționează - asigurați-vă că vă (și echipa dvs.) sunteți clari cu privire la convențiile pe care le veți folosi. Este, de asemenea, o idee bună să aveți o convenție de numire bună - ceva care vă spune de ce a fost făcută ramura / eticheta și dacă este în continuare adecvată - luați în considerare modalitățile de arhivare a ramurilor care sunt depășite.

0
adăugat
@inetphantom hah, voi da tu facilitatea svn este lumina ca in 'lumina pe gandire', dar nu eficace! Voi spuneți că rezultatul nu este. Măsurați rezultatele, nu lenea programatorului SVN.
adăugat autor Will
facilitate de copiere foarte ușoară și eficientă. Hah! Nu, copierea fișierelor reale este greu și cum ajungeți orele de așteptare pentru SVN repos pentru a verifica afară. Git etc sunt foarte ușoare și eficiente deoarece copiază doar referințe la crearea de sucursale. Copie pe scriere.
adăugat autor Will
De asemenea, rețineți că este de obicei o idee proastă de a eticheta sau de a subdirectoarele ramificate ale "trunchiului". Acest lucru face dificilă urmărirea subdirectoarelor ramificate, iar cele mai multe instrumente vor fi confundate de aceste ramuri (de exemplu, ramificațiile de comutare vor însemna structura directorului modificărilor WC, ceea ce va deruta IDE-urile și construirea de instrumente). Doar întotdeauna ramură "trunchi".
adăugat autor sleske
@Will De fapt, facilitatea este ușoară. și, de asemenea, eficientă. Rezultatul nu este. GIT-ul este greu, deoarece calculează foarte mult și nu doar o copie, dar rezultatul este ușor, deoarece nu are overhead de a copia totul
adăugat autor inetphantom
Wow acest lucru este teribil.
adăugat autor shinzou
"svn copy" are avantajul că va păstra istoricul anterior ramificării. Copierea manuală într-un alt director nu va fi.
adăugat autor WhyNotHugo
"Nu, copierea fișierelor reale este greu și cum termini orele de așteptare pentru SVN repos pentru a verifica afară." Sună destul de alarmant. Utilizați SVN pentru a gestiona un proiect masiv? Sau încercați să distribuiți un proiect mare pe o conexiune WAN? Am lucrat cu o mulțime de proiecte SVN care erau mari, dar nu a trebuit niciodată să aștepte ore întregi pentru o filială.
adăugat autor AhiyaHiya
@AhiyaHiya Indiferent de caz, este întotdeauna mai bine să copiați deltas decât fișierele reale. Deltasele nu pot greuta mai mult decât fișierele. O comanda plictisitoare pentru un program plictisitor.
adăugat autor Winter
@ De fapt, nu aveți nevoie să copiați fișierele. În majoritatea cazurilor, aveți nevoie doar de și apoi svn switch svn: // server / branch . Acest lucru este rapid.
adăugat autor Alex Che
@Will De fapt, utilizează copii ieftine, nu copiază fișierele reale în timpul ramificării. Consultați svnbook.red-bean.com/en/1.1/ch04s02.html
adăugat autor Walty Yeung
svn cp /trunk/ /branch/NEW_Branch

Dacă aveți unele modificări locale în portbagaj, utilizați Rsync pentru a sincroniza modificările

rsync -r -v -p --exclude ".svn" /trunk/ /branch/NEW_Branch
0
adăugat
@KevinPanko Nu va copia modificările necondiționate.
adăugat autor Parag Bafna
Mă întreb despre asta. Aceasta pare a fi cea mai ușoară opțiune, și AFAI amintesc, asta am făcut când lucram cu SVN acum 3 ani. Dar care este diferența dintre acest lucru și cei care lucrează direct cu adresa URL a serverului?
adăugat autor oligofren
Ea, confirmat cu svn, versiunea 1.8.5
adăugat autor Kevin Panko
Nu este necesar să utilizați rsync în acest fel. svn cp va copia, de asemenea, orice schimbări locale.
adăugat autor Kevin Panko

Dacă sunteți repo este disponibil prin https, puteți folosi această comandă pentru a ...

svn copy https://host.example.com/repos/project/trunk \
       https://host.example.com/repos/project/branches/branch-name \
  -m "Creating a branch of project"
0
adăugat

Să presupunem că doriți să creați o ramură dintr-un nume de trunchi (ca "TEST") apoi utilizați:

svn cp -m "CREATE BRANCH TEST" $svn_url/trunk $svn_url/branches/TEST
0
adăugat

Sfat de top pentru noii utilizatori SVN; acest lucru poate ajuta puțin la obținerea rapidă a adreselor URL corecte.

Rulați svn info pentru a afișa informații utile despre ramura curentă check-out.

Adresa URL ar trebui (dacă executați svn în folderul rădăcină) să vă dau URL-ul de care trebuie să copiați.

De asemenea, pentru a trece la sucursala nou creată, utilizați comanda svn switch :

svn switch http://my.repo.url/myrepo/branches/newBranchName
0
adăugat
De asemenea, puteți utiliza ^ în locul rădăcinii Depozitului
adăugat autor chim
  • Create a new folder outside of your current project. You can give it any name. (Example: You have a checkout for a project named "Customization". And it has many projects, like "Project1", "Project2"....And you want to create a branch of "Project1". So first open the "Customization", right click and create a new folder and give it a name, "Project1Branch").
  • Right click on "Myproject1"....TortoiseSVN -> Branch/Tag.
  • Choose working copy.
  • Open browser....Just right of parallel on "To URL".
  • Select customization.....right click then Add Folder. and go through the folder which you have created. Here it is "Project1Branch". Now clik the OK button to add.
  • Take checkout of this new banch.
  • Again go to your project which branch you want to create. Right click TorotoiseSVN -> branch/tag. Then select working copy. And you can give the URL as your branch name. like {your IP address/svn/AAAA/Customization/Project1Branch}. And you can set the name in the URL so it will create the folder with this name only. Like {Your IP address/svn/AAAA/Customization/Project1Branch/MyProject1Branch}.
  • Press the OK button. Now you can see the logs in ...your working copy will be stored in your branch.
  • Now you can take a check out...and let you enjoy your work. :)
0
adăugat