[p4] Obtain a clean workspace [Re: Is there a way to auditaworkspace?]

Slava Imeshev imeshev at yahoo.com
Tue Aug 18 14:27:21 PDT 2009


 

> -----Original Message-----
> From: perforce-user-bounces at perforce.com 
> [mailto:perforce-user-bounces at perforce.com] On Behalf Of Matt 
> Janulewicz
> Sent: Tuesday, August 18, 2009 10:16 AM
>
> I'm still wondering why people 'distrust' Perforce so much and want 
> clean workspaces so often. The tool was obviously purchased to feel
a 
> need and I still think there are enough facilities built in 
> to Perforce to not *have* to do clean syncs all the time.

I don't think the original question was about doing syncing all the
time.

> Our build processes rarely do clean syncs for day-to-day continuous 
> builds. In the games industry, for instance, you might be talking
about  
> dozens of gigs of syncing for a build. Why bother? Leverage the
tool, 
> re-educate, play to the strengths of Perforce instead of working
around 
> perceived weaknesses.

Incremental builds is way to go, no one argues that. We have customers
who even have to "stick" build agents in a build farm to a particular
host
to maintain incremental builds that otherwise take 12 hours to
resync/rebuild.

Yet, there are many legitimate cases when a clean build is need, such
as
release or QA builds. Build workspaces accumulating state that is out
of sync with the actual state of the codebase in Perforce is a fact of
live. 
Libraries and source files get overwritten without changing time
stamps 
or R/W flags, code generated etc. 

It sure possible to develop a system that would never call p4 sync -f,
but 
the toll on the server will be higher compared to p4 sync -f plus a
local p4proxy 
because for a production build it has to be assumed that the
incremental 
workspace cannot be trusted. Then one ends up diffing all files in a
workspace,
which is way more expensive compared to a sync, especially if have
table is not 
updated (p4 sync -f -p).

Regards,

Slava Imeshev
vimeshev at viewtier.com
www.viewtier.com



> 
> 
> -Matt
> 
> 
> Paul-Marc Bougharios wrote:
> >
> > Another way of having a "clean" workspace is to delete and 
> recreate it 
> > from
> > Perforce side only.
> > It can be done by doing:
> > p4 have > have.log
> > p4 client -o > client.log
> > p4 client -d
> > p4 client -i < client.log
> > p4 -x have.log flush
> >
> > If there is a portion not needed, one would "un-sync" the 
> path concerned
> > before executing the above commands.
> > As a reminder, "un-syncing" can be done by:
> > p4 sync //PATH/...#0
> >
> > Cheers,
> > Paul-Marc Bougharios
> >
> >
> > On Tue, Aug 18, 2009 at 6:53 PM, Richard Kistruck 
> > <rhsk at ravenbrook.com>wrote:
> >
> > > (Note change of topic, from auditing an existing workspace, to 
> > obtaining a
> > > new clean one).
> > >
> > > On 2009-08-18Tue, at 04:31, Slava Imeshev wrote:
> > >
> > >> p4 sync -f a bullet-proof way of having a clean build
> > >>> workspace, which is a good idea for release/QA builds.
> > >>>
> > >>
> > >> I should have mentioned that "bullet-proof" implied emptying
> > >> the build workspace before running p4 sync -f.
> > >>
> > >
> > > "sync -f" DOES NOT overwrite open files.  If you want to 
> obtain a clean
> > > workspace, you must revert all open files first, or no 
> amount of syncing
> > > will help you.
> > >
> > >  <
> > > 
> > 
> http://www.perforce.com/perforce/doc.091/manuals/cmdref/sync.h
> tml#1040665>
> > >
> > > (And, even worse, when you have an open file, "p4 sync -f" gives
a
> > > potentially misleading report of "myfile.txt - file(s) 
> up-to-date." 
> > -- try
> > > it!  Your p4 version may differ...)
> > >
> > >
> > >
> > > To obtain a clean workspace, starting from nothing, one suitable

> > procedure
> > > is:
> > >
> > >  1.  p4 revert mywork/...
> > >  2.  rm -rf mywork
> > >  3.  p4 sync -f mywork/... at NNN
> > >
> > > Discussion: The "revert" is necessary to close any 
> p4-opened files.  You
> > > probably want to check for them with "p4 opened 
> mywork/..." before 
> > blindly
> > > reverting them all!  For anyone who doesn't speak Unix, 
> the "rm -rf" 
> > removes
> > > the "mywork" directory and everything it contains.
> > >
> > > (One more note: If you are doing this from a script, and 
> relying on 
> > it for
> > > a product that carries your reputation, then you had better also

> > make sure
> > > your script checks for and halts if there are any errors 
> from the p4
> > > commands, such as from the network going down!)
> > >
> > > Again: this is the procedure I use, to obtain a small clean 
> > workspace from
> > > scratch; corrections or improvements are welcomed.
> > >
> > > Richard Kistruck
> > > Ravenbrook Limited
> > > _______________________________________________
> > > perforce-user mailing list  -  perforce-user at perforce.com
> > > http://maillist.perforce.com/mailman/listinfo/perforce-user
> > >
> > _______________________________________________
> > perforce-user mailing list  -  perforce-user at perforce.com
> > http://maillist.perforce.com/mailman/listinfo/perforce-user
> >
> _______________________________________________
> 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