Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /www/webvol34/an/96qmbdpibm1sspm/danielliljeberg.se/public_html/blog/wp-content/mu-plugins/gkphp.php on line 1
Merge branch med trunk med Subversion och Eclipse « Eclipse « Daniel Liljeberg
Warning: count(): Parameter must be an array or an object that implements Countable in /www/webvol34/an/96qmbdpibm1sspm/danielliljeberg.se/public_html/blog/wp-includes/post-template.php on line 284

Warning: count(): Parameter must be an array or an object that implements Countable in /www/webvol34/an/96qmbdpibm1sspm/danielliljeberg.se/public_html/blog/wp-includes/post-template.php on line 284

Merge branch med trunk med Subversion och Eclipse

10 juni, 2010 av Daniel Liljeberg Lämna en kommentar »

Många har idag insett fördelarna med någon form av versionhantering när de utvecklar. Vare sig du använder dig av CVS, SVN, git, perforce eller något annat system så finns det mycket att tjäna på denna typ av system. Detta blir speciellt uppenbart när många personer jobbar på ett gemensamt projekt och flera olika team kanske jobbar på olika features parallellt. Här kommer vi att tala om Subversion (SVN) och konceptet branches (grenar) som existerar i de flesta versionhanteringssystem. Var branches gör är att de låter dig hantera olika versioner av din kodbas parallellt för saker som att underhålla gamla versioner, utveckling av nya features eller experimentella features som kanske aldrig blir en del av produkten. Men med branching så kommer också något som kallas merging, alltså att slå ihop ändringarna i din parallella kodbas med den ursprungliga igen. Detta görs mer eller mindre bra i olika versionhanteringssystem. Här skall jag visa hur du går tillväga om du använder SVN via Subclipse under Eclipse.

För en som aldrig gjort detta tidigare så kan det vara lite av en djungel, speciellt när man gör det från terminalen. Fram tills nydligen hade inte SVN något direkt bra stöd för det heller om man skötte ofta mergning med ett externt python script. Nu klarar dock SVN av det hela och med Subclipse kan det nästan bli riktigt enkelt även för någon som aldrig tidigare gjort en merge. Stegen är i princip identiska med de hos alla GUI’n för SVN eller om man gör det direkt i terminalen.

Merge Branch till Trunk

Låt oss säga att du haft en sprint (om ni tex kör SCRUM) eller bara är klar med en ny feature som ni utvecklat i en egen branch för att inte störa kodbasen i trunken (som ofta är bra att hålla i ett skick där det går att kompilerbar och släppa). Vad vi nu vill göra är alltså att föra in våra ändringar ifrån vår branch tillbaka till vår trunk. Vad vi nu skall göra, steg för steg, är följande.

  1. Se till att all kod i trunken är uppdaterad (vilket den normalt skall vara om folk inte arbetar mot trunken i sin dagliga utveckling, något jag avråder ifrån).
  2. Lös alla konflikter.
  3. Se till att din working copy nu är trunk, dvs ditt du skall merga till. Här blir många ofta konfunderade och tänker att de måste ju stå i den branch de vill merga in till trunk. Men tänk som så att du skall stå där dit du vill lägga in ändringarna som gjorts i någon annan branch.
  4. Välj Merge ifrån Team menyn på trunk.
  5. Som From URL pekar du på den branch du vill merga ihop med din trunk. I detta fall branch 2.65 av bar.
  6. Ändra From Revision till den senaste revisionen som mergades ihop med din trunk. Detta är då man generellt inte vill hålla på att merga hela branchhistoriken. Du vill bara köra merge på de ändringar som skett sedan du sist gjorde en merge.Jag vet inte om SVN nu har något bra system för att hålla koll på detta själv, men förut (och jag fortfarande) letar upp detta revisionsnummer genom att ditta på mina logg över commit meddelanden. Håll även detta revisionsnummer i minnet då vi kommer använda det i vårt commit message för mergen senare. I många fall, speciellt om man inte mergat fram och tillbaka som en galning, kan man komma undan med att köra HEAD:HEAD när man gör sin merge.
  7. To Revision skall oftast vara HEAD då man vill merga till och med sin sista commit.
  8. Klicka nu på Merge och låt SVN göra sitt jobb.
  9. Lös alla uppkomma konflikter.
  10. Gör en commit som inkluderar hela din merge. Ett exempel på commit message för en merge kan vara

Hoppas denna lilla snabba guide kan hjälpa några av er.

Flattr this!

Annonser

Kommentera

Du måste vara inloggad för att kunna posta kommentarer..