Of course without uploading a zip.
As you point out, if you have the zip of it, you certainly can. By default, no, I don’t know of any existing setting or plugin that makes this automatic.
I think the hardest part will be a quick and cheap way of identifying when a plugin’s trunk is newer than the currently-installed plugin. Good luck.
Oh no! That is the global revision number.
$ wget -S http://plugins.svn.ww.wp.xz.cn/sucuri-scanner/trunk/
HTTP/1.1 200 OK
Date: Thu, 25 Jun 2015 21:55:03 GMT
Server: Apache
Last-Modified: Fri, 19 Jun 2015 07:44:52 GMT
ETag: W/"1184001//sucuri-scanner/trunk"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Length: 633
Keep-Alive: timeout=2, max=10000
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
The ETag has the last revision number of the current plugin.