SlideShare uma empresa Scribd logo
1 de 41
Baixar para ler offline
Ivano Malavolta
Collaborative software development
with Git
Roadmap
Concepts & workflow
Commands
Branching
GitHub
Lab
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
yourown activity
Version control
“A systemthat 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
Centralized version control
CVS
Distributed version control
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)
Key points of Git
‱ Snapshot-based
– no deltas
‱ Integrity
– Checksums as identification scheme
‱ Three states
– working-staging-production
Key points: snapshot based
Storing data as
changes to a
base version of
each file
Storing data as
snapshots of
the project over
time
key points: integrity
‱ Everything in Git is check-summed before it is stored
– This means it’s impossible to change the contents of any file or directory
without Git knowing about it
‱ Git generates a unique SHA-1 hash – 40 character string of
hex digits, for every commit
‱ Git identifies files and directories by their ID rather than a
version number
– Often you will see only the first 7 characters:
1677b2d Edited first line of readme
258efa7 Added line to readme
0e52da7 Initial commit
Key points: 3 states
These are all local changes
Key points: 3 states
You modify files in yourworking directory
Basic Git workflow:
You stage the files, adding snapshots of them
to your staging area
You do a commit, which takes the files as
they are in the staging area and stores that
snapshot permanently to your Git directory
1
2
3
A more complete workflow
http://documentup.com/skwp/git-workflows-book
Commands
Contents of this part of lecture coming from
https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf
Commands
Commands
Commands
Commands
Commands
Commands
Commands
Commands
Branching
Branching
Branch = an independent line of development
Each branch has its own working directory, staging area, and project
history
Git branches are extremely light and fast
– Instead of copying files from directory to directory, Git stores a branch as a
reference to a commit
image from https://www.atlassian.com/git/tutorials/using-branches/git-branch
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 howsmall—you spawn a new branch to encapsulate your changes
https://www.atlassian.com/git/tutorials/using-branches/git-branch
The main code base
is always stable
It is possible to work
in parallel on different
features
Branching and merging
Imagine you already have 3 commits in your project
Master= The main branch in your project
– Doesn’t have to be called master, but almost always is!
Creating branches
You have to fix issue #53 of your project
Ă  you create a branch called iss53
You fix the issue and commit
Switching branches
Now there is an issue with your production code (e.g., a new bug)
Ă  you have to switch to the master branch
Let’s make the hotfix
By doing this, Git will reset yourworking
directory at the last commit of the branch
Merging branches
Afteryou checked your hotfix,you can put it in production
Ă  you merge the hotfix branch with master
Let’s make the hotfix
Fast-forward: Git just moves the master
pointer forward towards hotfix
Deleting branches
Now the hotfix branch is no longer needed because it points to the
same place as master
Ă  you delete the hotfix branch
And nowyou can continue working on your iss53
Merging branches
If yourwork on iss53 is finished, then you can put it in production
Ă  you merge iss53 into the master branch
This is not a fast-forward merge
In this case Git automatically does a 3-way
merge between the 2 snapshots to be
merged and the common ancestor
Merging branches 1
If yourwork on iss53 is finished, then you can put it in production
Ă  you merge iss53 into the master branch
This is not a fast-forward merge
In this case Git automatically does a 3-way
merge between the 2 snapshots to be
merged and the common ancestor
Merging branches 2
Git automatically creates:
1. a new snapshot containing the result of the 3-way merge
2. a new commit pointing to the new snapshot
If you changed the same part of the same file -> CONFLICT
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
Lab
1. Register to GitHub
2. fork this repo: https://github.com/iivanoo/rest-biter
3. create a Python script your_name.py
4. in the script, add a simple function definition that does something
(even just a print statement)
5. in restBiter.py add:
– an import statement for importing your Python script of step 4
– a statement for calling the function defined in your Python script
6. test the main function by running the script in the terminal:
python restBiter.py http://www.google.com 2 0 500 1000
7. do commit and push your changes to your repo
8. [optional] open a newpull request to merge your changes with the
original repo
References
‱ Official git site and tutorials
– https://git-scm.com
‱ GitHub guides
– https://guides.github.com
‱ Commands cheatsheet
– https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf
Contact
Ivano Malavolta |
Post-doc researcher
Gran Sasso Science Institute
iivanoo
ivano.malavolta@gssi.infn.it
www.ivanomalavolta.com

Mais conteĂșdo relacionado

Mais procurados

5 software design
5 software design5 software design
5 software design
cherrybear2014
 
Presentation on component based software engineering(cbse)
Presentation on component based software engineering(cbse)Presentation on component based software engineering(cbse)
Presentation on component based software engineering(cbse)
Chandan Thakur
 
A summary of software architecture guide
A summary of software architecture guideA summary of software architecture guide
A summary of software architecture guide
Triet Ho
 

Mais procurados (20)

Software Architecture: introduction to the abstraction
Software Architecture: introduction to the abstractionSoftware Architecture: introduction to the abstraction
Software Architecture: introduction to the abstraction
 
Aspect Oriented Development
Aspect Oriented DevelopmentAspect Oriented Development
Aspect Oriented Development
 
Software design
Software designSoftware design
Software design
 
Software Architecture vs design
Software Architecture vs design Software Architecture vs design
Software Architecture vs design
 
SE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design PatternsSE2018_Lec 18_ Design Principles and Design Patterns
SE2018_Lec 18_ Design Principles and Design Patterns
 
5 software design
5 software design5 software design
5 software design
 
[2015/2016] Software development process
[2015/2016] Software development process[2015/2016] Software development process
[2015/2016] Software development process
 
Software Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - DefinitionsSoftware Architecture Course - Part III Taxonomies - Definitions
Software Architecture Course - Part III Taxonomies - Definitions
 
Incremental
IncrementalIncremental
Incremental
 
Presentation on component based software engineering(cbse)
Presentation on component based software engineering(cbse)Presentation on component based software engineering(cbse)
Presentation on component based software engineering(cbse)
 
Basics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET DevelopersBasics of Software Architecture for .NET Developers
Basics of Software Architecture for .NET Developers
 
Software Architecture: Introduction
Software Architecture: IntroductionSoftware Architecture: Introduction
Software Architecture: Introduction
 
A summary of software architecture guide
A summary of software architecture guideA summary of software architecture guide
A summary of software architecture guide
 
Unit i software design principles 9
Unit i software design principles 9Unit i software design principles 9
Unit i software design principles 9
 
Refactoring for Software Architecture Smells
Refactoring for Software Architecture SmellsRefactoring for Software Architecture Smells
Refactoring for Software Architecture Smells
 
Software Architecture by Reuse, Composition and Customization
Software Architecture by Reuse, Composition and Customization  Software Architecture by Reuse, Composition and Customization
Software Architecture by Reuse, Composition and Customization
 
Oose unit 1 ppt
Oose unit 1 pptOose unit 1 ppt
Oose unit 1 ppt
 
Introduction to SOFTWARE ARCHITECTURE
Introduction to SOFTWARE ARCHITECTUREIntroduction to SOFTWARE ARCHITECTURE
Introduction to SOFTWARE ARCHITECTURE
 
Design Principles
Design PrinciplesDesign Principles
Design Principles
 
Software Architecture
Software ArchitectureSoftware Architecture
Software Architecture
 

Destaque

Destaque (20)

Mobile Applications Development - Lecture 0
Mobile Applications Development - Lecture 0Mobile Applications Development - Lecture 0
Mobile Applications Development - Lecture 0
 
Mission planning of autonomous quadrotors
Mission planning of autonomous quadrotorsMission planning of autonomous quadrotors
Mission planning of autonomous quadrotors
 
Modeling behaviour via UML state machines [Software Modeling] [Computer Scie...
Modeling behaviour via  UML state machines [Software Modeling] [Computer Scie...Modeling behaviour via  UML state machines [Software Modeling] [Computer Scie...
Modeling behaviour via UML state machines [Software Modeling] [Computer Scie...
 
Semantic Need: Guiding Metadata Annotations by Questions People #ask
Semantic Need: Guiding Metadata Annotations by Questions People #askSemantic Need: Guiding Metadata Annotations by Questions People #ask
Semantic Need: Guiding Metadata Annotations by Questions People #ask
 
GitHub Talk - Cody Carnachan
GitHub Talk - Cody CarnachanGitHub Talk - Cody Carnachan
GitHub Talk - Cody Carnachan
 
Using Git to Organize Your Project
Using Git to Organize Your ProjectUsing Git to Organize Your Project
Using Git to Organize Your Project
 
How do You Feel Today? Buggy!
How do You Feel Today? Buggy!How do You Feel Today? Buggy!
How do You Feel Today? Buggy!
 
The development workflow of git github for beginners
The development workflow of git github for beginnersThe development workflow of git github for beginners
The development workflow of git github for beginners
 
The road ahead for architectural languages [ACVI 2016]
The road ahead for architectural languages [ACVI 2016]The road ahead for architectural languages [ACVI 2016]
The road ahead for architectural languages [ACVI 2016]
 
EDF2014: Talk of Frank Kresin, Research Director, Waag Society, Netherlands: ...
EDF2014: Talk of Frank Kresin, Research Director, Waag Society, Netherlands: ...EDF2014: Talk of Frank Kresin, Research Director, Waag Society, Netherlands: ...
EDF2014: Talk of Frank Kresin, Research Director, Waag Society, Netherlands: ...
 
PhoneGap: Accessing Device Capabilities
PhoneGap: Accessing Device CapabilitiesPhoneGap: Accessing Device Capabilities
PhoneGap: Accessing Device Capabilities
 
Local data storage for mobile apps
Local data storage for mobile appsLocal data storage for mobile apps
Local data storage for mobile apps
 
Mobile geolocation and mapping
Mobile geolocation and mappingMobile geolocation and mapping
Mobile geolocation and mapping
 
The Mobile ecosystem, Context & Strategies
The Mobile ecosystem, Context & StrategiesThe Mobile ecosystem, Context & Strategies
The Mobile ecosystem, Context & Strategies
 
Handlebars & Require JS
Handlebars  & Require JSHandlebars  & Require JS
Handlebars & Require JS
 
Apache Cordova APIs version 4.3.0
Apache Cordova APIs version 4.3.0 Apache Cordova APIs version 4.3.0
Apache Cordova APIs version 4.3.0
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 
Mobile Apps Development: Technological strategies and Monetization
Mobile Apps Development: Technological strategies and MonetizationMobile Apps Development: Technological strategies and Monetization
Mobile Apps Development: Technological strategies and Monetization
 
UI Design Patterns for Mobile Apps
UI Design Patterns for Mobile AppsUI Design Patterns for Mobile Apps
UI Design Patterns for Mobile Apps
 
Backbone JS for mobile apps
Backbone JS for mobile appsBackbone JS for mobile apps
Backbone JS for mobile apps
 

Semelhante a [2015/2016] Collaborative software development with Git

Version control git day01
Version control   git day01Version control   git day01
Version control git day01
Gourav Varma
 

Semelhante a [2015/2016] Collaborative software development with Git (20)

Intro to git and git hub
Intro to git and git hubIntro to git and git hub
Intro to git and git hub
 
Git 101
Git 101Git 101
Git 101
 
Git 101 - An introduction to Version Control using Git
Git 101 - An introduction to Version Control using Git Git 101 - An introduction to Version Control using Git
Git 101 - An introduction to Version Control using Git
 
Git
GitGit
Git
 
Git for developers
Git for developersGit for developers
Git for developers
 
Introduction to git hub
Introduction to git hubIntroduction to git hub
Introduction to git hub
 
Git hub
Git hubGit hub
Git hub
 
Git
GitGit
Git
 
Git Session 2K23.pptx
Git Session 2K23.pptxGit Session 2K23.pptx
Git Session 2K23.pptx
 
Git basics
Git basicsGit basics
Git basics
 
Git usage (Basics and workflow)
Git usage (Basics and workflow)Git usage (Basics and workflow)
Git usage (Basics and workflow)
 
CSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GITCSE 390 Lecture 9 - Version Control with GIT
CSE 390 Lecture 9 - Version Control with GIT
 
Version control git day01
Version control   git day01Version control   git day01
Version control git day01
 
Version control git day01
Version control   git day01Version control   git day01
Version control git day01
 
Git for folk who like GUIs
Git for folk who like GUIsGit for folk who like GUIs
Git for folk who like GUIs
 
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
Embedded Systems: Lecture 10: Introduction to Git & GitHub (Part 1)
 
1-Intro to VC & GIT PDF.pptx
1-Intro to VC & GIT PDF.pptx1-Intro to VC & GIT PDF.pptx
1-Intro to VC & GIT PDF.pptx
 
02-version control(DevOps Series)
02-version control(DevOps Series)02-version control(DevOps Series)
02-version control(DevOps Series)
 
Git & GitLab
Git & GitLabGit & GitLab
Git & GitLab
 
Mini-training: Let’s Git It!
Mini-training: Let’s Git It!Mini-training: Let’s Git It!
Mini-training: Let’s Git It!
 

Mais de Ivano Malavolta

Mais de Ivano Malavolta (20)

Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
Conducting Experiments on the Software Architecture of Robotic Systems (QRARS...
 
The H2020 experience
The H2020 experienceThe H2020 experience
The H2020 experience
 
The Green Lab - Research cocktail @Vrije Universiteit Amsterdam (October 2020)
The Green Lab - Research cocktail  @Vrije Universiteit Amsterdam (October 2020)The Green Lab - Research cocktail  @Vrije Universiteit Amsterdam (October 2020)
The Green Lab - Research cocktail @Vrije Universiteit Amsterdam (October 2020)
 
Software sustainability and Green IT
Software sustainability and Green ITSoftware sustainability and Green IT
Software sustainability and Green IT
 
Navigation-aware and Personalized Prefetching of Network Requests in Android ...
Navigation-aware and Personalized Prefetching of Network Requests in Android ...Navigation-aware and Personalized Prefetching of Network Requests in Android ...
Navigation-aware and Personalized Prefetching of Network Requests in Android ...
 
How Maintainability Issues of Android Apps Evolve [ICSME 2018]
How Maintainability Issues of Android Apps Evolve [ICSME 2018]How Maintainability Issues of Android Apps Evolve [ICSME 2018]
How Maintainability Issues of Android Apps Evolve [ICSME 2018]
 
Collaborative Model-Driven Software Engineering: a Classification Framework a...
Collaborative Model-Driven Software Engineering: a Classification Framework a...Collaborative Model-Driven Software Engineering: a Classification Framework a...
Collaborative Model-Driven Software Engineering: a Classification Framework a...
 
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
Experimenting on Mobile Apps Quality - a tale about Energy, Performance, and ...
 
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
Modeling objects interaction via UML sequence diagrams [Software Design] [Com...
 
Modeling behaviour via UML state machines [Software Design] [Computer Science...
Modeling behaviour via UML state machines [Software Design] [Computer Science...Modeling behaviour via UML state machines [Software Design] [Computer Science...
Modeling behaviour via UML state machines [Software Design] [Computer Science...
 
Object-oriented design patterns in UML [Software Design] [Computer Science] [...
Object-oriented design patterns in UML [Software Design] [Computer Science] [...Object-oriented design patterns in UML [Software Design] [Computer Science] [...
Object-oriented design patterns in UML [Software Design] [Computer Science] [...
 
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
Structure modeling with UML [Software Design] [Computer Science] [Vrije Unive...
 
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
Requirements engineering with UML [Software Design] [Computer Science] [Vrije...
 
Modeling and abstraction, software development process [Software Design] [Com...
Modeling and abstraction, software development process [Software Design] [Com...Modeling and abstraction, software development process [Software Design] [Com...
Modeling and abstraction, software development process [Software Design] [Com...
 
[2017/2018] Agile development
[2017/2018] Agile development[2017/2018] Agile development
[2017/2018] Agile development
 
Reconstructing microservice-based architectures
Reconstructing microservice-based architecturesReconstructing microservice-based architectures
Reconstructing microservice-based architectures
 
[2017/2018] AADL - Architecture Analysis and Design Language
[2017/2018] AADL - Architecture Analysis and Design Language[2017/2018] AADL - Architecture Analysis and Design Language
[2017/2018] AADL - Architecture Analysis and Design Language
 
[2017/2018] Architectural languages
[2017/2018] Architectural languages[2017/2018] Architectural languages
[2017/2018] Architectural languages
 
[2017/2018] Introduction to Software Architecture
[2017/2018] Introduction to Software Architecture[2017/2018] Introduction to Software Architecture
[2017/2018] Introduction to Software Architecture
 
[2017/2018] RESEARCH in software engineering
[2017/2018] RESEARCH in software engineering[2017/2018] RESEARCH in software engineering
[2017/2018] RESEARCH in software engineering
 

Último

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Último (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Navi Mumbai Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls đŸ„° 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls đŸ„° 8617370543 Service Offer VIP Hot Model
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 

[2015/2016] Collaborative software development with Git

  • 2.
  • 4. Global software engineering Global software engineering Collaboration Coordination Communication Awareness
  • 5. 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 yourown activity
  • 6. Version control “A systemthat 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!
  • 10. 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)
  • 11. Key points of Git ‱ Snapshot-based – no deltas ‱ Integrity – Checksums as identification scheme ‱ Three states – working-staging-production
  • 12. Key points: snapshot based Storing data as changes to a base version of each file Storing data as snapshots of the project over time
  • 13. key points: integrity ‱ Everything in Git is check-summed before it is stored – This means it’s impossible to change the contents of any file or directory without Git knowing about it ‱ Git generates a unique SHA-1 hash – 40 character string of hex digits, for every commit ‱ Git identifies files and directories by their ID rather than a version number – Often you will see only the first 7 characters: 1677b2d Edited first line of readme 258efa7 Added line to readme 0e52da7 Initial commit
  • 14. Key points: 3 states These are all local changes
  • 15. Key points: 3 states You modify files in yourworking directory Basic Git workflow: You stage the files, adding snapshots of them to your staging area You do a commit, which takes the files as they are in the staging area and stores that snapshot permanently to your Git directory 1 2 3
  • 16. A more complete workflow http://documentup.com/skwp/git-workflows-book
  • 17. Commands Contents of this part of lecture coming from https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf
  • 20.
  • 28. Branching Branch = an independent line of development Each branch has its own working directory, staging area, and project history Git branches are extremely light and fast – Instead of copying files from directory to directory, Git stores a branch as a reference to a commit image from https://www.atlassian.com/git/tutorials/using-branches/git-branch
  • 29. 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 howsmall—you spawn a new branch to encapsulate your changes https://www.atlassian.com/git/tutorials/using-branches/git-branch The main code base is always stable It is possible to work in parallel on different features
  • 30. Branching and merging Imagine you already have 3 commits in your project Master= The main branch in your project – Doesn’t have to be called master, but almost always is!
  • 31. Creating branches You have to fix issue #53 of your project Ă  you create a branch called iss53 You fix the issue and commit
  • 32. Switching branches Now there is an issue with your production code (e.g., a new bug) Ă  you have to switch to the master branch Let’s make the hotfix By doing this, Git will reset yourworking directory at the last commit of the branch
  • 33. Merging branches Afteryou checked your hotfix,you can put it in production Ă  you merge the hotfix branch with master Let’s make the hotfix Fast-forward: Git just moves the master pointer forward towards hotfix
  • 34. Deleting branches Now the hotfix branch is no longer needed because it points to the same place as master Ă  you delete the hotfix branch And nowyou can continue working on your iss53
  • 35. Merging branches If yourwork on iss53 is finished, then you can put it in production Ă  you merge iss53 into the master branch This is not a fast-forward merge In this case Git automatically does a 3-way merge between the 2 snapshots to be merged and the common ancestor
  • 36. Merging branches 1 If yourwork on iss53 is finished, then you can put it in production Ă  you merge iss53 into the master branch This is not a fast-forward merge In this case Git automatically does a 3-way merge between the 2 snapshots to be merged and the common ancestor
  • 37. Merging branches 2 Git automatically creates: 1. a new snapshot containing the result of the 3-way merge 2. a new commit pointing to the new snapshot If you changed the same part of the same file -> CONFLICT
  • 38. 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
  • 39. Lab 1. Register to GitHub 2. fork this repo: https://github.com/iivanoo/rest-biter 3. create a Python script your_name.py 4. in the script, add a simple function definition that does something (even just a print statement) 5. in restBiter.py add: – an import statement for importing your Python script of step 4 – a statement for calling the function defined in your Python script 6. test the main function by running the script in the terminal: python restBiter.py http://www.google.com 2 0 500 1000 7. do commit and push your changes to your repo 8. [optional] open a newpull request to merge your changes with the original repo
  • 40. References ‱ Official git site and tutorials – https://git-scm.com ‱ GitHub guides – https://guides.github.com ‱ Commands cheatsheet – https://training.github.com/kit/downloads/github-git-cheat-sheet.pdf
  • 41. Contact Ivano Malavolta | Post-doc researcher Gran Sasso Science Institute iivanoo ivano.malavolta@gssi.infn.it www.ivanomalavolta.com