# publish.rb
# Do a safe "publish" - means an integration back to the main line from a development line.
# Integrate from development to main is called a "catchup".
#
# Assumes branch spec parameter is always main->dev branch direction (should of course validate this)
#
# Note lack of error checking etc!
# Author: Robert Cowham
# Usual disclaimers apply
require "P4"
p4 = P4.new
# TODO - pass as parameters and validate.
p4.port = "1666"
p4.client = "bruno_ws"
p4.user = "robert"
p4.exception_level = 1
branch = ARGV[0]
def die(msg, files)
print "You haven't caught up - " + msg + files.join("\n")
exit(1)
end
begin
p4.connect
# Check if anything needs to be "caught up"
catchup_list = p4.run_integ("-b", branch, "-n")
if catchup_list.size > 0
die("files to catchup:", catchup_list)
end
# Now do the integrate into main
p4.run_integ("-b", branch, "-r")
# and resolve safely - should resolve everything!
p4.run_resolve("-as")
resolve_list = p4.run_resolve("-n")
if resolve_list.size > 0
die("some files couldn't be safely resolved:", resolve_list)
end
# At this point I would build and test and check for errors before submitting...
print "All files ready to submit!"
rescue
print "Warnings: ", p4.warnings
print "Errors: ", p4.errors
end