[p4] problem with programming perforce via python
Nicholas Guarracino
nguarracino at dataviz.com
Mon Jan 8 10:36:46 PST 2007
Roger Day wrote:
> I'm trying to do the following
>
> log = logging.getLogger("hope2p4")
> cmd =self.p4+' change -i -o'
> p = Popen(cmd, stdout=PIPE, stdin=PIPE, close_fds=True, bufsize=1,
> shell=True)
> lcmd = 'Change: new\n'
> (author, reason, bugnr)=metadata
> lcmd += 'Description:\n\t['+ bugnr+'] '+reason+'\n'
> lcmd += 'Files: \n\t'+f+'\n\n'
> log.info("lcmd: "+lcmd)
> p.stdin.write( lcmd )
> p.stdin.close()
> out =p.stdout.read()
> (pre, nr, end)=out.split(' ')
> return nr
>
> A changelist number is returned, but the changelist doesn't contain any
> files.
>
> Once I've created the change-list I then go on to submit in a similar
> fashion but can't because the changelist contains no files.
>
> Any help gratefully received.
I'm sure lots of people will point this out, but there are nifty Python
bindings for p4 that you might want to consider instead of doing
everything yourself:
http://public.perforce.com/guest/robert_cowham/perforce/API/python/index.html
It handles all the marshalling & parsing for you, so you can do stuff like
p4c.run_edit ('//depot/some/file')
f = file (p4c.run_where ('//depot/some/file') [0] ['path'], 'w')
f.write ('Changed by p4ython')
f.close()
change = p4c.run_change ('-o') [0]
change ['Description'] = 'My description'
p4c.input = change
p4c.run_submit ('-i')
--Nick
More information about the perforce-user
mailing list