Draft: Optimize gitclone cache/update behavior and enforce pre-conditions on shared.
Mostly to speed up and reduce the access to git server (changes only for gitclone):
- use-cache with explicit revision tries network cache before cloning; on hit only git reset runs
- shared requires revision to be set, otherwise prints warning and disables shared
- git fetch in update() respects --depth option
- upload_network_cached guarded by self.use_cache and self.revision
- update() skips fetch when revision is explicitly provided
- Extra tests added to conver changes and prevent regressions