Difference between revisions of "Git & Atlassian"
From Briki
(→Simple workflow) |
(→Simple workflow) |
||
| Line 10: | Line 10: | ||
=== Simple workflow === | === Simple workflow === | ||
* Create JIRA issue | * Create JIRA issue | ||
| − | * Click | + | * Click '''Create Branch''' on JIRA issue |
** Check source branch is <code>dev</code> | ** Check source branch is <code>dev</code> | ||
** This will transition the JIRA issue to In Progress | ** This will transition the JIRA issue to In Progress | ||
| Line 23: | Line 23: | ||
* Merge in stash on build success | * Merge in stash on build success | ||
** This will transition the JIRA issue to Done | ** This will transition the JIRA issue to Done | ||
| − | ** Select | + | ** Select '''Delete branch''' if the JIRA is complete |
* If the remote branch was deleted, <code>git fetch -p</code> will delete the references to those remote branches locally | * If the remote branch was deleted, <code>git fetch -p</code> will delete the references to those remote branches locally | ||
* Delete branch locally if desired, with <code>git branch -d branchname</code> | * Delete branch locally if desired, with <code>git branch -d branchname</code> | ||
Revision as of 17:50, 5 December 2014
Contents
Getting started
git config --global user.name "John Doe" git config --global user.email [email protected] git config --global log.mailmap true git config http.proxy http://myproxy:8080
Simple workflow
- Create JIRA issue
- Click Create Branch on JIRA issue
- Check source branch is
dev - This will transition the JIRA issue to In Progress
- Check source branch is
-
git fetch -
git checkout feature/JIRA-ID- This will automatically create the new branch locally, based on the new remote branch
- Make changes
-
git commit -am "My commit description" -
git push - Create pull request from
feature/JIRA-IDtodev- This will transition the JIRA issue to In Review
- Merge in stash on build success
- This will transition the JIRA issue to Done
- Select Delete branch if the JIRA is complete
- If the remote branch was deleted,
git fetch -pwill delete the references to those remote branches locally - Delete branch locally if desired, with
git branch -d branchname - Bring the local dev branch up to date with latest changes
-
git checkout dev -
git pull
-
Hook to add branch/issue name to feature branches
This enables JIRA/Bamboo integration so that JIRA can detect build status in the Development pane. Add to .git/hooks/prepare-commit-msg (also works on Windows, at least with msysgit).
Terse - only include issue
#!/bin/sh # # Automatically adds issue ID to every commit message. # Modified from the stackoverflow answer here: http://stackoverflow.com/a/11524807/151445 # # Succeed on all merge messages, as evidenced by MERGE_MSG existing [ -f $GIT_DIR/MERGE_MSG ] && exit 0 # Get branch name and description NAME=$(git branch | grep '*' | sed 's/* //') case "$NAME" in feature/*) # Append issue ID to COMMIT_MSG # For info on parameters to githooks, run: man githooks ISSUE=$(echo $NAME | sed 's/feature\/\([A-Z]*-[0-9]*\).*/\1/') if [ "$ISSUE" != "$NAME" ]; then echo -e "\n[$ISSUE]" >> "$1" fi esac
Verbose - include branch and issue
#!/bin/sh
#
# Automatically adds branch name and branch description to every commit message.
# Modified from the stackoverflow answer here: http://stackoverflow.com/a/11524807/151445
#
# Succeed on all merge messages, as evidenced by MERGE_MSG existing
[ -f $GIT_DIR/MERGE_MSG ] && exit 0
# Get branch name and description
NAME=$(git branch | grep '*' | sed 's/* //')
DESCRIPTION=$(git config branch."$NAME".description)
case "$NAME" in
feature/*)
# Append branch name and optional description to COMMIT_MSG
# For info on parameters to githooks, run: man githooks
ISSUE=$(echo $NAME | sed 's/feature\/\([A-Z]*-[0-9]*\).*/\1/')
if [ "$ISSUE" != "$NAME" ]; then
echo -e "\nIssue: $ISSUE" >> "$1"
BRANCH_PREFIX=""
else
BRANCH_PREFIX="\n"
fi
echo -e "${BRANCH_PREFIX}Branch: $NAME $DESCRIPTION" >> "$1"
esac
Standardise committer name/email address
Use a .mailmap file in the repository root; this is also recognised automatically by Stash.