Git: Difference between revisions
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. 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 | 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 (which may contain useful info), gantt charts, and bug tracking along with the git respositories. | ||
Based on the git repository's url, you can check out code, and, if you are a code developer, check in modifications. | Based on the git repository's url, you can check out code, and, if you are a code developer, check in modifications. |
Revision as of 18:48, 30 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 (which may contain useful info), gantt charts, and bug tracking along with the git respositories.
Based 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
- readonly:
- 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
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 BTrk github repo.
All of the rest of the mu2e Offline code and tools are in Redmine repositories. 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. 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.
Here is a (possibly incomplete) list of the repositories.
content | user | name | alias |
p-mu2e_artdaq | mu2e_artdaq | ||
p-mu2e_artdaq | mu2e_artdaq-core | ||
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 | ||
grid tools | p-mu2egrid | mu2egrid | |
Offline | p-mu2eofflinesoftwaremu2eoffline | mu2eofflinesoftwaremu2eoffline | Offline.git |
Jenkins | p-mu2eofflinesoftwaremu2eoffline | mu2eofflinesoftwaremu2eoffline-codetools | codetools.git |
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 |
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
mu2e instructions and
SCD instructions.
Write privileges to each repository can be controlled by the .k5login
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:
http://cdcvs.fnal.gov/projects/name ssh://user@cdcvs.fnal.gov/cvs/projects/name
and if it has an alias:
http://cdcvs.fnal.gov/projects/name/alias ssh://user@cdcvs.fnal.gov/cvs/projects/name/alias
References
- mu2e git and CVS
- mu2e git commit instructions
- git home Documentation reference
- redmine repository browser
- Fermilab redmine
- talk at the Software and Simulation Meeting, Sept 17, 2014.
- Marc P's suggested git workflow for simple git projects
- Fermilab git workshop and related materials
- managing and creating new redmine repositories