Kenai.com Source Repository Access
By edwingo on Dec 16, 2009
With last night's deployment, Kenai.com now supports SSH access to Subversion which should help improve performance. Since we provide different ways to access the three types of hosted source repositories: Git, Mercurial (hg), and Subversion (svn). Which should you choose? Well, the answer is: it depends. Though, if you want one method that will always work, then choose the SSH option. In general, SSH will be the fastest and most secure method. However, SSH requires users to upload a public key to the site which can be problematic if you are unfamiliar with keys. Read on if you want other answers that do not require SSH and also for my recommendations.
First, let's consider a couple common usage scenarios for a generic user that is not a project administrator: read-only access and read-write access. Someone who wants to checkout a project's source code only needs read-only access. In this case, the project's admin needs to give "checkout permission" to generic users. By default, project "observers", meaning a user who has "bookmarked" a project, can checkout code. A project admin can change this setting using the set role permissions screen to make access more or less permissive.
For git, the read-only git URL is recommended. For hg, https URLs will work but unless the project admin has relaxed checkout permissions, it may require password authentication. This means that your password will be stored on the client and so you may want to use ssh URLs to protect your password. For svn, https URLs are available and may be more familiar to users, though svn+ssh URLs often perform better.
For the read-write scenario, a developer needs to commit code changes to a repository. Here a project admin must add that person to the project with a role that has write access such as "software developer". For git, ssh URLs are required. For hg and svn ssh URLs are recommended but https is also available.
Summary of Recommendations:
|Repository Type||Read-only Checkouts||Read-Write Commits|
|Mercurial||ssh: or https:||ssh:|
|Subversion||svn+ssh: or https:||svn+ssh:|