The Latest and Greatest
@svenpet
http://svenpet.com
May - June 2013
Sven Peters
@svenpet
http://svenpet.com
Happy Ambassador
Apr ’12 June ’12 Aug ’12 Sep’12 Oct ’12Jan ’12 Dec ’12 Jan ’13 Feb ’13 Apr ’13
5.0 5.1 5.2 6.0
Mar ’13
6
Modern. Fast. Mobile. Simple.
6
Modern. Fast. Mobile. Simple.
JIRA 5
JIRA 6
6
Modern. Fast. Mobile. Simple.
search
results
everything
editable
switch
view
6
Modern. Fast. Mobile. Simple.
+
6
Modern. Fast. Mobile. Simple.
6
Modern. Fast. Mobile. Simple.
Agile
Plan
Epics
sprint planning
Work
configurable
details
Report
Version Report
forecast
Jul ’12 Aug ’12 Nov ’12 Dec ’12 Jan ’13Mar ’12 Feb ’13 Mar ’13 Apr ’13 May ’13
4.2 4.3 5.0 5.1
meeting notes
requirements
blog posts
file directory
release notes
marketing plans
gives you an empty page
and a lot of freedom
Templates
Our solution:
Templateson steroids
Blueprints
new
blueprint
new
blueprint
1. WHAT
placeholder text
2. HOW
2. HOW
easy to find
3. STRUCTURE
sort by properties
3. STRUCTURE
Meeting Notes
File List
Meeting Notes
File List
Requirement Documents
your structured document
find more
Let's talk about coding...
Let's talk about...
Let's talk about...
C
D
E
T GETHER
D·V·C·S [dee] [vee] [cee] [ass]
Distributed Version Control - keeps track of software
revisions and allows many developers to work on a given
project without necessarily being connected to the
network.
The most popular DVCS software is Git.
C
D
E
T GETHER
D·V·C·S [dee] [vee] [cee] [ass]
Distributed Version Control - keeps track of software
revisions and allows many developers to work on a given
project without necessarily being connected to the
network.
The most popular DVCS software is Git.
Distributed
C
D
E
T GETHER
1000101
00101001
100010010
1001010
code
Teamsneed a central place where the
together
comes
Sharing code with others
Protecting your code
C
D
E
T GETHER
Your coding workflow!
C
D
E
T GETHER
Sharing code with others
learn
better
quality
feel better
blame
Why do you want to share
your code changes?
Discuss your code changes
they get merged!
before
use Pull Requests
use Pull Requests
create
use Pull Requests
what do
you think?
create
use Pull Requests
what do
you think?
invite
use Pull Requests
what do
you think?
discuss & approve
use Pull Requests
what do
you think?
merge
use Pull Requests
I know @Ben has
already written an
algorithm for that
involve
Dem Time
on Codeis great !
Share and Collaborate
on Code
should be easy and fast
Share and Collaborate
Simple Workflow
Pull
Request
Branch
Merge
Simple Workflow
Pull
Request
Branch
Merge
No Roles
C
D
E
T GETHER
Protecting your code
C
D
E
T GETHER
Make sure....
Pull
Request
Branch
Merge
No Roles
Simple Workflow
Pull
Request
Branch
Merge
No Roles
Simple Workflow
Pull
Request
Branch
Merge
Some Roles
Simple Workflow
Branch Permissions
Making sure
that the right people can merge code
into the right branches
#1
Pull
Request
Merge
minimum two approvals
Review Rules
Pull
Request
Merge
Review Rules
Making sure
that somebody reviewed the code
#2
Pull
Request
Merge
Build Rules
Pull
Request
Merge
Build Rules
Making sure
that the build stays green after a merge
#3
Project Permissions
Project
Wonderland
Project
Fairytale
Making sure
that the right people have access
#4
to the code they need
Security DevSpeed
The Repo Guard
Beware
Can I get a new Repository?
Please!
Can I get a new Repository?
I'll do in 3
days
Create Repository
Making sure
that the development team can move fast
#5
Your coding workflow!
Teams are different
so are their workflows
Some people
need more
Features
1.
Features
2
Feature 1:
Stash Add-ons
Feature 2:
public	
  class	
  HipChatNotifyHook	
  implements	
  AsyncPostReceiveRepositoryHook,	
  
RepositorySettingsValidator	
  {
	
  	
  	
  	
  private	
  static	
  final	
  String	
  AUTH_TOKEN_KEY	
  =	
  "authToken";
	
  	
  	
  	
  private	
  static	
  final	
  String	
  ROOM_NAME_KEY	
  =	
  "roomName";
	
  	
  	
  	
  @Override
	
  	
  	
  	
  public	
  void	
  postReceive(HookContext	
  context,	
  Collection	
  refChanges)	
  {
	
  	
  	
  	
  	
  	
  	
  	
  String	
  room	
  =	
  context.getSettings().getString(ROOM_NAME_KEY);
	
  	
  	
  	
  	
  	
  	
  	
  createClient(context.getSettings()).notifyRoom(room,	
  "Stash",	
  
HipChatTemplates.buildHtml(refChanges));
	
  	
  	
  	
  }
	
  	
  	
  	
  @Override
	
  	
  	
  	
  public	
  void	
  validate(Settings	
  settings,	
  SettingsValidationErrors	
  errors,	
  
Repository	
  repository)	
  {
	
  	
  	
  	
  	
  	
  	
  	
  if	
  (createClient(settings).authTest())	
  {
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  errors.addFieldError(AUTH_TOKEN_KEY,	
  "Invalid	
  authorization	
  token");
	
  	
  	
  	
  	
  	
  	
  	
  }
	
  	
  	
  	
  }
	
  	
  	
  	
  private	
  HipChatProxyClient	
  createClient(Settings	
  settings)	
  {
	
  	
  	
  	
  	
  	
  	
  	
  return	
  new	
  HipChatProxyClient(settings.getString(AUTH_TOKEN_KEY));
	
  	
  	
  	
  }
}
Write a hook!
Unapprove reviewer hook
Protect unmerged branch hook
HipChat hook
Hooks
Add-Ons
or download one
Rock On!
svenpet.com/slides
@svenpet
http://svenpet.com

Atlassian: The latest and greatest - May/June 2013