Voor de liefhebbers als je niet steeds wilt taggen om de trunk in jouw branch te mergen. Draaien vanuit de root in je branch workfolder:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # find stored previous revision previous_merged_revision= File.open("merged_with.txt",'r').readline.chop rescue nil unless previous_merged_revision == nil trunk = "https://repos/trunk" #revision for current head, by querying svn repository and parsing result current_trunk_head_revision = `svn info #{trunk}`.split("\n")[4].delete("Revision: ") current_trunk_url_incl_revision = "#{trunk}@#{current_trunk_head_revision}" # do the merge and store the current head puts `svn merge #{previous_merged_revision} #{current_trunk_url_incl_revision} . ` `echo #{current_trunk_url_incl_revision} > merged_with.txt` else puts "no previous merge found" end |
Dit zijn voor het grootste deel gewoon shell commando's achter mekaar en zouden dus ook met een unix shell script of een batch file gedaan kunnen worden. Alleen voor het vinden van de revisie nummer van de actuele trunk moet je dan wat harder werken. Dit moet met svn info op de URL en dan krijg je zoiets als:
1 2 3 4 5 6 7 8 9 10 | Path: . URL: https://repos/trunk Repository Root: https://repos Repository UUID: 563624ef-ab15-0410-b9c3-ca43eba92057 Revision: 4148 Node Kind: directory Schedule: normal Last Changed Author: james Last Changed Rev: 4147 Last Changed Date: 2008-03-19 16:47:23 +0100 (wo, 19 mrt 2008) |
Ergens op de vijfde regel vind je het revisie nummer. Het opvragen en parsen kan in ruby in een regel.
1 | current_trunk_head_revision = `svn info #{trunk}`.split("\n")[4].delete("Revision: ") |
In eerste instantie wilden we dit proces met een ant script automatiseren, maar de svnant task kent geen svninfo en als je met ant de svn info wilt parsen zul je toch je eigen ant library in java moeten bouwen.
