collaborative software development with versioning
TRANSCRIPT
Mirco Franzago
Collaborative software development
with versioning
Global software engineering
Global software
engineering
Collaboration Coordination
Communication Awareness
Global software engineering
Collaboration
When the technology brings improvements to the shared space or to the way
users interact with shared artifacts synchronously or asynchronously
Coordination
When the technology brings improvements to the support offered for people
managing themselves, or themselves within a team
Communication
When the technology brings improvements to the way messages and
information are exchanged among people, reducing gaps, ambiguity, or the
effort needed to understand, establish, or continue a conversation
Awareness
An understanding of the activities of others, which provides a context for
your own activity
Version control
“A system that records changes to a file or set
of files over time so that you can recall specific
versions later”
Files can refer to anything:
• source files
• images
• Powerpoint slides
• documents
more concretely, if you screw things up or lose files, you can easily
recover!
Local version control
Fonte: ”Pro Git” [Chacon,Straub] – Second Edition (Apress)
Centralized version control
CVSFonte: ”Pro Git” [Chacon,Straub] – Second Edition (Apress)
Distributed version control
Fonte: ”Pro Git” [Chacon,Straub] – Second Edition (Apress)
Fonte: http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/
Fonte: https://www.atlassian.com/ja/git/migration#!migration-share
Fonte: http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/
Git• Distributed Source Control system
• Open source, free (GNU GPL V2)
• Came out of Linux development
community
– Linus Torvalds, 2005
• Goals:
– Speed
– Simple design
– Strong support for non-linear development
(thousands of parallel branches)
– Fully distributed
– Able to handle large projects like the Linux
kernel efficiently (speed and data size)
Fonte: https://www.atlassian.com/ja/git/migration#!migration-share
Fonte: https://git-scm.com/book/tr/v2/Distributed-Git-Contributing-to-a-Project
Git: branch-based
Fonte: https://www.atlassian.com/git/tutorials/using-branches/git-branch
Fonte: http://blog.osteele.com/posts/2008/05/my-git-workflow/
Branching workflow
Git ENCOURAGES workflows that branch and merge often, even multiple
times in a day
When you want to add a new feature or fix a bug—no matter how big or
how small—you spawn a new branch to encapsulate your changes
The main code base is
always stable
It is possible to work in
parallel on different
features
Fonte: https://www.atlassian.com/git/tutorials/using-branches/git-branch
GitHub
A site for online storage of Git repositories
– You can get free space for open source projects
– or you can pay for private projects
Adds extra functionalities, like:
– web UI
– documentation
– bug tracking (issues)
– feature requests, pull requests
– social interactions among developers
• following, check activities, discover new repos
It is not mandatory, you can:
• use Git locally
• setup a private Git server
GitHub branch-based flow
Fonte: https://guides.github.com/introduction/flow/