How much smart should computer software have? Should a piece of software anticipate user error and correct or prevent it? Case in point -- Teamware, a source control system from Sun. When work is being done on the same source file between two releases, this system detects it and offer a way for you to merge the work together. As part of the merge process, you can type in command to compare one version with the other before deciding what to do. It may goes something like:
diff p c # to compare parent version with child version accept c # after seeing that the child version is the better version
However, what if I meant to type in diff p c but typed diff p p instead? Comparing the same version will result in no difference. If I did not catch my mistake, I may end up accepting, wrongly, the parent version. Should the system refuse to execute the diff p p, the parent to parent compare? I think so.