Uma ideia:
find /project -maxdepth 1 -type d \( -name .svn -execdir svn up \; \
-o -name .hg -execdir hg pull \; \)
Edit: talvez algo como
find /project \( -execdir test -d {}/.svn \; -execdir sh -c \
'cd {} && svn update' \; -o -execdir test -d {}/.hg \; \
-execdir sh -c 'cd {} && hg pull' \; \) -prune