[p4] PowerShell Integration

Shawn Hladky p4shawn at gmail.com
Fri Dec 1 10:06:54 PST 2006


You may want to wait a bit before using P4.Net.  I have a large set of
changes queued up, and plan on submitting in the next couple of days.  It
will include quite a bit of documentation, a new sample application, a
couple bug fixes, and minor refactoring.

As for PowerShell, It looks really cool, but I haven't dug much into how
cmdlets work.  My guess is that a generic integration would be pretty easy
to pull off building on P4.Net... something like:

p4-run changes -s pending ...

So the arguments would be identical to the std cli, but it would return a
rich object providing tagged output as a list of dictionaries.  In P4.Net, I
call it a P4RecordSet.  I imagine accessing dictionary elements by key in
PowerShell is straight-forward.

This is similar to the approach I have in the MSBuild custom task sample.
Rather than using the Ant/Nant paradigm, where there are separate tasks for
each Perforce activity (P4Sync, P4Label, P4Edit, etc.), I have a single task
to run any p4 command.  Then I abuse MSBuild's ItemGroups and metadata to
provide access to all the tagged output for use later in the script.  In my
next submit, I'll have a sample MSBuild script that demonstrates the
"working offline" technique completely from MSBuild.  Except for some
strange-looking MSBuild transformations, it's quite simple, and you couldn't
accomplish anything close to that with the Ant/Nant paradigm.


On 11/30/06, Robert Cowham <robert at vaccaperna.co.uk> wrote:
>
> No need to start from scratch:
>
> Courtesy of Shawn Hladky:
>
>
> http://public.perforce.com:8080/@md=d&cd=//guest/shawn_hladky/&ra=s&c=CQu@//
> guest/shawn_hladky/P4.Net/?ac=83
>
> Robert
>
> > -----Original Message-----
> > From: perforce-user-bounces at perforce.com
> > [mailto:perforce-user-bounces at perforce.com] On Behalf Of
> > mancaus.40868864 at bloglines.com
> > Sent: 30 November 2006 09:49
> > To: perforce-user at perforce.com
> > Subject: Re: [p4] PowerShell Integration
> >
> > Yes, that's sort of what I was thinking too.
> >
> >
> >
> > I'll have a look at the Ruby
> > implementation - it's probably a good starting point and, as
> > much as it will grate with many, powershell does pay quite a
> > homage to Ruby.
> >
> >
> >
> > Ideally I'd
> > like to be able to do a
> >
> > # Revert open changelists with comments beginning "Temp"
> >
> > Get-P4Changes ... | ?{
> >
> >   $_.Comment.StartsWith( "Temp" } -and $_.IsOpen
> > | %{
> >
> >     $_.Revert()
> >
> >   }
> >
> > }
> _______________________________________________
> perforce-user mailing list  -  perforce-user at perforce.com
> http://maillist.perforce.com/mailman/listinfo/perforce-user
>


More information about the perforce-user mailing list