Kaip padaryti vyšną - pasirinkti vieną peržiūrą Mercurial?

Žemiau Mercurial / TortoiseHg paprasčiausias būdas sujungti „G“ į repo A yra be D, E ir F sutikimo (darant prielaidą, kad G neturi priklausomybės nuo D, E ar F).

 Repo A: A - B - C Repo B (Clone of A) A - B - C - D - E - F - G 

Ar pleistras geriau?

66
03 нояб. nustatė Tom Hubbard 2009-11-03 23:54 '09, 23:54, 2009-11-03 23:54
@ 2 atsakymai

Tonfa yra teisus. Tai, ką apibūdinate, „nesilieja“ (arba „stumti“ arba „traukti“); Tai yra „vyšnių rinkimas“. Paspauskite arba traukite visus pakeitimus iš vieno repo į kitą, kurie dar nėra šiame repo. „Sujungti“ užima dvi „galvutes“ ir jas sujungia į naują pakeitimų rinkinį, kuris yra abiejų derinys.

Jei tikrai reikia perkelti G, bet jūs negalite palikti D, E, F, jums reikia „hg eksportuoti“ G iš repo A, o tada „hg importuoti“ į repo A. Grafto plėtinys yra apvyniojimas aplink eksportą / importą su kai kuriais subtilumais vengti keleto kartų keisti tą patį pakeitimą.

Tačiau apskritai importo / eksporto, transplantacijos ir vyšnių naudojimo trūkumas yra tas, kad negalite judėti per G be savo protėvių, nes Mercurial pakeitimų rinkinio pavadinimas yra jo „maišytuvas“, kuris apima jos tėvų maišus. Skirtingi tėvai (G naujasis tėvas bus C, o ne F) reiškia kitą nerimą, todėl jis nebėra G - tai G darbas, bet naujas pavadinimas pakeistas.

Perėjimas prie G, kaip kažkas naujo, tegul vadinamas G '(„Gee prime“), tam tikrais tikslais nesvarbu, bet kitiems tai didelis pita. Kai repo B netrukus gauna naują pakeitimų rinkinį, H ir norite perkelti jį per savo tėvą, jis pasikeis nuo G iki G ', kurios turi skirtingas maišas. Tai reiškia, kad H judės, kai H '- 100 keičia eilutę, ir jūs turėsite skirtingus hashids viskas, nes negalėjote stovėti D, E, F repo A.

Daiktai dar labiau padidės iš smūgio, jei / kai norite perkelti daiktus iš „Repo A“ į „Repo B“ (priešinga jūsų ankstesnio žingsnio kryptimi). Jei bandysite atlikti paprastą „hg push“ iš A į B, gausite „G“ (ir „H“ ir paskesnius palikuonius), kurie bus dubliuoti pakeitimų rinkiniais, kuriuos jau turite „Repo B“.

Kokie yra jūsų variantai?

  • Nesvarbu. Jūsų duomenys vis dar yra, jūs gausite tas pačias komandas su skirtingais pavadinimais ir daugiau darbo su būsimais mainais tarp dviejų saugyklų. Tai ne taip, tik šiek tiek nepatogu, o kai kurie žmonės nerūpi.
  • Perkelkite visus D, E ir F į Repo A. Visus pakeitimus galite perkelti, jei jie yra nekenksmingi ir vengia visų problemų. Jei jie nėra tokie nekenksmingi, galite juos perkelti ir atlikti „hg backout“, kad panaikintumėte D, E ir F efektus naujuose pakeitimų rinkinyje H.
  • Suteikite G geriausią šaltinio kodą, kad galėtumėte pradėti. Tai reiškia, kad turėčiau tai paminėti, nes per vėlu eiti šiuo maršrutu (be redagavimo istorijos ). Ką turėjote padaryti prieš dirbdami pakeitimuose G buvo hg update C Jei G nepasitiki arba nereikalauja D, E ir F pakeitimų rinkinių, tai neturėtų būti jų vaikas.

Jei vietoj to pirmą kartą atnaujinsite į „C“, turėsite šį grafiką:

 A - B - C - D - E - F \ G 

tada visas atsakymas į šį klausimą bus tik hg push -r G ../repoA , o G judės švariai, laikydamas tą patį maišą, o D, E ir F hg push -r G ../repoA .

UPDATE:

Kaip nurodyta komentaruose. Su šiuolaikiniais Mercurials, hg graft komanda yra puikus būdas tai padaryti.

74
04 нояб. Atsakymas pateikiamas Ry4an Brase 04 lapkričio. 2009-11-04 07:32 '09 7:32 am 2009-11-04 07:32

Remdamiesi pavadinimu, kuriame aptariama vyšnių pasirinkimas apskritai, pateiksiu pavyzdį, kaip dirbti viename repo, nes interneto paieškos sistemos gali pritraukti žmonių čia, kad surinktų vyšnios apskritai. Darbas vienoje saugykloje bus atliktas naudojant hg graft :

  G' / A - B - C - D - E - F - G 

Papildomas įspėjimas: du pakeitimų rinkiniai bus laikomi nepriklausomais, lygiagrečiai prisiimami tose pačiose bylose ir gali sukelti konfliktų sujungimą, todėl apskritai turėtų būti vengiama pasirinkti vyšnių pasirinkimą. Pavyzdžiui, jei G yra klaidos pataisa, pritaikyta stabilios versijos filialui, pažymėtam 1.0.1 , turėtumėte sujungti freeze atšaką ir sujungti master filialą su freeze iš manekeno pataisų.

33
31 марта '14 в 16:19 2014-03-31 16:19 Atsakymą pateikė Iodnas kovo 31 d. 14, 16:19 2014-03-31 16:19

Kiti klausimai apie žymes, kuriose yra arba užduoti klausimą