Development teams benefit from version control systems, which manage shared access to code repositories and persist entire project histories for analysis or recovery. Such systems will be efficient if developers commit coherent and complete change sets. These best practices, however, are difficult to follow because multiple activities often interleave without notice and existing tools impede unraveling changes before committing them. We propose an interactive, graphical tool, called THRESHER, that employs adaptable scripts to support developers to group and commit changes—especially for fine-granular change tracking where numerous changes are logged even in short programming sessions. We implemented our tool in Squeak/Smalltalk and derived a foundation of scripts from five refactoring sessions. We evaluated those scripts' precision and recall, which indicate a reduced manual effort because developers can focus on project-specific adjustments. Having such an interactive approach, they can easily intervene to accurately reconstruct activities and thus follow best practices.
There are several well-known techniques for proving non-regularity of a given language, e.g., Myhill-Nerode theorem or Pumping lemma. In this paper, we propose a new technique for proving non-regularity that is completely different from all previously known techniques. Our technique is based on a measure of a language, and provides a geometric intuition for the non-regularity. We demonstrate, with a few examples, the usefulness of our technique. Further, we pose some future work and conjectures which generalize our technique.