How do I determine if a directory is part of a Subversion working copy? This is the same question as on
https://stackoverflow.com/questions/7172334/how-do-i-determine-if-a-directory-is-part-of-a-subversion-working-copy but all the answers there except mine are incorrect. The issue is that one needs to distinguish 3 cases, not 2! 1. Positive answer. 2. Negative answer. 3. Arbitrary error. So, solutions based on "svn info 2> /dev/null" are incorrect as they cannot distinguish case 2 and case 3. The error message is important. I was using such a solution, and it took me some time to find the cause of an unexpected negative answer: I had a concurrent "svn up" running in another shell (which I forgot as it was lengthy). I could check that this was indeed a plausible cause: joooj:~/wd> while svn info > /dev/null ; do true; done svn: E200033: Another process is blocking the working copy database, or the underlying filesystem does not support file locking; if the working copy is on a network filesystem, make sure file locking has been enabled on the file server svn: E200033: sqlite[S5]: database is locked, executing statement 'PRAGMA case_sensitive_like=1;PRAGMA synchronous=OFF;PRAGMA recursive_triggers=ON;PRAGMA foreign_keys=OFF;PRAGMA locking_mode = NORMAL;PRAGMA journal_mode = TRUNCATE;' when doing "svn up" in another shell. So I proposed the following script: ------------------------------------------------------------ #!/bin/sh err=$(LC_ALL=C svn info "$1" 2>&1 >/dev/null) if [ $? = 0 ]; then echo yes exit 0 fi case $err in *"is not a working copy") echo no exit 0 ;; esac printf "%s\n" "$err" >&2 exit 1 ------------------------------------------------------------ But is there a better solution? Checking the error message might not be future-proof. -- Vincent Lefèvre <vinc...@vinc17.net> - Web: <https://www.vinc17.net/> 100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/> Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)