August 23, 2010

Understanding File Status in Surround SCM

Surround SCM
The Surround SCM client includes a status column that compares the local file in the working directory against the latest version on the server.

Surround SCM uses the .MySCMServerInfo file, which is included in each working directory, to quickly determine file status. I have blogged about this file before.

What Does Each Status Mean?

The status may be one of the following: Current - The local file is in sync with the latest version on the server. Modified - The local file has been modified and the changes have not been checked in yet. Old - The local file is outdated. The server version has been updated and the local version had not been updated. Old, Modified - The local file has been modified and the changes have not been checked in. The file on the server has also been modified and this change is not in the local file.  A likely scenario for this is when more than one user works on the same file at the same time. Missing - The local file is not in the local working directory. Unknown - Surround SCM cannot determine the status. Usually this is because the .MySCMServerInfo file is not found in the local directory or is corrupt. Working Directory Conflict - Occurs when a working directory for one branch or repository is being assigned to another branch or repository.

Why is my Status Incorrect?

This is a question that comes up every once in a while. The file status in Surround SCM is modified but, when you view differences between the server and the local version, it does not show any changes. The likely cause is a user setting in the Surround SCM client.  Under Tools > User Options, select the General category.  There you will find a File Comparison setting, which defaults to by timestamp.

This works most of the time, but not always.  Some applications change the modified date of a file when it closes it even if the file has not been modified. Because the local file timestamp is different from what Surround SCM has, it thinks the file has been modified and reflects this in the status.  For a more stringent comparison, change the setting to by timestamp and CRC. After Surround SCM sees the discrepancy in the dates, it would go on to check the CRC.  In our scenario, this would be the same and the status would remain Current.