When I type "svn add path/to/somefile..." and tab to autocomplete, the system should only complete files/directories that are not currently under SVN control. Likewise, when I commit, remove or resolve files, the tab completion should only complete files that are relevant to what I'm doing (i.e., modified, currently in SVN or conflicted). This is especially important in SVN where every single file name you type could potentially benefit from smart autocompletion, but it of applies to other programs.

I know bash has a bash_completion file that can be used to programatically alter this behaviour but I've not found a decent example of SVN completion which actually completes file names rather than SVN command names.

My question is: Does anyone have such a setup? Does anyone use a different shell or tool that does something similar? Has anyone given this any thought?


Take a look at the completion script found here. It may approach doing what you want.

An excerpt looks promising:

    # 'files' is set according to the current subcommand
    case $cmd in
        st*) # status completion must include all files
        ci|commit|revert|di*) # anything edited
        files=$($status $cs| _svn_grcut '@([MADR!]*| M*|_M*)')
        add) # unknown files
        files=$($status $cs| _svn_grcut '\?*')
  • This seems to do it! Note that you must specifically enable file autocompletion in this script - search for the word 'svnstatus' for the relevant setting. I just cant believe people are insane enough not to demand a feature like this from day one. How on earth do people use svn without it? – Jimmy Apr 23 '10 at 13:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.