Public Repositories   Private Repositories   Help

Overview

This site shows private repositories for the SciNet team; you must login to see them.

The web site allows browsing of the history, viewing files, and download zip or tar.gz files of the listed projects.

These repositories are also on gitrepos.scinet.utoronto.ca, which is accessible over ssh from the McCaul SciNet offices. This is the way all git actions should be done.

The public repositories (also served from the gitrepos server), do not require login. They also allow cloning through the web page, e.g.
git clone https://gitrepos.scinet.utoronto.ca/public/REPONAME.git

Internals

SciNet git repositories

The directory that contains shared git repositories for SciNet currently has its location at:

HOST: gitrepos
PATH: /data/public/ and /data/private

A distinction is made between public ones (which users would be allowed to csee and clone), and private ones, which are for internal SciNet use only (e.g. slide sources, reports, ..). The public ones are stored as subdirectories in the 'public' folder, and the private ones in the 'private' folder.

All repos in these subdirectories are 'bare' repositories. To indicate that, all repository folders follow the convention having a ".git" extension. They are accessible over ssh from the McCaul office, e.g. "git clone gitrepos:/data/private/scinetintro.git".

Creating and cloning

To facilitate the creation and cloning of repos into these folders in a way that they are properly group-shared, there are three helper scripts in both the public and private subdirectories:

  1. reponew

    Creates a new bare git repository with group writable permissions and with a README.md file. Arguments to this script should be the name of the repo (without a .git extension, that'll be added automatically), followed by a description in quotes.

  2. repoclone

    Creates a bare clone of an existing git repository, giving it group writable permissions. Arguments to this script should be the name of the repo (without a .git extension, that'll be added automatically), followed by the path to an existing repo (anything that git clone would also accept).

  3. repomkshared

    Sets group permissions for an existing repository.

  4. repolink

    Creates a symbolic link to an existing git repository. Arguments to this script should be the name of the repo (without a .git extension, that'll be added automatically), followed by the path to an existing repo on the file system. You could use this to link your own repos in without cloning, but they wouldn't be group writable. Another usage of this could be to have a repo that is supposed to show up both as 'private' and as 'shared'. As I am writing this, I'm starting to realize that repolink is probably just a bad idea.

Viewing on the web

One reason to put the repos together is to allow viewing and exploration from a web browser, and to allow cloning of public repos over the web for e.g. course materials (once the gitrepos server is accessible from outside the SciNet ofices, this may be less of an argument, although we could close of ssh and keep http)). For anything else, one should just access the repos using ssh into gitrepos.

Web browsing of these repos is currently implemented using viewgit, a light weight git viewer in php. It allows browsing of the history, viewing files, and download zip or tar.gz files of the listed projects. For the public repos, it also allows cloning over the web.

Viewgit currently lives in /data/public and data/private, which makes it accessible at the following urls:

  1. https://gitrepos.scinet.utoronto.ca

    This url just contains two links to the next two urls:

  2. https://gitrepos.scinet.utoronto.ca/private

    This part is password protected. You must login as with your scinet account (which must be part of the scinet group), or with 'scinetteam'.

  3. https://gitrepos.scinet.utoronto.ca/public

    This has no password protection. This part allows cloning from the command line, which makes it very suitable as a means to distribute example codes for courses etc. For example, one can do "git clone https://gitrepos.scinet.utoronto.ca/public/course.git"

Why just a viewer, and not just install gitlab?

  1. Less chance of hidden side effects by using a web interface.
  2. We all know how to use the git command line.