IntegMgr (Class)

In: autointeg.rb
Parent: Object

This simple class encapsulates the functionality of this script. Essentially, we integrate using a branchspec and auto resolve with ‘Accept Theirs’. This means that there’s no support for maintaining variant branches here, only master/slave branches. Useful for so-called ‘shared files’ (VSS-style).

Methods

Attributes

branch  [R] 
p4  [R] 

Public Class methods

[Source]

     # File autointeg.rb, line 101
101:     def initialize( p4, branchspec )
102:         @p4    =  p4
103:         @branch        =  branchspec
104:     end

Public Instance methods

Create a new empty changelist for this transaction

[Source]

     # File autointeg.rb, line 145
145:     def create_change( changeno )
146:         spec = p4.fetch_change
147:         spec[ "Files" ] = Array.new
148:         spec[ "Jobs" ]         = Array.new
149:         spec[ "Description" ] = "Automatically propagate change #{changeno} " +
150:                                 "to slave branch."
151:         change = p4.save_change( spec ).shift
152:         if( change =~ /^Change (\d+)/ )
153:             return $1
154:         end
155:         raise( P4Exception, "Unable to create an empty pending changelist" )
156:     end

Integrate the specified change through the branch view and resolve them.

[Source]

     # File autointeg.rb, line 112
112:     def integrate( change )
113:         p4.run_sync
114:         c = create_change( change )
115:         p4.run_integrate( "-c", c, "-b", branch, "-s", 
116:                                                 "//...@#{change},@#{change}" )
117:         p4.run_resolve( "-at" )
118: 
119:         # Build a list of the files to be submitted.
120:         filelist = p4.run_opened( "-c", c ).collect do
121:             |h|
122:             sprintf( "%s#%s (%s)", h[ "depotFile" ], h[ "rev" ], h[ "action" ] )
123:         end
124: 
125:         # If no files were opened for integrate, there's nothing to do, so
126:         # we just delete our pending changelist and get out of here
127:         if filelist.length == 0 
128:             p4.delete_change( c )
129:             return
130:         end
131: 
132:         # Now submit it. 
133:         p4.run_submit( "-c", c )
134: 
135:         admin_report do
136:             "Change #{change} automatically integrated using branchspec " +
137:             @branch + "\n\n"                                             +
138:             "Affected Files:\n\n\t"                                      +
139:             filelist.join( "\n\t" )                                      +
140:             "\n"
141:         end
142:     end

[Validate]