[Buildbot-commits] [Buildbot] #2121: Allow limited-scope Perforce checkouts

Buildbot nobody at buildbot.net
Tue Oct 4 23:35:47 UTC 2011


#2121: Allow limited-scope Perforce checkouts
----------------------+-----------------------
Reporter:  gmcnew     |      Owner:
    Type:  undecided  |     Status:  new
Priority:  major      |  Milestone:  undecided
 Version:  0.8.4p2    |   Keywords:  p4
----------------------+-----------------------
 I use Buildbot for projects stored in Perforce, and it works great.
 However, our builds require one's clientspec to span hundreds of gigabytes
 of data, very small portions of which may be synced during the build.

 You're probably wondering, "Why do your builds need to do that?" I could
 provide more detail, but it's complicated, proprietary, and, most
 importantly, out of my control. <sigh> Sorry.

 The default behavior of a
 [http://buildbot.net/buildbot/docs/current/manual/cfg-
 buildsteps.html#step-P4%20%28Slave-Side%29 P4 sync step] is to sync
 everything in the clientspec. However, this simply does not work for me,
 because the clientspec is far too broad.

 As a workaround, I've hacked my Buildbot slaves'
 [https://github.com/buildbot/buildbot/blob/master/slave/buildslave/commands/p4.py
 p4.py] to only sync p4base, rather than everything in my clientspec. This
 works fine, but I'd really love similar functionality to be in Buildbot
 proper so my coworkers and I won't have to hack Buildbot's code every time
 we install it.

 '''I'll be happy to write and test a patch for this.'''

 Mostly I'd like a little feedback to figure out:
 1. the best way to implement this
 2. whether a patch would have a chance of actually being mainlined

 My first instinct would be to add an optional "p4sync" argument to P4().
 The value would be a
 [http://www.perforce.com/perforce/doc.current/manuals/cmdref/o.fspecs.html
 Perforce filespec] (example: "!//depot/path/to/sync/..."). If supplied,
 P4._doP4Sync() would pass this string verbatim to "p4 sync" to limit the
 scope of the sync. If not supplied, nothing would change -- the entire
 clientspec would be synced, as before.

 Thoughts?

-- 
Ticket URL: <http://trac.buildbot.net/ticket/2121>
Buildbot <http://buildbot.net/>
Buildbot: build/test automation


More information about the Commits mailing list