- What are Git, GitHub, and GitHub Enterprise?
- Can I use NC State GitHub?
- Why should I use NC State GitHub over GitHub.com?
- What can NC State GitHub be used for?
- I’m interested! How do I sign up?
- What username/password should I use to login?
- What happens to my data when I graduate?
- Can I add GitHub.com collaborators?
- Can I make my GitHub Pages site public?
- How much space are we given? What can we upload?
- Can we use Large File Storage (LFS)?
- Can we use GitHub Actions?
- Can we use GitHub Packages?
- What are the restrictions for organization names?
- Does NC State GitHub work with any other clients?
- I’m not faculty, staff or a student, but I’d like to join. Can I?
- As a student, do I lose any intellectual property to code I store in NC State GitHub?
- What is the SSH fingerprint for github.ncsu.edu?
- Should I use SSH or HTTPS connection?
- Am I required to use Two Factor?
- Why do I get an error that NC State GitHub has private mode enabled?
- What are the rate limits when using the GitHub API?
- Git has so many commands to learn. Got any tips and tricks?
- My question isn’t answered here.
What are Git, GitHub, and GitHub Enterprise?
According to git-scm.com,
Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. Git is easy to learn and has a tiny footprint with lightning fast performance. It outclasses SCM tools like Subversion, CVS, Perforce, and ClearCase with features like cheap local branching, convenient staging areas, and multiple workflows.
According to the Wikipedia article on GitHub,
GitHub is a web-based hosting service for software development projects that use the Git revision control system. GitHub offers both paid plans for private repositories, and free accounts for open source projects. GitHub is the most popular Git hosting site, and the most popular open source hosting site.
GitHub Enterprise is a solution developed by GitHub that allows for customers to install GitHub on their local network. GitHub Enterprise gives an organization complete control over the management and security of repositories and users. NC State University is licensed to run GitHub Enterprise.
For more information about GitHub Enterprise, see the official GitHub Enterprise Page.
Can I use NC State GitHub?
Use of the NC State GitHub service is free to use for all currently enrolled students, student facing faculty, and non-faculty staff employees of NC State University for the duration of their time at the university.
The Educational Site license for NC State GitHub can be used for just about anything related to university academics, not-for-profit research, business, or support.
If you are unsure and would like to know if your project is allowed to be hosted at NC State GitHub please contact us.
Should I use NC State GitHub or GitHub.com for my project?
NC State GitHub is self-contained and self-managed by NC State University. We give our users the opportunity to create an unlimited number of repositories – both public and private – making NC State GitHub ideal for classroom use and personal projects. Internal groups, called “Organizations“, allow for finer-granularity in specifying which users have access to group-owned repositories.
NC State GitHub is specifically designed to not compete with Github.com as far as public offering. “Public” inside of NC State GitHub is public to the institution, not the world. All access to NC State GitHub is limited to authenticated users.
Only current students, student-facing faculty, staff, and people performing academic, not-for-profit research on behalf of or in collaboration with the university can use NC State GitHub. If you need to collaborate with others not associated with NC State, we suggest using GitHub.com for your project.
If a given project is truly open source, then it may be more appropriate to host it at GitHub.com.
What can NC State GitHub be used for?
NC State GitHub is excellent for version control over files, such as programming projects (both classroom and personal). You create a repository, add files to the repository, and commit changes to the repository periodically to create a new version of your project. If a particular version of a project causes problems then you can easily revert to a previous version to get things working again.
Branches can be created to develop and test new features. Changes are committed to the branch and once testing is done those changes can be merged back into to master.
Organizations allow finer control of users’ access and permissions.
Pull Requests, Issues, and Wikis can be excellent ways to communicate about a project, and the Project boards can be used for project management.
I’m interested! How do I sign up?
If you are a faculty, staff, or a student, you already have access to NC State GitHub. Simply log in with your Unity username and password. Your NC State GitHub account will be created instantly after login.
What username/password should I use to log in?
You will always use your Unity username and current password to log into your account. Do not use your email address as your username.
If you change your Unity password at some point, use the new password to log in.
What happens to my data when I graduate?
Once a Unity account is disabled you will no longer be able to log into NC State GitHub. If you are a student collaborating with a faculty member that will need access to your repositories after you graduate, it is important to make arrangements so that the faculty member has access before you leave. Repositories should be transferred to another user’s account, or into an organization. Your NC State GitHub account is deprovisioned one month after you leave the university, and all content owned by your account is removed.
An archive of your personal data will be sent via Google Drive to your NCSU email address. Only data directly owned by your account will be included in the archive, so be sure to make a fork of any repositories you have access to from other users or organization before you graduate.
If you need longer-term access, a temporary workshop account or no-pay account can be requested on your behalf and granted permissions to your repositories. You will need to speak to your Departmental IT or HR unit to start that request.
More information regarding NC State computing accounts can be found here, https://oit.ncsu.edu/campus-it/rules-and-regulations/student-it-use/unity-account-procedures-students/#activation
Can I add GitHub.com collaborators?
GitHub.com collaborators cannot be added to NC State GitHub. Only current faculty, staff, and students can use NC State GitHub. If you need to collaborate with others not associated with NC State, we suggest using GitHub.com for your project.
Researchers performing not-for-profit research on behalf of or in collaboration with the university may request temporary access through a workshop account or no-pay account. You will need to speak to your Departmental IT or HR unit to start that request.
Can I make my GitHub Pages site public?
The current configuration for GitHub Enterprise only has an all-or-nothing visibility toggle for the Pages feature. Either all pages are publicly visible, or all must require a valid login in order to view the content. When GitHub Enterprise was first adopted by NC State, the visibility of the Pages feature was tied to “Private Mode”, which requires users to login to view any content (including Pages). By the time the visibility for Pages was split away from “Private Mode” in 2.4.0, many users had already created pages which relied on the content only being visible to logged in users. Switching the visibility for all pages now would potentially leak sensitive information on such pages.
We have had several requests to switch the visibility for the Pages feature, and we think it would be a useful change; however, we want to be sure we’re not going to be impacting existing users in doing so. We intend to audit the list of users making use of the Pages feature, and reach out to see if switching the visibility of Pages would impact those using the feature.
At this time, we don’t have an estimate on when (or if) we will be making the change. We recommend looking at other options if you need to host a site that is publicly visible.
How much space are we given? What can we upload?
While NC State GitHub is strongly intended for the versioning of text-based files, binary files are permitted. There are no fixed-limits for the size of a repository or data usage of a user. Instead, we enforce soft limits, warning users who have abnormally large disk-usage.
There is a hard file size limit of 100MB per file. Commits containing files larger than 100MB in size will be rejected when pushing the commits to NC State GitHub. You will need to drop the commits containing the large files before you will be able to push.
Keep in mind, due to the nature of git, NC State GitHub is not well suited for managing binary files, such as images, zip files, Word Documents, PDF files, etc. A better place to store these types of files would be in a space such as a local AFS locker (your campus-wide K:\ drive, or people lockers for engineering students) or in your NC State Google Drive.
Can we use Large File Storage (LFS)?
We have disabled the Large File Storage feature of NC State GitHub due to a lack of control over the feature. Users can upload arbitrarily large files to the LFS store, which currently shares space with the normal repository file storage. Unmetered usage of this feature can lead to instances where a single user can upload enough content to completely consume all the available space on the instance, leading to a service outage.
We are investigating alternative methods of sharding the storage such that the LFS store would be isolated from the normal storage, and are also looking into the possibility of GitHub adding additional restrictions on the use of LFS to prevent overuse of the feature. Unfortunately, until such time as these features are implemented, the LFS feature on NC State GitHub will remain disabled.
Can we use GitHub Actions?
As of March 8th, 2022, all users and organizations in the NC State GitHub Service may utilize GitHub Actions. Some restrictions apply.
Check out our documentation for getting started with Actions.
Can we use GitHub Packages?
The GitHub Actions feature is new with GitHub Enterprise Server 3.0. Currently, access to the Packages feature is disabled in the NC State GitHub instance due to a lack of administrative controls governing storage utilization. Users can upload arbitrarily large files to the Packages repositories. Unmetered usage of this feature can lead to instance where a single users can upload enough content to completely consume all available space on the instance, leading to a service outage.
We have asked GitHub to provide additional restrictions on the use of Packages to prevent overuse of the feature. Unfortunately, until such time as these features are implemented, the Packages feature on NC State GitHub will remain disabled.
What are the restrictions for organization names?
GitHub allows users to create and own an unlimited number of groups, which are referred to as “Organizations“. The only restrictions for an organization name is that it may only contain alphanumeric characters or single hyphens, and cannot begin or end with a hyphen.
Internally, organization names fall into the same namespace as user account login names, which means that if someone has a Unity username that is the same as an existing organization name, that person wouldn’t be able to log into GitHub. Furthermore, the system will not allow you to create an organization with the same name as an existing user.
Since Unity usernames have a maximum length of 11 characters the easiest way to make sure your organization name doesn’t prevent someone from logging in is to use 12 or more characters in your organization name. If it is found that an organization has the same name as someone’s Unity username, that organization will be renamed and the organization owners will be notified or the change.
Organization names that are deemed offensive will be renamed and the owners will be notified of the change.
Does NC State GitHub work with any other clients?
NC State GitHub can be used with almost any other client that can be used with GitHub.com. Some of the more popular options are Eclipse and GitHub for Windows and OS X. Some client will need additional configuration to work properly, since the API endpoints for GitHub Enterprise differ slightly from GitHub.com.
I’m not faculty, staff or a student, but I’d like to join. Can I?
Researchers performing not-for-profit research on behalf of or in collaboration with the university may request temporary access through a workshop account or no-pay account. You will need to speak to your Departmental IT unit or contact us to start that request.
Our license with GitHub does not allow any other users outside the university to use the service.
As a student, do I lose any intellectual property to code I store in NC State Github?
Per university policy, students retain intellectual property rights on their code: https://policies.ncsu.edu/policy/pol-10-00-01
Section 5.1: General Rule. Students will own their INVENTIONS unless (1) the INVENTION is made in the course of the student?s University employment or (2) the INVENTION is conceived or reduced to practice with (a) University-administered funds, (b) SUBSTANTIAL USE OF UNIVERSITY RESOURCES, or (c) another INVENTOR who has a duty to make assignment or has made assignment to the University. Students assign University-owned INVENTIONS in accordance with paragraph 4.6, and are entitled to the same royalty sharing rights as provided to faculty/employee INVENTORS.
Note also that students may not use university-provided resources to run a business or commercial endeavor (sections 3 and 4): https://policies.ncsu.edu/regulation/reg-08-00-02
What is the SSH fingerprint for github.ncsu.edu?
Public key fingerprints can be used to validate a connection to a remote server.
These are the public key fingerprints (in hexadecimal format) for github.ncsu.edu:
These are the SHA256 hashes shown in OpenSSH 6.8 and newer (in base64 format):
You should be able to run the following command to view which fingerprint is used when you make your ssh connection to github.ncsu.edu.
$ ssh -o VisualHostKey=yes firstname.lastname@example.org
Should I use SSH or HTTPS connection?
SSH is our recommended connection method. Once set up, SSH connections are a convenient and easy way to work with your repositories. The setup usually involves four steps, which are documented at help.github.com and linked to below.
- Checking for existing SSH keys
- Generating a new SSH key and adding it to the ssh-agent
- Adding a new SSH key to your NC State GitHub account
- Testing your SSH connection
In some cases, a public SSH key needs to be added to your NC State GitHub account for each computer account you will use to access repositories.
For campus Linux systems, your unity account data, stored in NC State’s distributed file system, AFS, is mounted as your home directory when you log in. If SSH keys have been generated from your AFS home directory, a private key should already be stored in ~/.ssh/, and you should be able to access your repositories assuming the public key has been added to your NC State GitHub account.
For other systems that do not mount network unity accounts as the home folder, Windows, for example, you may need to either generate a new SSH key, copy/import an existing private key to an appropriate location, and/or configure a Git client application to use an existing private key.
Am I required to use Two Factor?
Currently, no accounts are required to enable two factor authentication in NC State GitHub. However, it is highly recommended to enable two factor authentication if you are able to do so. Some organizations may require 2FA as a requirement for membership in the organization.
Enabling two-factor on your account adds an extra layer of security to your account. Even if your username and password are compromised, a two-factor code can prevent an attacker from accessing your account. NC State GitHub accounts can optionally enable two-factor via the User Setting menu under Security.
Why do I get an error that NC State GitHub has private mode enabled?
Why do I get a “Permission denied (publickey).” fatal error?
Many Git and GitHub publications make use of a publicly accessible URL protocol that starts with git:// . For instance, a tutorial might suggest that you to enter a command such as this:
$ git clone git://github.ncsu.edu/myname/helloworld.git
The git:// protocol is not authenticated and will not ask for credentials, but the github.ncsu.edu service only accepts authenticated access requests. You need to provide credentials in order to connect, either as a username and password over HTTPS or by providing an SSH key. So the git:// protocol does not work on github.ncsu.edu.
Use an SSH or HTTPS URL instead, which are authenticated. The GitHub page for each repository has a text box to copy a URL for SSH (git@) and HTTPS (https://) protocols. The command above using authenticated URL formats might look like one of these two commands:
$ git clone email@example.com:myname/helloworld.git
$ git clone https://github.ncsu.edu/myname/helloworld.git
If you use an HTTPS URL, git will ask for a username and password each time it attempts to connect to github.ncsu.edu. The SSH URL relies upon an SSH key copied from the user’s workstation(s) into their NC State GitHub account settings, and does not ask for a username or password. A key is needed from each workstation from which you access github.ncsu.edu through SSH.
What are the rate limits when using the GitHub API?
We enable rate limits for the NC State GitHub API in order to prevent abuse and ensure the stability of the service for all users. Rate limits apply to all users, and cannot be changed for any individual user. Abuse Rate Limiting is also enabled, which limits the use of high impact requests. Users can check their rate limit status via the Rate Limit Endpoint on the API. We use the default rate limits recommended by GitHub, which are currently set to the following:
|Access Type||Rate Limit|
|API Requests||5000 / hour|
|Search API Requests||30 / minute|
|GraphQL API Requests||5000 / hour|
|Abuse Rate Limit||900 / minute|
Git has so many commands to learn. Got any tips and tricks?
Alexander Zeitler has put together an excellent Git cheat sheet that is available in JPG, PDF and PowerPoint formats. You can download a copy at his “gitcheatsheet” repository here: https://github.com/AlexZeitler/gitcheatsheet
My question isn’t answered here.
Feel free to contact us with your question.