Shelve în TortoiseSVN?

M-am mutat de la TFS la SVN (TortoiseSVN) cu compania mea actuală. Chiar mi-e dor de caracteristica "Shelve" a TFS. Am citit diverse articole despre "Shelve" cu SVN, dar nu am citit nimic care să ofere o experiență foarte simplă pentru a "rafina" munca.

Ideally, I'd like extra items added to the TortoiseSVN context menu - "Shelve" & "Unshelve". "Shelve" would remove the current shelve-set, and upload the working directory under a suitable path defined by user options. "Unshelve" would merge the set with the working copy.

Există ceva de genul asta? Poate cineva să sugereze modalități de a "hack" această caracteristică în GUI?

Notă: Următorul link nu atinge cu adevărat experiența utilizatorului pe care o căutam:

Subversiunea rafturilor

Unul dintre cele mai mari lucruri despre TFS Shelve este cât de ușor este să folosiți ...

0
fr hi bn

6 răspunsuri

0
adăugat

Puteți folosi un DVCS, dar într-un fel acest lucru este un kludge. "Rafturile" dintr-un DVCS stochează modificările numai la nivel local. Este utilă numai dacă doriți să vă controlați munca la răsturnare dacă o rupeți cu o muncă ulterioară, dar preferați să vă salvați munca pe server.

O modalitate de a face acest lucru în SVN, fără o comandă explicită de rafală, este să comutați copia de lucru într-o altă locație SVN și să vă angajați acolo în loc de repo-ul principal. Acest lucru este în mod eficient ca crearea unei sucursale temporare și de lucru pe care pentru durata muncii tale. Nu cred că veți fi nevoiți să fuzionați, deoarece SVN o va face pentru dvs. când veți comuta, pe măsură ce modificările locale vor fi păstrate.

Din păcate, nu puteți trece la o locație inexistentă, astfel încât prima dată când faceți acest lucru, va trebui să creați "ramura" pentru a rafina. Cred că totul ar putea fi automatizat.

0
adăugat

Nu cred că SVN are această funcție încorporată în produsul server. De asemenea, nu cred nimic asemănător cu acest lucru emulat în niciun client pe care l-am folosit, inclusiv TortoiseSVN.

Pentru a rezolva această problemă, am recurs la utilizarea unui DVCS, cum ar fi git sau mercurial , pentru a-mi permite să filă/fuzionez/rafală local înainte de a împinge conținutul înapoi la SVN. Este, probabil, un pic mai puțin, dar funcționează foarte bine.

Sper ca te ajuta. Mult noroc!

0
adăugat
A se vedea: Cum să utilizați vioaie și SVN împreună adăugat autor AndyM, sursa
Nu cred ca eo alta problema L- Am folosit un VCS personal separat de ani de zile cand lucram cu echipe unde aveam un control strict asupra checkins (si mai ales cu VCS bazat pe lock-uri ca SourceSafe).
adăugat autor Andy Dent, sursa
Ai dreptate, nu eo tâmpenie. Pentru a fi sincer nu stiu de ce am spus-o, probabil un pic de disclaimer pentru a evita sa fie lambasted :) Sunt foarte fericit cu utilizarea DVCS pentru rafturi locale înainte de a împinge la un standard CVCS.
adăugat autor OJ., sursa
Timp-ignorant downvotes pentru câștig! Stackoverflow este uneori un ghetou.
adăugat autor OJ., sursa
Funcția SVN Patch are destul de mult comportamentul dorit, după cum se arată în câteva răspunsuri de mai jos.
adăugat autor achekh, sursa
Răspunsurile învechite ar trebui să fie votate în jos. Acestea fiind spuse, acest răspuns oferă o serie de beneficii suplimentare, deci +1 de la mine.
adăugat autor WCWedin, sursa
Dar cum împărțiți codul cu alți dezvoltatori în acest fel? Unul dintre avantajele setărilor de rafturi este faptul că dezvoltatorul colegului meu poate pune codul undeva unde pot accesa codul înainte de ao comite.
adăugat autor Mosh, sursa

O altă opțiune este să utilizați facilitatea "Creați patch-uri" în TortoiseSvn pentru a crea un fișier de patch-uri și pentru a reveni la modificări. Fișierul de patch-uri poate fi reaplicat mai târziu pentru a vă întoarce în locul în care vă aflați.

S-ar putea să ajungeți în continuare la unele fuziuni lipicioase dacă trebuie să actualizați revizuirea copiei de lucru.

0
adăugat

Dacă înțelegeți modul în care funcționează sucursalele SVN, emularea Shelve în SVN este o problemă neimportantă:

  1. Creați o ramură în depozit (pe server)
  2. Comutați copia dvs. locală
  3. Comutați modificările la noua ramură
  4. Comutați copia locală înapoi în portbagaj

Când sunteți gata să vă întoarceți la modificările dvs. rafatate ("unshelve"), pur și simplu îmbinați ramura raftului înapoi la copia dvs. locală.

Dacă nu cunoașteți linia de comandă SVN și Tortoise SVN suficient de bine pentru a face cele de mai sus, iată o instrucțiune super-detaliată pas cu pas despre cum se face în Tortoise SVN:

  1. Do "SVN Update" to update your working copy to the latest version of the trunk. This way the only differences between your local copy and the trunk are your changes.
  2. From the context menu select "Branch/Tag"
  3. "HEAD version in the repository" option is selected by default. Keep that.
  4. Change the "To Url" to specify branch name, e.g. http://server/repository/project1/branches/shelf1
  5. Check the "Switch working copy to new branch/tag" box
  6. Click Ok to create the branch and switch to it
  7. Do "SVN Commit..." and commit your changes to the newly created branch
  8. From the context menu select "Switch..."
  9. Change the "To URL" to the trunk URL e.g. http://server/repository/project1/trunk
  10. Click Ok to switch back to the trunk

See this link for even more details and the command-line equivalent of the above:
Shelves in Subversion

0
adăugat
În depozitele mari, este un proces dureros de lent (și de eroare predispus dacă există ștergeri aici și acolo)
adăugat autor Samaursa, sursa
Trecerea la o ramură nouă sau chiar la portbagaj. Foarte foarte lent în depozit unde lucrez (este destul de mare) și chiar și pe unele dintre proiectele mele care au crescut în complexitate (am trecut la mercurial pentru proiecte personale). Și da, problema problemelor necondiționate. Odată ce trecusem la mercurial, nu puteam să cred cât de ușor a fost totul dintr-o dată. Păcat că nu o folosesc la locul de muncă. O opțiune de rafturi ar fi fost excelentă în SVN.
adăugat autor Samaursa, sursa
Toate comutarea pare ca un kludge, IMHO SVN începe să scadă în spatele în timp ce multe instrumente scm (de exemplu, Perforce, TFS, Mercurial ) au această caracteristică pentru a salva cu ușurință cod temporar pe server și reveni cu ușurință, etc, etc
adăugat autor Jason, sursa
@Samaursa, care pas este lent? De asemenea, ștergerile nu au fost niciodată o problemă pentru mine, cu excepția cazului în care în copia de lucru există elemente care nu au fost modificate (pe care ar trebui să le curățați înainte de a comuta, citiți acest text: ( subversion.apache.org/faq.html#switch-problems )
adăugat autor zvolkov, sursa

Shelving in SVN is starting to roll out with version 1.10, see Release Notes

0
adăugat