Bug #6605

Updated by Brett Smith over 4 years ago

Functional requirements:

* When reading Git repositories from the source cluster, it
when a git repository is available through arv-git-httpd, arv-copy should try be able to read it through all the channels specified in the repository object's @clone_urls@ field, in the order they're given.
* When pushing Git repositories
invoke git correctly to use that channel to copy the destination cluster, it should try pushing by both SSH and HTTPS, unless it has good reason to believe that one of these mechanisms won't work (see below).

If arv-copy tries one copying method that fails, and then the second copying method succeeds, the user should only see errors from the first method if debug output is enabled.

Nonfunctional requirements to be addressed:

* Is there anything arv-copy can do to detect whether or not arv-git-httpd is available on the destination cluster? available? If so, should it do that detection, or simply assume that arv-git-httpd is always available and cope with failure?
* Should arv-copy use heuristics to determine which copying method is preferable or more likely to work before trying one or the other? (e.g., prefer arv-git-httpd if the user has no AuthorizedKeys?)
* If both channels seem equally likely (or equally unlikely) to work, which should arv-copy try first?
* How should errors and warnings be handled so they can be shown to the user in failure cases, but suppressed if another copy method succeeds?