Difference between revisions of "Git"

From Mu2eWiki
Jump to navigation Jump to search
Line 1: Line 1:
  
 
==Introduction==
 
==Introduction==
The primary source code management system for the Mu2e Offline software is a [http://git-scm.com/ git] repository that is hosted on the Fermilab [https://cdcvs.fnal.gov/redmine redmine] site.  Other Mu2e software is managed using [https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/wiki/Revision_Control_Systems other source code management systems].
+
The primary source code management system for the Mu2e Offline software is a [http://git-scm.com/ git] repository that is hosted on the Fermilab [https://cdcvs.fnal.gov/redmine Redmine] site.  Git is a popular open-source software version control system and Redmine is a software project management system which contains, for each project, a wiki, gantt charts, and a bug tracking along with the git respositories.
  
'''NB''', please follow these [https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/wiki/Git_Workflow_for_Mu2e commit instructions] for the mu2e conventions on commits.
+
Biased on the git repository's url, you can check out code, and, if you are a code developer, check in modifications. 
 +
'''NB''', when committing code, please follow these [https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/wiki/Git_Workflow_for_Mu2e mu2e conventions] only.  Git also has capabilities for tagging code, tracking history and supports splitting off and merging development branches, among many other features.
  
Almost all of the mu2e Offline code is currently in one Redmine repository.
+
Some older parts of Mu2e software is managed using [https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/wiki/Revision_Control_Systems other source code management systems].  Some code, both critical and specialized, is in other, smaller repositoriesSee [[#Repositories]] below for more details on repositories.
One important piece, the [[BTrk]] UPS product, which contains our Kalman track fit code, is stored in the [https://github.com/KFTrack/BTrk BTrk github repo]. 
 
 
 
A git repository is accessed through a url.  For example this is the url for the main offline code resposity
 
ssh://p-mu2eofflinesoftwaremu2eoffline@cdcvs.fnal.gov/cvs/projects/mu2eofflinesoftwaremu2eoffline/Offline.git
 
There exist several other mu2e Redmine repositories for various tools not tightly coupled to Offline.  You can browse [https://cdcvs.fnal.gov/redmine/projects all Redmine projects] and
 
[https://cdcvs.fnal.gov/redmine/projects/mu2e mu2e Redmine].  The mu2e Redmine has subprojects (and sub-subprojects) and each has a repository associated with themFor example in the [https://cdcvs.fnal.gov/redmine/projects/standalone Standalone] subproject, there is a sub-subproject [https://cdcvs.fnal.gov/redmine/projects/mu2eccfc Mu2eCCFC] with repo url:
 
ssh://p-mu2eccfc@cdcvs.fnal.gov/cvs/projects/mu2eccfc-mu2eccfc/mu2eccfc.git
 
In addition, the main mu2e Offline repository has sub-repositories which can be seen on the right sidebar menu on the repository [https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/repository main page].  An example is the "dhtools" sub-repo, which has url:
 
ssh://p-mu2eofflinesoftwaremu2eoffline@cdcvs.fnal.gov/cvs/projects/mu2eofflinesoftwaremu2eoffline-dhtools/dhtools.git
 
  
 
See [[#References|the references]] for more details on Redmine and git.
 
See [[#References|the references]] for more details on Redmine and git.
Line 25: Line 17:
 
If this is the first time you are using git in the mu2e environment, please follow the few steps listed [https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/wiki/Introduction_to_git here under "Configure git"] in order to set up your ~.gitconfig.
 
If this is the first time you are using git in the mu2e environment, please follow the few steps listed [https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/wiki/Introduction_to_git here under "Configure git"] in order to set up your ~.gitconfig.
  
A more detailed introduction to mu2e repositories is [https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/wiki/Revision_Control_Systems mu2e here]
+
A more detailed introduction to mu2e repositories is [https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/wiki/Revision_Control_Systems mu2e here].
  
 
* checkout the main repository
 
* checkout the main repository
Line 53: Line 45:
 
If you are going to commit anything, you must understand and follow the [https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/wiki/Git_Workflow_for_Mu2e mu2e commit instructions]
 
If you are going to commit anything, you must understand and follow the [https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/wiki/Git_Workflow_for_Mu2e mu2e commit instructions]
  
==Creating Redmine repositories==
+
==Repositories==
 +
 
 +
Almost all of the mu2e Offline code is currently in one [https://cdcvs.fnal.gov/redmine/projects/mu2e Redmine repository].
 +
One important piece, the [[BTrk]] UPS product, which contains our Kalman track fit code, is stored in the [https://github.com/KFTrack/BTrk BTrk github repo]. 
 +
 
 +
A git repository is accessed through a url.  For example this is the read/write url for the main offline code respository
 +
ssh://p-mu2eofflinesoftwaremu2eoffline@cdcvs.fnal.gov/cvs/projects/mu2eofflinesoftwaremu2eoffline/Offline.git
 +
There exist several other mu2e Redmine repositories for various standalone tools not tightly coupled to compiled Offline code.  You can browse [https://cdcvs.fnal.gov/redmine/projects all Redmine projects] and
 +
[https://cdcvs.fnal.gov/redmine/projects/mu2e mu2e Redmine].  The mu2e Redmine has subprojects (and sub-subprojects) and each has a repository associated with them.  For example in the [https://cdcvs.fnal.gov/redmine/projects/standalone Standalone] subproject, there is a sub-subproject ''[https://cdcvs.fnal.gov/redmine/projects/mu2eccfc Mu2eCCFC]''' with repo url:
 +
ssh://p-mu2eccfc@cdcvs.fnal.gov/cvs/projects/mu2eccfc-mu2eccfc/mu2eccfc.git
 +
In addition, the main mu2e Offline repository has sub-repositories which can be seen on the right sidebar menu on the repository [https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/repository main page].  An example is the '''dhtools''' sub-repo, which has url:
 +
ssh://p-mu2eofflinesoftwaremu2eoffline@cdcvs.fnal.gov/cvs/projects/mu2eofflinesoftwaremu2eoffline-dhtools/dhtools.git
 +
 
 +
Here is a (possibly incomplete) list of the smaller repositories.
 +
{|style="width: 85%"
 +
|-
 +
|style="width:10%"|'''Name'''
 +
|style="width:20%"|'''Content'''
 +
|style="width:80%"|'''url'''
 +
|-
 +
|  Mu2eCCFC || F-C limit setting || <span style="font-size:70%">ssh://p-mu2eccfc@cdcvs.fnal.gov/cvs/projects/mu2eccfc-mu2eccfc/mu2eccfc.git</span>
 +
|-
 +
|  dhtools || Data Handling || <span style="font-size:70%">ssh://p-mu2eofflinesoftwaremu2eoffline@cdcvs.fnal.gov/cvs/projects/mu2eofflinesoftwaremu2eoffline-dhtools/dhtools.git</span>
 +
|-
 +
|}
 +
 
 +
Creating a Redmine subproject is done by the "add subproject" button on the Redmine project web page.
 +
Creating a sub-repository associated to the main offline repo is explained in the
 
[https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/wiki/Making_a_git_repository_in_redmine mu2e instructions] and  
 
[https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/wiki/Making_a_git_repository_in_redmine mu2e instructions] and  
 
[https://cdcvs.fnal.gov/redmine/projects/fermi-redmine/wiki/CreatingRepositories SCD instructions].
 
[https://cdcvs.fnal.gov/redmine/projects/fermi-redmine/wiki/CreatingRepositories SCD instructions].

Revision as of 21:52, 25 May 2017

Introduction

The primary source code management system for the Mu2e Offline software is a git repository that is hosted on the Fermilab Redmine site. Git is a popular open-source software version control system and Redmine is a software project management system which contains, for each project, a wiki, gantt charts, and a bug tracking along with the git respositories.

Biased on the git repository's url, you can check out code, and, if you are a code developer, check in modifications. NB, when committing code, please follow these mu2e conventions only. Git also has capabilities for tagging code, tracking history and supports splitting off and merging development branches, among many other features.

Some older parts of Mu2e software is managed using other source code management systems. Some code, both critical and specialized, is in other, smaller repositories. See #Repositories below for more details on repositories.

See the references for more details on Redmine and git.

Quick Start

Please also see the basic code recipe for an introduction to setting up the environment, checking out code and building.

If you are going to commit anything, you must understand and follow the mu2e commit instructions

If this is the first time you are using git in the mu2e environment, please follow the few steps listed here under "Configure git" in order to set up your ~.gitconfig.

A more detailed introduction to mu2e repositories is mu2e here.

  • checkout the main repository
    • readonly:
      git clone http://cdcvs.fnal.gov/projects/mu2eofflinesoftwaremu2eoffline/Offline.git
    • with kerberos authentication for committing code
      git clone ssh://p-mu2eofflinesoftwaremu2eoffline@cdcvs.fnal.gov/cvs/projects/mu2eofflinesoftwaremu2eoffline/Offline.git
  • checkout the head to a local working branch (recommended)
git checkout -b work
  • see the history of a file
git log fileSpec
  • list tags
git tag -l
  • checkout a tag or branch into the working area
git checkout tagOrBranchName 
  • update the local repository
git fetch
  • update the local repository and checkout the head into the working area
git pull
  • see what the status is
git status
  • command line help
git status help
  • git browser (to see a graphical history of commits)
gitk --all


Please see the references below or many web resources for details on git concepts, commands and features. If you are going to commit anything, you must understand and follow the mu2e commit instructions

Repositories

Almost all of the mu2e Offline code is currently in one Redmine repository. One important piece, the BTrk UPS product, which contains our Kalman track fit code, is stored in the BTrk github repo.

A git repository is accessed through a url. For example this is the read/write url for the main offline code respository

ssh://p-mu2eofflinesoftwaremu2eoffline@cdcvs.fnal.gov/cvs/projects/mu2eofflinesoftwaremu2eoffline/Offline.git

There exist several other mu2e Redmine repositories for various standalone tools not tightly coupled to compiled Offline code. You can browse all Redmine projects and mu2e Redmine. The mu2e Redmine has subprojects (and sub-subprojects) and each has a repository associated with them. For example in the Standalone subproject, there is a sub-subproject Mu2eCCFC' with repo url:

ssh://p-mu2eccfc@cdcvs.fnal.gov/cvs/projects/mu2eccfc-mu2eccfc/mu2eccfc.git

In addition, the main mu2e Offline repository has sub-repositories which can be seen on the right sidebar menu on the repository main page. An example is the dhtools sub-repo, which has url:

ssh://p-mu2eofflinesoftwaremu2eoffline@cdcvs.fnal.gov/cvs/projects/mu2eofflinesoftwaremu2eoffline-dhtools/dhtools.git

Here is a (possibly incomplete) list of the smaller repositories.

Name Content url
Mu2eCCFC F-C limit setting ssh://p-mu2eccfc@cdcvs.fnal.gov/cvs/projects/mu2eccfc-mu2eccfc/mu2eccfc.git
dhtools Data Handling ssh://p-mu2eofflinesoftwaremu2eoffline@cdcvs.fnal.gov/cvs/projects/mu2eofflinesoftwaremu2eoffline-dhtools/dhtools.git

Creating a Redmine subproject is done by the "add subproject" button on the Redmine project web page. Creating a sub-repository associated to the main offline repo is explained in the mu2e instructions and SCD instructions.

References