This still breaks in continuum. Here's the problem: continuum may update many different projects within the same VM. If it is always updating the working directory on the client spec to a different directory, then every time the checkout command is executed perforce returns the entire set of source files. This means continuum will build the project every single time, even if no changes have occurred. Here's an example:
1. Project 1's home is in /home/continuum/1
2. Project 2's home is in /home/continuum/2
3. Continuum builds project 1
4. change log command creates clientspec foobar1
5. Continuum builds project 2
6. change log command uses default clientspec foobar1
7. change log command sets working directory to /home/continuum/2
8. Perforce interprets this as "the client has switched to a new working directory, and I have no idea what state the files in that directory are in, so I'm going to check out everything"
9. Change list is generated, even though no files are changed
10. Continuum proceeds to build project 2
Suggested fix:
1. Use a system property to determine whether or not to store clientspecs for future use. Default to true.
2. Change PerforceChangeLogCommand to use PerforceScmProvider.getClientSpecName(). That way, it will generate the same clientspec used by the checkout command for the same working directory.
Another fix would be to maintain a map of working directory to clientspec, but I'm not sure where exactly you'd store this.
John, please attach a standard SVN diff. Your diff does not contain the filename headers.
svn diff > patch.diff