Git: Difference between revisions

From Mu2eWiki
Jump to navigation Jump to search
No edit summary
(Replaced content with " This page is obsolete, please see GitHubWorkflow")
Tag: Replaced
 
(74 intermediate revisions by 5 users not shown)
Line 1: Line 1:


==Introduction==
This page is obsolete, please see [[GitHubWorkflow]]
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.
 
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.
 
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 repositories.  See [[#Repositories|Repositories]] below for more details on repositories.
 
See [[#References|the references]] for more details on Redmine and git.
 
==Quick Start==
Please also see the basic [[CodeRecipe|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 [https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/wiki/Git_Workflow_for_Mu2e mu2e commit instructions]
 
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].
 
* checkout the main repository
** readonly: <pre>git clone http://cdcvs.fnal.gov/projects/mu2eofflinesoftwaremu2eoffline/Offline.git</pre>
** with kerberos authentication for committing code <pre>git clone ssh://p-mu2eofflinesoftwaremu2eoffline@cdcvs.fnal.gov/cvs/projects/mu2eofflinesoftwaremu2eoffline/Offline.git</pre>
* checkout the head to a local working branch (recommended)
<pre>git checkout -b work</pre>
* see the history of a file
<pre>git log fileSpec</pre>
* list tags
<pre>git tag -l</pre>
* checkout a tag or branch into the working area
<pre>git checkout tagOrBranchName </pre>
* update the local repository
<pre>git fetch</pre>
* update the local repository and checkout the head into the working area
<pre>git pull</pre>
* see what the status is
<pre>git status</pre>
* command line help
<pre>git status help</pre>
* git browser (to see a graphical history of commits)
<pre>gitk --all</pre>
 
 
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 [https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/wiki/Git_Workflow_for_Mu2e mu2e commit instructions]
 
==Repositories==
 
One important piece of the mu2e offline code is the [[BTrk]] UPS product, which contains our Kalman track fit code, and is stored in the [https://github.com/KFTrack/BTrk BTrk github repo]. 
 
All of the rest of the mu2e Offline code and tools are in Redmine repositories.
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]'''. 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.
 
Here is a (possibly incomplete) list of the repositories.
 
{|style="width: 100%"
|-
|style="width:20%"|'''content'''
|style="width:30%"|'''user'''
|style="width:35%"|'''name'''
|style="width:15%"|'''alias'''
|-
|-
|  || p-mu2e_artdaq || mu2e_artdaq ||
|-
|  || p-mu2e_artdaq || mu2e_artdaq-core ||
|-
| [https://cdcvs.fnal.gov/redmine/projects/mu2eccfc F-C limit setting] || p-mu2eccfc || mu2eccfc-mu2eccfc || mu2eccfc.git
|-
|  || p-mu2e-daq-firmware || mu2e-daq-firmware ||
|-
|  || p-mu2e-daq-firmware || mu2e-daq-firmware-dtc ||
|-
|  || p-mu2e-dcs || mu2e-dcs ||
|-
|  || p-mu2e_detector_construction_db || mu2e_detector_construction_db ||
|-
| [[MCProdWorkflow|grid tools]]  || p-mu2egrid || mu2egrid ||
|-
| Offline || p-mu2eofflinesoftwaremu2eoffline || mu2eofflinesoftwaremu2eoffline || Offline.git
|-
| [[Jenkins]]  || p-mu2eofflinesoftwaremu2eoffline || mu2eofflinesoftwaremu2eoffline-codetools || codetools.git
|-
| [[DataTransfer|data handling]] || p-mu2eofflinesoftwaremu2eoffline || mu2eofflinesoftwaremu2eoffline-dhtools || dhtools.git
|-
|  || p-mu2eofflinesoftwaremu2eoffline || mu2eofflinesoftwaremu2eoffline-geomdisplay || geomdisplay.git
|-
| satellite releases  || p-mu2eofflinesoftwaremu2eoffline || mu2eofflinesoftwaremu2eoffline-satellite ||
|-
|  || p-mu2eofflinesoftwaremu2eoffline || mu2eofflinesoftwaremu2eoffline-test ||
|-
| ''obsolete''  || p-mu2eofflinesoftwaremu2eoffline || mu2eofflinesoftwaremu2eoffline-validation || validation.git
|-
| Stntuple framework || p-mu2eofflinesoftwarestntuple || mu2eofflinesoftwarestntuple || Stntuple.git
|-
|  || p-mu2eofflinesoftwareuser || mu2eofflinesoftwareuser-betasource || betasource.git
|-
|  || p-mu2eofflinesoftwareuser || mu2eofflinesoftwareuser-example01 || example01.git
|-
|  || p-mu2eofflinesoftwareuser || mu2eofflinesoftwareuser-streamline ||
|-
|  || p-mu2epbarmodels || mu2epbarmodels ||
|-
|  || p-mu2e-raw-data || mu2e-raw-data ||
|-
| || p-mu2e-tools || mu2e-tools-bintools || mu2ebintools
|-
|[[FileTools]]  || p-mu2e-tools || mu2e-tools-filetools || mu2efiletools
|-
| [[FileTools]] || p-mu2e-tools || mu2e-tools-mu2efilename || mu2efilename
|-
| [[GenerateFcl|generate_fcl]]  || p-mu2e-tools || mu2e-tools-tools || mu2etools
|}
 
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/fermi-redmine/wiki/CreatingRepositories SCD instructions].
Write privileges to each repository can be controlled by the <code>.k5login</code> contents of each group username associated with the repo.
 
A git repository is accessed through a url and the url can be read-only or read/write, which allows commits back to the repo.
Taking values from the table of Redmine repos above, a repo without an alias will have read-only and read/write urls:
<nowiki>http://cdcvs.fnal.gov/projects/</nowiki>'''name'''
ssh://'''user'''@cdcvs.fnal.gov/cvs/projects/'''name'''
and if it has an alias:
<nowiki>http://cdcvs.fnal.gov/projects/</nowiki>'''name'''/'''alias'''
ssh://'''user'''@cdcvs.fnal.gov/cvs/projects/'''name'''/'''alias'''
 
 
 
==References==
*[https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/wiki/Revision_Control_Systems mu2e git and CVS]
*[https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/wiki/Git_Workflow_for_Mu2e mu2e git commit instructions]
*[http://git-scm.com/ git home]  [http://git-scm.com/doc  Documentation] [https://git-scm.com/docs reference]
*[https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/repository redmine repository browser]
*[https://cdcvs.fnal.gov/redmine Fermilab redmine]
*[http://mu2e-docdb.fnal.gov:8080/cgi-bin/ShowDocument?docid=4527Andrei's talk] at the Software and Simulation Meeting, Sept 17, 2014.
*[https://cdcvs.fnal.gov/redmine/projects/cet-is-public/wiki/Marc's_suggested_git_workflow Marc P's suggested git workflow] for simple git projects
*[https://cdcvs.fnal.gov/redmine/projects/fermi-redmine/wiki/GitWorkshop Fermilab git workshop] and related materials
*[https://cdcvs.fnal.gov/redmine/projects/mu2eofflinesoftwaremu2eoffline/wiki managing and creating] new redmine repositories
 
[[Category:Computing]]
[[Category:Code]]
[[Category:CodeManagement]]

Latest revision as of 20:11, 13 May 2021

This page is obsolete, please see GitHubWorkflow