Upload
chris-muir
View
177
Download
4
Tags:
Embed Size (px)
DESCRIPTION
Slides from Oracle's ADF Architecture TV series covering the Development phase of ADF projects, discussing SVN version control for your ADF projects. Like to know more? Check out: - Subscribe to the YouTube channel - http://bit.ly/adftvsub - Development Playlist - http://www.youtube.com/playlist?list=PLJz3HAsCPVaQfFop-QTJUE6LtjkyP_SOp - Read the episode index on the ADF Architecture Square - http://bit.ly/adfarchsquare
Citation preview
1 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
2 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Real World ADF Design & Architecture Principles
Version Control
15th Feb 2013 v1.0
3 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Learning Objectives
• At the end of this module you should be able to:
– Have a basic understanding of SVN and JDev features – Identify different SVN installation types – Consider different SVN repository layouts suitable for ADF
projects – Acknowledge that you must devise a SVN branching strategy
Image: imagerymajestic/ FreeDigitalPhotos.net
4 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Program Agenda
• Subversion Introduction • Subversion Architecture • Subversion Repository Layout • Subversion vs ADF Architecture
– Single Workspace Layout – Multiple Workspace Layout
• Subversion Best Practices • Git
5 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Subversion Introduction • Free open-source version control system (VCS) • Java EE enterprise defacto VCS • Allow teams to version files, directories, source code • Not a collaboration tool
• Single shared enterprise repository • Uses efficient delta solution for tracking file changes • Accessed via file:// svn:// http:// https://
6 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Program Agenda
• Subversion Introduction • Subversion Architecture • Subversion Repository Layout • Subversion vs ADF Architecture
– Single Workspace Layout – Multiple Workspace Layout
• Subversion Best Practices • Git
7 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 7 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Subversion Architecture
Image: SVN Book
Image Attributed under CC2.0 to Subversion Redbean: http://svnbook.red-bean.com/
8 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
SVN JDeveloper Features
• SVN Client (SVNKit) • Create repositories (local only) • Versioning Navigator (repository browser) • Pending changes window • SVN commands: check-out, commit, merge etc • IDE features: visual file diff, history, visual merge
9 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Program Agenda
• Subversion Introduction • Subversion Architecture • Subversion Repository Layout • Subversion vs ADF Architecture
– Single Workspace Layout – Multiple Workspace Layout
• Subversion Best Practices • Git
10 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Subversion Repository Layout
• SVN repository mimics a file system: directories and files • What can you store in a file system?: SVN is flexible by design • However there is a set of conventions:
<RootDirectory>
/trunk Current development code /tags Snapshots of code /branches Use is variable (& debatable!)
11 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Program Agenda
• Subversion Introduction • Subversion Architecture • Subversion Repository Layout • Subversion vs ADF Architecture
– Single Workspace Layout – Multiple Workspace Layout
• Subversion Best Practices • Git
12 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Subversion vs ADF Architecture
• ADF allows applications to be: – Self contained in one workspace – Separated across multiple workspaces
• How to layout the SVN repository?
Single Workspace
Multiple Workspaces
#1 SVN First
#2 Domain First
13 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 13 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Single Workspace SVN Layout
One directory maps to JDev
workspace name Standard
SVN directories
JDev workspace
code
Branches/ tags also contain
workspace code
14 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 14 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Branches/tags reflect same structure
Each JDev workspace
Further logical
directories if needed Each JDev
workspace code
Standard SVN
directories at root level
Multiple Workspace SVN Layout #1
15 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Multiple Workspace SVN Layout #1 • Advantages
– Checkout at trunk (or unique tag/branch) results in all source code checked out (though you can still check out individual workspaces)
– All versioned together, little library dependency management needed, less requirement on clear team communications
– No cross version dependencies / all or nothing build and release – Suitable for single uber apps where all parts roll out as 1 release
• Disadvantages – No separate versioning – With multiple applications, all must roll out in an update/release even
though only one may have changed
16 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 16 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Each JDev workspace
code
Standard SVN
directories at workspace
level
Each JDev workspace
Logical directories
at root level
Multiple Workspace SVN Layout #2
Branches/ tags only contain
workspace code
17 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Multiple Workspace SVN Layout #2
• Advantages – Can version each workspace separately – Suitable for multiple applications requiring separate release cycles
• Disadvantages – Have to track version dependencies across applications – Build and dependency management tools required – Team communications need to be clear – Messy release cycles
18 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Program Agenda
• Subversion Introduction • Subversion Architecture • Subversion Repository Layout • Subversion vs ADF Architecture
– Single Workspace Layout – Multiple Workspace Layout
• Subversion Best Practices • Git
19 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Subversion Best Practices
• Define a standard checkout location for developer PCs • SVN working copy directory structures should match SVN directory
structures exactly – Easier for build scripts – Easier for developers – Easier to document
• Developers who check out multiple copies of an application need to handle the unique directory names themselves
20 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Subversion Branching Strategies • Allows multiple teams or application versions to be developed consecutively • You need to define your own branching strategy – one size doesn't fit all • Start with a simple branching strategy then evolve it when required
• Attempting to mimic dev/test/prod as branches doesn’t work – Overtime you will have many different dev/test/prod releases
• Some known branching strategies – Branch per feature – Branch per iteration/release – Branch per team
21 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Subversion Branch/Release Strategies • Use a formal numbering scheme (e.g. 1.2, 1.3, 2.0 etc)
– Perpendicular to existing software dev/test/prod rollouts – What designates a release is at your discretion – You may need a "development" and "user/customer" release numbering
scheme ... do users need to know you're at release 4.2.3.54.1234?
• Guidelines for release/branching naming schemes – Each name must be unique – Devise a naming scheme that shows progression – Don’t try and invent the perfect naming scheme
• If Oracle, Microsoft and Apple can't get it perfect, neither will you!
22 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Program Agenda
• Subversion Introduction • Subversion Architecture • Subversion Repository Layout • Subversion vs ADF Architecture
– Single Workspace Layout – Multiple Workspace Layout
• Subversion Best Practices • Git
23 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Git
• Popular contemporary VCS • Seen as replacement for SVN • Not widely adopted in enterprises (yet)
• Decentralized repository model – 1 or more central repositories – Developers can create 1 or more local repositories (~branch) – Developers responsible for merging repositories
• Required for Oracle’s Developer Cloud Services
24 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Image Attributed under CC2.0 to http://programmers.stackexchange.com/questions/96915/using-git-in-enterprise-environment /
25 Copyright © 2013, Oracle and/or its affiliates. All rights reserved. 25 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
What do you think the pros and cons of a
decentralized repository model would be?
Image: imagerymajestic/ FreeDigitalPhotos.net
26 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Is Git Suitable for the Enterprise?
• Or more accurately, is the Enterprise ready for Git?
• 10 things I hate about Git http://bit.ly/PQfT3e • Using Git in the Enterprise http://bit.ly/P6PH8Q • Git based source control in the Enterprise http://bit.ly/MVskur • Subversion 1.8 Released But Will You Still Use Git? http://bit.ly/12YWcmo
• Can you trust your developers to merge code? • Can you trust your developers to backup their repository?
• But do all of your developers have access to the central SVN repository?
27 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Conclusion
• Version control is not a nice to have, it is critical to a well oiled software development effort
• Your goal is to create an "ADF factory" where version control rolls many different releases off the factory floor repeatedly & efficiently
• The more effort you put in the more transparent & automatic it becomes • Your SVN branching strategy needs careful consideration
– Don't trust your developers – Version control is tedious to them – They'll devise an ad hoc mechanism with no thought to the future
28 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.
Further Reading
• Versioning applications in JDeveloper http://bit.ly/Slnf7i • Branching and merging primer http://bit.ly/Vj6p8d • Branching strategies #1 http://bit.ly/13iv6Vk • Branching strategies #2 http://bit.ly/UNxrpU
29 Copyright © 2013, Oracle and/or its affiliates. All rights reserved.