[p4] Determining which files a user has checked in between two dates
Mark Allender
marka at Volition-inc.com
Tue May 1 17:58:19 PDT 2007
The simple reason that I'd like to do this is stable builds. I'm sure that phrase along will evoke looks of shock and surprise from people on this list -- yes, there are probably quite a few better ways to do this. But here is our situation -- maybe someone has some interesting input.
We run a something of a continuous build (not through any kind of cruisecontrol type of program, but hand-rolled). These builds are then run through some checks to validate that the build is valid. The game is loaded, levels are loaded and some simple things are done to ensure that data hasn't broken the game, which can be quite common.
We want our army of artists, programmers and desgners to always have working builds since one broken build can take down a team of 80+ people - and if the problem is a data problem, it could take more than a few minues to solve. We'd basically like to approach this problem by having people grabbng the last known good build from the build server plus the users own changes since that last good build. The first part (syncing to the last known good build by the build server) has been working well for us.
The problems is that users can sync to a time/date, but that sync could give them an older version of files that they submitted _after_ the date/time of the last good build from the build machine was stored. We'd like to be able to sync to good build (using time and date), and then have the users grab their changes so that they have a good build plus the stuff that they are working on. In general, we wouldn't need to do this, but we've run into unlucky situations where we go several days between good builds so the users having their own most up to date stuff is important.
We could use branches. I'm wary though of having 150K+ files in about 60+ branches and trying to work with people either script their integrations or having to teach people how to use these kinds of features. I could restrict branches and such, and limit the files that people need to see in their client view, but that can cause problems because in reality I really can't limit all that much for our artists (who make up the majority of our teams). Our programmers are saavy, but the arists and designers not so much. Plus, we store only head revs of some files and just the sheer time to integrate files sometimes causes errors on submit because the head version of a branched file no longer exists by the time the submit happens. These are all excuses, but they add up :-)
Maybe this doesn't make much sense, so I'll be happy to clarify.
As for a more "windows" approach, I was hoping to have something based of batch and built-in DOS commands essentially -- without the need for Perl/Python, whatever. I just cannot necessarily guarantee that any of those are stored on all machines, although I _could_ with not a lot of work.
________________________________
From: Shawn Hladky [mailto:p4shawn at gmail.com]
Sent: Tue 5/1/2007 5:46 PM
To: Mark Allender
Cc: Perforce Users
Subject: Re: [p4] Determining which files a user has checked in between two dates
One tricky part to the logic, is that p4 changes will return changelists in descending order chronologically, but you'll want to sync them in the opposite order. I have to ask, if a user submitted the change, why would they need to sync it? Are they syncing to a different client spec than the one they submitted from?
As for a "more windows" way to do it... what technology do you have in mind? You could script this in a batch file. There's P4COM, P4.Net, vbscript, etc. There's lots of alternatives to using UNIX shell commands.
On 5/1/07, Mark Allender <marka at volition-inc.com> wrote:
I'd like to be able to script retrieval of files that have only changed
between specific times from the depot. Additionally, I'd like to be
able to do it on a per user basis. What I have is a situation where we
have a time/date (we'll call T) which we'd like users to sync to. Then
we'd like to sync only their changes since that time T.
I could do something like
p4 changes -u user //depot/... at T, at new_time
And then grab the changelist number and do
p4 sync //... at changelistnum, at changelistnum
(I think that's right).
I was hoping there might be something that would be, um, more "windows"
friendly since I don't have the luxury (at least today) of having handy
tools like grep, sed, and awk on the 200+ development machines that we
have here.
I've hit a wall here and am wondering if perhaps I'm missing something
obvious. Thanks in advance.
_______________________________________________
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