Difference between revisions of "Git"

From UFRC
Jump to navigation Jump to search
(8 intermediate revisions by the same user not shown)
Line 1: Line 1:
[[Category:Infrastructure]][[Category:Docs]][[Category:Revision Control]]
+
[[Category:Software]]
==Using git.hpc.ufl.edu==
+
{|<!--CONFIGURATION: REQUIRED-->
===Request a group repository===
+
|{{#vardefine:app|git}}
As an example we'll use the ''awesome'' group, administrative user (set up by HPC staff) ''admin'' and a regular user ''student''.
+
|{{#vardefine:url|https://git-scm.com/}}
 +
<!--CONFIGURATION: OPTIONAL (|1}} means it's ON)-->
 +
|{{#vardefine:conf|}}          <!--CONFIGURATION-->
 +
|{{#vardefine:exe|1}}            <!--ADDITIONAL INFO-->
 +
|{{#vardefine:job|}}            <!--JOB SCRIPTS-->
 +
|{{#vardefine:policy|}}        <!--POLICY-->
 +
|{{#vardefine:testing|}}      <!--PROFILING-->
 +
|{{#vardefine:faq|}}            <!--FAQ-->
 +
|{{#vardefine:citation|}}      <!--CITATION-->
 +
|{{#vardefine:installation|}} <!--INSTALLATION-->
 +
|}
 +
<!--BODY-->
 +
<!--Description-->
 +
{{#if: {{#var: url}}|
 +
{{App_Description|app={{#var:app}}|url={{#var:url}}|name={{#var:app}}}}|}}
  
* Open a support ticket in the [http://support.hpc.ufl.edu HPC Support]] ticket system with a name like "Create an HPC Git repository for the "Awesome" group.
+
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.
* List your projected git usage:
 
  
#What group will be accessing it.
+
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.
#Who would be the group administrator (username).
 
#How soon you need it set up.
 
#How much space you need i.e. what type of content is going to be stored in the repository.
 
#The uptime requirements i.e. whether the occasional downtime is acceptable.
 
#Where the repository administrator's public ssh key can be found (you can paste it into the support ticket).
 
  
* Assuming that your usage pattern falls within the limits of our resources we'll create a repository 'awesome' on git.hpc.ufl.edu and configure it for the administrator. After that the administrator 'admin' can do the following:
+
<!--Modules-->
 +
==Environment Modules==
 +
Run <code>module spider {{#var:app}}</code> to find out what environment modules are available for this application.
 +
==System Variables==
 +
* HPC_{{uc:{{#var:app}}}}_DIR - installation directory
  
===admin@linux64===
+
<!--Configuration-->
The admin user on a remote machine ''linux64'' can do the following
+
{{#if: {{#var: conf}}|==Configuration==
* Check out the admin repository
+
See the [[{{PAGENAME}}_Configuration]] page for {{#var: app}} configuration details.
git clone awesome@git.hpc.ufl.edu:gitolite-admin.git
+
|}}
* Add more users e.g. 'student' with a  public key ''student.pub''
+
<!--Run-->
cd gitolite-admin
+
{{#if: {{#var: exe}}|==Additional Information==
cp ~/student.pub keydir/
 
git add keydir/*
 
git commit -m "added user student"
 
git push
 
* Create a new repository ''denovo'' for ''de novo'' assembly scripts and set access to users ''admin'' and ''student''
 
cd gitolite-admin
 
vim conf/gitolite.conf
 
Add a group configuration:
 
@mygroup = admin student
 
Add a repository configuration
 
repo denovo
 
    RW+    =   @mygroup
 
    R      =   @all
 
* Commit and push
 
git add *
 
git commit -m "Set up a new repository denovo for use by admin and student"
 
git push
 
* Create a local working tree for the ''denovo'' project:
 
cd
 
mkdir denovo
 
cd denovo
 
git init
 
git remote add origin awesome@git.hpc.ufl.edu:denovo.git
 
* Add and edit some files
 
* Commit and push to the Git server
 
git add *
 
git commit -m "Initial import"
 
git push origin master
 
Output:
 
Initialized empty Git repository in /git/awesome/repositories/denovo.git/
 
Counting objects: 3, done.
 
Writing objects: 100% (3/3), 231 bytes, done.
 
Total 3 (delta 0), reused 0 (delta 0)
 
To awesome@git.hpc.ufl.edu:denovo.git
 
* [new branch]      master -> master
 
  
After a new user 'student is allowed access they can start using the repository.
+
UFRC git environment  module also contains a 'git-lfs' instance, so you can run 'git lfs ...' after loading the git environment module.
  
===student@linux64===
+
|}}
* Clone the ''denovo'' repository
+
<!--Job Scripts-->
git clone awesome@git.hpc.ufl.edu:denovo.git
+
{{#if: {{#var: job}}|==Job Script Examples==
Output:
+
See the [[{{PAGENAME}}_Job_Scripts]] page for {{#var: app}} Job script examples.
Cloning into denovo...
+
|}}
remote: Counting objects: 3, done.
+
<!--Policy-->
remote: Total 3 (delta 0), reused 0 (delta 0)
+
{{#if: {{#var: policy}}|==Usage Policy==
Receiving objects: 100% (3/3), done.
 
* Work in the git working tree
 
cd denovo
 
Edit and add files
 
* Commit and push the changes to the repository
 
git add *
 
git commit -m "The changes I made"
 
git push
 
  
==Git email reports==
+
WRITE USAGE POLICY HERE (Licensing, usage, access).
We can enable Git email reports for any repository. Please email the support or file a suport ticket. Once enabled, every "push" to the remote repository on git.hpc.ufl.edu will produce a commit email report to a defined list of email addresses.
 
==Multiple SSH keys==
 
To enable a user to have multiple ssh keys for accessing the UFRC Git server the repository administrator can simply put the user's keys under subdirectories in the 'keydir', add, commit, and push as usual. The user must make sure they're using the right key. It's often convenient to create a SSH configuration for each particular combination of repositories and keys. For example,
 
  
* Edit your <code>~/.ssh/config</code> file on a local machine that need to be configured. Let's assume that the main configuration is
+
|}}
Host hpcgit
+
<!--Performance-->
    HostName git.hpc.ufl.edu
+
{{#if: {{#var: testing}}|==Performance==
    User awesomegroup
+
 
    IdentityFile ~/.ssh/id_rsa
+
WRITE_PERFORMANCE_TESTING_RESULTS_HERE
   
+
 
To be able to use an alternate key add the following configuration
+
|}}
    HostName git.hpc.ufl.edu
+
<!--Faq-->
    User awesomegroup
+
{{#if: {{#var: faq}}|==FAQ==
    IdentityFile ~/.ssh/id_rsa_my_other_key
+
*'''Q:''' **'''A:'''|}}
 +
<!--Citation-->
 +
{{#if: {{#var: citation}}|==Citation==
 +
If you publish research that uses {{#var:app}} you have to cite it as follows:
 +
 
 +
WRITE_CITATION_HERE
 +
 
 +
|}}
 +
<!--Installation-->
 +
{{#if: {{#var: installation}}|==Installation==
 +
See the [[{{PAGENAME}}_Install]] page for {{#var: app}} installation notes.|}}
 +
<!--Turn the Table of Contents and Edit paragraph links ON/OFF-->
 +
__NOTOC____NOEDITSECTION__

Revision as of 20:28, 8 April 2022

Description

git website  

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.

Environment Modules

Run module spider git to find out what environment modules are available for this application.

System Variables

  • HPC_GIT_DIR - installation directory


Additional Information

UFRC git environment module also contains a 'git-lfs' instance, so you can run 'git lfs ...' after loading the git environment module.