Note: This is documentation for version 5.4 of Source. For a different version of Source, select the relevant space by using the Spaces menu in the toolbar above
SG (Source Get)
For details on the branch structure see: Branch Structure
Installation
Download the latest git-scm installer from: https://git-scm.com/downloads and install on your system (current verified version is 2.24.0).
When installing git-scm select the defaults below are what those options look like. (note: on the default editor for git can be any text editor of your choice).
Download the following zip: sg-install.zip
Unzip the sg-install.zip to a clean directory where the Source repositories are to be placed. e.g. "C:\Source\"
Open a git bash prompt and change directory to the selected folder. Note git bash is a linux like command prompt
Setup
sg is simply a wrapper around git. Its primary goal is to replicate git commands to multiple folders / repositories within a given parent folder.
The initial clone (pulling down all the source code) can be done with an initial blank directory which has sg.exe and the repositories_git.csv located in it.
Opening a git bash prompt, navigating to the directory in which sg is installed and typing the command "sg clone" will then download a local copy of the Source repositories.
Terminology
- Commit: stores the current contents of the index in a new commit along with a log message from the user describing the changes
Branch: a pointer to a commit
Master: the default name for the first branch
HEAD: a pointer to the most recent commit on the current branch
Merge: joining two or more commit histories
Workspace: the colloquial name for your local copy of a Git repository
Working tree: the current branch in your workspace; you see this in
git status
output all the timeCache: a space intended to temporarily store uncommitted changes
Index: the cache where changes are stored before they are committed
Tracked and untracked files: files either in the index cache or not yet added to it
Stash: another cache, that acts as a stack, where changes can be stored without committing them
Origin: the default name for a remote repository
Local repository: another term for where you keep your copy of a Git repository on your workstation
Remote repository: a secondary copy of a Git repository where you push changes for collaboration or backup
Upstream repository: the colloquial term for a remote repository that you track
Pull request: a GitHub-specific term to let others know about changes you've pushed to a branch in a repository
Merge request: a GitLab-specific term to let others know about changes you've pushed to a branch in a repository
'origin/master': the default setting for a remote repository and its primary branch
Typical Tasks and Commands
All commands listed below are performed on all repositories contained in the folder. If you wish to perform the commands only on one repository simply change directory to that repository and use git commands directory instead.
Task | Command | Description |
---|---|---|
Get initial local copy of all code | sg clone | Used only to get the initial local copy of the Source repositories |
Get latest changes for a specific branch | sg fetch origin <branch> | Fetches a specific <branch>, from the repo. Leave off <branch> to fetch all remote refs. |
Make your local copy switch to a branch | sg checkout <branch> | Check out branch named <branch>. There are a few different cases
|
Add all changes made to a commit | sg add <directory> | Stage all changes in <directory> for the next commit. Replace <directory> with a <file> to change a specific file. Also . can be used to specify all including all changes. |
Commit changes to your local copy | sg commit -m "<message>" | Commit the staged snapshot, but instead of launching a text editor, use as the commit message. |
Push changes to server for everyone else to get | git push origin <branch> | Push the branch to remote server, along with necessary commits and objects. Creates named branch in the remote repo if it doesn’t exist. Drop <branch> and add --all to do all branches. |
See what branches are available on repositories | sg branch | List all of the branches in all repos. |