One of my colleagues ran bisect but forgot to update back to HEAD after finishing it. Another forgot to run 'svn up' in the morning before starting to edit a file, and later got conflicts
Both of these user errors might have been prevented if their client had advised them (during the bisect, for Alice; in the morning, for Bob) that their working copy's BASE tree differs from HEAD. (That is, that 'svn st -u' and 'svn diff --summarize -r HEAD' were non-empty.) Does this sound useful? Would library changes be needed to allow such functionality to be developed? I think the library changes will be straightforward: we would just need to have a "dirty" bit, clear it upon update-to-HEAD, and set it upon backdate and upon "Has HEAD changed?" checks initiated by the libsvn_client consumer. Clients (e.g., $EDITOR plugins) could then be configured to request that check periodically --- say, once per N hours per working copy. Perhaps an editor-agnostic daemon that monitors *all* working copies in one's homedir could be developed, too. (The "dirty" bit would be, more or less, a cache of "Last Changed Revision" of ${local_relpath}@HEAD; it'll have to account for deletions, renames, and replacements, though.) Thoughts?