Una forma es mediante consultas HTTP directas.
Los clientes de git compatibles con Smart agregan un argumento al final de la primera URL tomada, "[repo]/info/refs? Service = git-upload-pack". Un servidor tonto simplemente enviará el archivo "info/refs" como texto ignorando el argumento, mientras que un servidor inteligente devolverá algunos datos binarios delante de la lista de referencias, incluido el texto "service = git-upload-pack" y una lista de características (de lo cual podrías deducir soporte de "profundidad").
Puede crear una secuencia de comandos de esta prueba inteligente/tonta usando wget o curl para verificar el tipo MIME: text/plain (tonto) vs. application/x-git-upload-pack-advertisement (smart).
$ curl -si http://github.com/git/git.git/info/refs?service=git-upload-pack | grep --binary-files=text '^Content-Type'
Content-Type: application/x-git-upload-pack-advertisement
$ curl -si http://git.kernel.org/pub/scm/git/git.git/info/refs?service=git-upload-pack | grep --binary-files=text '^Content-Type'
Content-Type: application/x-git-upload-pack-advertisement
$ curl -si http://repo.or.cz/r/git.git/info/refs?service=git-upload-pack | grep --binary-files=text '^Content-Type'
Content-Type: text/plain
(Pipe a grep -q "^Content-Type: application/x-git"
y utilizar el código de retorno para la prueba de verdadero/falso.)
Usaría mecanografía de pato: supongamos que es un pato y tíralo al estanque, si fuera un gato, pídele disculpas (y quizás evites volver a tirarlo al estanque). – redShadow