Escolar Documentos
Profissional Documentos
Cultura Documentos
Abstract
When deploying software version management and
version control tools, implementers sometimes focus
on perfecting fine-grained activities, while unwittingly
carrying forward poor, large-scale practices from their
previous jobs or previous tools. The result is a wellexecuted blunder. This paper promotes some high-level
best practices that reflect the authors experiences with
software version management.
Table of Contents
Introduction_________________________________________________________________ 1
1. The Workspace_____________________________________________________________ 2
2. The Codeline_______________________________________________________________ 2
3. Child codelines_____________________________________________________________ 4
4. Change Propagation_________________________________________________________ 5
5. Builds ____________________________________________________________________ 6
6. Process___________________________________________________________________ 6
7. Conclusion________________________________________________________________ 7
8. References_ _______________________________________________________________ 7
More about how Perforce supports these best practices_ ______________________________ 8
Introduction
Workspaces
Codelines
Have a mainline.
Give each codeline a policy.
Give each codeline an owner.
Child codelines
Change propagation
Builds
Process
1. The Workspace
2. The Codeline
In this context, the codeline is the set of source files
required to produce your software. Codelines are
branched into child codelines to support specific
variants of the codeline, such as development and release
codelines.
rel1.1
rel2.1
rel2.0
rel1.0
ver2
ver1
rel3.0
ver3
main
projC
projA
projB
rel3.0
projC(ver3)
projB
rel2.0
rel2.1
projA(ver2)
ver1
rel1.0
rel1.1
3. Child codelines
Release 1
Mainline
Softer
Development 1
Development 2
Development 3
Personal Dev 1
Release 2
Firmer
4. Change Propagation
Branching codelines creates the task of propagating
file changes between codelines. The propagation of
changes throughout a flow graph is known as the Flow
of Change. Here are some things you can do to keep it
manageable.
Use the baseline protocol. Stabilizing change flows
continually to softer codelines. Changes from the
softer codelines flow up to the baseline at points
of completion. Changes do not flow up from the
baseline.
Propagate early and often. When its feasible
to propagate a change from one codeline to
Change flows:
firmer codelines
continually
baseline
softer codelines
at points of completion
5. Builds
6. Process
It would take an entire paper, or several papers, to
explore the full scope of software version management
process design and implementation, and many such
papers have already been written. Furthermore, your
shop has specific objectives and requirements that will
be reflected in the process you implement, and we do
not presume to know what those are. In our experience,
however, some process concepts are key to any version
management implementation:
Track change sets. Even though each file in a
codeline has its revision history, each revision in
its history is only useful in the context of a set of
related files. The question What other source files
were changed along with this particular change to
foo.c? cant be answered unless you track change
sets, or sets of files related by a logical change.
Change sets, not individual file changes, are the
visible manifestation of software development.
Track the flow of change. One clear benefit of
tracking change sets is that it becomes very easy
to propagate logical changes (e.g., bug fixes) from
7. Conclusion
Best practices in version management, like best practices
anywhere, always seem obvious once youve used them.
The practices discussed in this paper have worked well
for us, but we recognize that no single, short document
can contain them all. So we have presented the practices
that offer the greatest return and yet seem to be violated
more often than not.
We welcome the opportunity to improve this document,
and solicit both challenges to the above practices as well
as the additions of new ones.
8. References
Berczuk, Steve. Configuration Management Patterns,
1997.
Compton, Stephen B, Configuration Management
for Software, VNR Computer Library, Van Nostrand
Reinhold, 1993.
Continuus Software Corp., Work Area Management,
Continuus/CM: Change Management for Software
Development [PDF]
Dart, Susan, Spectrum of Functionality in Configuration
Management Systems [PDF], Software Engineering
Institute, 1990.
Jameson, Kevin, Multi Platform Code Management,
OReilly & Associates, 1994
Linenbach, Terris, Programmers Canvas: A Pattern for
Source code Management 1996.
Lyon, David D, Practical CM, Raven Publishing, 1997
McConnell, Steve, Best Practices: Daily Build and Smoke
Test, IEEE Software, Vol. 13, No. 4, July 1996
Van der Hoek, Andre, Hall, Richard S., Heimbigner,
Dennis, and Wolf, Alexander L., Software Release
Management,Proceedings of the 6th European Software
Engineering Conference, Zurich, Switzerland, 1997.
Change propagation
perforce.com/sites/default/files/pdf/
p4sandbox-product-brief.pdf
info.perforce.com/Agile-Flow-of-ChangeWP-Offer.html
perforce.com/blog/120113/git-perforceclient
kb.perforce.com/article/1417/git-p4
Builds
Integrations with ALM:
perforce.com/product/integrations/
thirdparty_software_integrations
Agile tools:
perforce.com/product/product_features/
always_agile
Codelines
Streams implement codelines
Perforce Streams:
perforce.com/product/product_features/
perforce_streams
Process
Software Version Management:
perforce.com/products/perforce
Child Codelines
Streams graph, default codeline policies,
tofu scale
Use the Tofu Scale:
oreilly.com/catalog/practicalperforce/
chapter/ch07.pdf
perforce.com
North America
Perforce Software Inc.
2320 Blanding Ave
Alameda, CA 94501
USA
Phone: +1 510.864.7400
info@perforce.com
Europe
Perforce Software UK Ltd.
West Forest Gate
Wellington Road
Wokingham
Berkshire RG40 2AT
UK
Phone: +44 (0) 845 345 0116
uk@perforce.com
Australia
Perforce Software Pty. Ltd.
Suite 3, Level 10
221 Miller Street
North Sydney
NSW 2060
AUSTRALIA
Phone: +61 (0)2 8912-4600
au@perforce.com