Often, untracked files will not be salient to users until the
time comes to arc diff, upon which they will cause a prompt. Often
the untracked files are not precious, and can safely be removed -- but
the user needs to remember to do so after the arc diff completes,
which may be after crafting a long commit message, or dealing with
lint prompts. This makes it likely they will entirely forget to clean
up the untracked files, and will be subjected to the same prompt upon
the next arc diff.
Resolve this vicious circle by allowing the user to remove the
untracked files at the self-same prompt. This makes use of
Filesystem::remove rather than using git clean or equivalent because
it guarantees that the files that were shown to the user as
"untracked" is the precise set of files that are removed; it is not
subject to race conditions if something is altering the repository
simultaneously. Additionally, while git clean exists, Mercurial's
hg purge must be enabled as an extension (though this can be done on
the command line), and Subversion has no built-in command to
accomplish this.
Use the '!' key for this behaviour, as that is unlikely to be typed by
accident, as it requires holding down ⇧ on most keyboards.
This switches the terminology from "untracked files" to "untracked
paths", as git displays untracked directories as merely the directory
name, not all of its contents.