collaborative software development with versioning

17
Mirco Franzago Collaborative software development with versioning

Upload: universita-degli-studi-dellaquila

Post on 22-Jan-2018

409 views

Category:

Software


4 download

TRANSCRIPT

Page 1: Collaborative software development with versioning

Mirco Franzago

Collaborative software development

with versioning

Page 2: Collaborative software development with versioning

Global software engineering

Global software

engineering

Collaboration Coordination

Communication Awareness

Page 3: Collaborative software development with versioning

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

Page 4: Collaborative software development with versioning

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!

Page 5: Collaborative software development with versioning

Local version control

Fonte: ”Pro Git” [Chacon,Straub] – Second Edition (Apress)

Page 6: Collaborative software development with versioning

Centralized version control

CVSFonte: ”Pro Git” [Chacon,Straub] – Second Edition (Apress)

Page 7: Collaborative software development with versioning

Distributed version control

Fonte: ”Pro Git” [Chacon,Straub] – Second Edition (Apress)

Page 8: Collaborative software development with versioning

Fonte: http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/

Page 9: Collaborative software development with versioning

Fonte: https://www.atlassian.com/ja/git/migration#!migration-share

Page 10: Collaborative software development with versioning

Fonte: http://betterexplained.com/articles/intro-to-distributed-version-control-illustrated/

Page 11: Collaborative software development with versioning

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

Page 12: Collaborative software development with versioning

Fonte: https://git-scm.com/book/tr/v2/Distributed-Git-Contributing-to-a-Project

Page 13: Collaborative software development with versioning

Git: branch-based

Fonte: https://www.atlassian.com/git/tutorials/using-branches/git-branch

Page 14: Collaborative software development with versioning

Fonte: http://blog.osteele.com/posts/2008/05/my-git-workflow/

Page 15: Collaborative software development with versioning

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

Page 16: Collaborative software development with versioning

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

Page 17: Collaborative software development with versioning

GitHub branch-based flow

Fonte: https://guides.github.com/introduction/flow/