Version Control Systems: Git

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
Ancient Greek for Everyone: A New Digital Resource for Beginning Greek Unit 4: Conjunctions 2013 edition Wilfred E. Major
Advertisements

Version Control Systems: Git Αλέξανδρος Χατζηγεωργίου – Μεταπτυχιακό Πρόγραμμα Σπουδών, Τμ. Εφαρμοσμένης Πληροφορικής, 2012.
Παίκτες: 10+ Τα παιδιά κάθονται σε κύκλο. Κληρώνεται ποιος θα παίξει πρώτος. Players: 10+ The children sit in a circle.
Γειά σας.
ΗΥ Παπαευσταθίου Γιάννης1 Clock generation.
6/26/2015HY220: Ιάκωβος Μαυροειδής1 HY220 Asynchronous Circuits.
Business English Ενότητα # 9: Financial Planning Ευαγγελία Κουτσογιάννη Τμήμα Διοίκησης Επιχειρήσεων ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά.
Week 11 Quiz Sentence #2. The sentence. λαλο ῦ μεν ε ἰ δότες ὅ τι ὁ ἐ γείρας τ ὸ ν κύριον Ἰ ησο ῦ ν κα ὶ ἡ μ ᾶ ς σ ὺ ν Ἰ ησο ῦ ἐ γερε ῖ κα ὶ παραστήσει.
WRITING B LYCEUM Teacher Eleni Rossidou ©Υπουργείο Παιδείας και Πολιτισμού.
COURSE CODE: DES-102 COURSE TITLE: DECORATION DRAWING TUTOR: DOMENICA RENKO SEMESTER: FALL 2010 PROJECT: 2 | hand-out: week 10 – hand-in: week 11 | duration:
Install WINDOWS 7 Κουτσικαρέλης Κων / νος Κουφοκώστας Γεώργιος Κάτσας Παναγιώτης Κουνάνος Ευάγγελος Μ π ουσάη Ελισόν Τάξη Β΄ Τομέας Πληροφορικής 2014 –’15.
Τελική εργασία του μαθήματος “Σχεδιασμός Δημιουργικού & Διαφημιστικών Μηνυμάτων” Ιανουάριος 2054 Ομάδα Χ Ονοματεπώνυμο 1 Ονοματεπώνυμο 2 Ονοματεπώνυμο.
Προσομοίωση Δικτύων 4η Άσκηση Σύνθετες τοπολογίες, διακοπή συνδέσεων, δυναμική δρομολόγηση.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Εκπαιδευτικά Προγράμματα με Χρήση Η/Υ Ι ΘΕΩΡΙΕΣ ΜΑΘΗΣΗΣ ΚΑΙ ΝΕΕΣ ΤΕΧΝΟΛΟΓΙΕΣ (Learning Theories and.
Προσομοίωση Δικτύων 3η Άσκηση Δημιουργία, διαμόρφωση μελέτη σύνθετων τοπολογιών.
Εισαγωγή στο Θερινό Σχολείο, 14 – 20 Ιουλίου 2014 Αχιλλέας Πιπινέλης Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας.
Αριθμητική Επίλυση Διαφορικών Εξισώσεων 1. Συνήθης Δ.Ε. 1 ανεξάρτητη μεταβλητή x 1 εξαρτημένη μεταβλητή y Καθώς και παράγωγοι της y μέχρι n τάξης, στη.
ΕΥΡΩΠΑΪΚΑ ΣΧΟΛΕΙΑ. SCHOOLS OF EUROPEAN EDUCATION.
Σεμινάριο Git & GitHub Θέμης Παπαμελετίου Διονύσης Ζήνδρος ΕΜΠ 2015.
Σεμινάριο Git & GitHub Ημέρα 2 Θέμης Παπαμελετίου Διονύσης Ζήνδρος ΕΜΠ 2015.
24/02/031 ΤΕΧΝΙΚΕΣ ΕΚΦΡΑΣΗΣ και ΕΠΙΚΟΙΝΩΝΙΑΣ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΔΙΑΧΕΙΡΙΣΗΣ ΕΡΓΩΝ Θωμάς Πούλιος ΜΑΘΗΜΑ 2.
Lesson 1a: Let’s Get Started JSIS E 111: Elementary Modern Greek Sample of modern Greek alphabet, M. Adiputra,
ERASMUS+ - ΒΔ 1 Σχολική Εκ π αίδευση – Εκ π αίδευση Ενηλίκων Ημερίδα Παροχής Πληροφοριών για τη Διαχείριση και Υλοποίηση των Εγκεκριμένων Σχεδίων (Πρόσκληση.
Ψηφιακά Παιχνίδια και μάθηση Δρ. Νικολέτα Γιαννούτσου Εργαστήριο Εκπαιδευτικής Τεχνολογίας.
Διαχείριση Διαδικτυακής Φήμης! Do the Online Reputation Check! «Ημέρα Ασφαλούς Διαδικτύου 2015» Ε. Κοντοπίδη, ΠΕ19.
Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών Τεχνολογία Διοίκησης Επιχειρησιακών Διαδικασιών Δημοσιεύσεις Καθηγήτρια: Αφροδίτη Τσαλγατίδου
Μαθαίνω με “υπότιτλους”
Αντισταθμιστική ανάλυση
Αντικειμενοστραφής Προγραμματισμός ΙΙ
ΕΠΙΔΗΜΙΟΛΟΓΙΑ.
Ερωτήσεις –απαντήσεις Ομάδων Εργασίας
Φάσμα παιδαγωγικής ανάπτυξης
Jane Austen Pride and Prejudice (περηφάνια και προκατάληψη)
Ψηφιακeς ιδEες και αξIες
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Class X: Athematic verbs II
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
and he will flee from you.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΟΡΓΑΝΩΣΗ ΑΘΛΗΤΙΚΗΣ ΕΓΚΑΤΑΣΤΑΣΗΣ
Adjectives Introduction to Greek By Stephen Curto For Intro to Greek
Εντολές Δικτύων Command Line.
ECTS-DS Labels Selection 2011 Αθήνα, 28/11/2011
Μία πρακτική εισαγωγή στην χρήση του R
Πανεπιστήμιο Θεσσαλίας
ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ
Find: φ σ3 = 400 [lb/ft2] CD test Δσ = 1,000 [lb/ft2] Sand 34˚ 36˚ 38˚
Children with visual disability in the digital environment
JSIS E 111: Elementary Modern Greek
aka Mathematical Models and Applications
Study in Holland: open to international minds
GLY 326 Structural Geology
ΑΣΚΗΣΗ στην ΕΓΚΥΜΟΣΥΝΗ
ΕΝΣΤΑΣΕΙΣ ΠΟΙΟΣ? Όμως ναι.... Ένα σκάφος
ΤΙ ΕΙΝΑΙ ΤΑ ΜΟΆΙ;.
Study in Holland: open to international minds
Find: ρc [in] from load γT=110 [lb/ft3] γT=100 [lb/ft3]
ΜΕΤΑΦΡΑΣΗ ‘ABC of Selling’. ΤΟ ΑΛΦΑΒΗΤΑΡΙ ΤΩΝ ΠΩΛΗΣΕΩΝ
Διάλεξη #10: Εκτέλεση Java χωρίς το BlueJ
Λέξεις που αλλάζουν νόημα αν είναι μετρήσιμα ή μη μετρήσιμα
3Ω 17 V A3 V3.
Deriving the equations of
Find: ρc [in] from load (4 layers)
Εθνικό Μουσείο Σύγχρονης Τέχνης Faceforward … into my home!
CPSC-608 Database Systems
Erasmus + An experience with and for refugees Fay Pliagou.
Class X: Athematic verbs II © Dr. Esa Autero
Οπτικό Σύστημα & Μονοπάτια
Μεταγράφημα παρουσίασης:

Version Control Systems: Git Αλέξανδρος Χατζηγεωργίου, University of Macedonia, 2014

Version Control System Ένα Version Control System (VCS) – ή “revision control system” (σύστημα ελέγχου εκδόσεων) είναι λογισμικό που επιτρέπει τη διαχείριση και παρακολούθηση των αλλαγών που συμβαίνουν σε οποιοδήποτε έγγραφο ενός έργου κατά τη διάρκεια της αρχικής του ανάπτυξης είτε κατά τη διάρκεια της συντήρησής του

Version Control System Οφέλη από τη χρήση VCS: - Backup Οργάνωση αρχείων που έχουν δημιουργηθεί σε διαφορετικές χρονικές στιγμές (χωρίς συμβάσεις για ονοματοδοσία φακέλων βάσει ημερομηνίας) θα μπορούσα να κάνω “Save As..” σε διαφορετικό φάκελο κάθε φορά, να συμπιέζω για να κερδίσω χώρο….χρονοβόρο και κουραστικό Ανάκτηση προηγούμενων εκδόσεων και σύγκριση μεταξύ εκδόσεων (εξοικονόμηση χώρου εγγυημένη..) αν έχω μια συλλογή αρχείων που αποτελούν ένα έργο (πηγαίος κώδικας, βιβλιοθήκες, εικόνες κλπ) θα πρέπει να αρχειοθετώ ένα ολόκληρο directory κάθε φορά…..!

Version Control System Οφέλη από τη χρήση VCS: Διατήρηση log για τις αλλαγές που έχουν γίνει εναλλακτικά θα έπρεπε να έχω ένα αρχείο στο οποίο να καταγράφω στοιχεία για κάθε αλλαγή που γίνεται Δυνατότητα εργασίας πολλών ατόμων επί του ιδίου έργου, ανεξαρτήτως της γεωγραφικής τους θέσης ή χρονικής στιγμής (Collaborative Software Development) εναλλακτικά θα έπρεπε να αποθηκεύω σε κοινόχρηστο φάκελο (e.g. Dropbox) ενημερώνοντας τους συναδέλφους για το πότε μπορούν να δουλέψουν επί ενός αρχείου, αλλιώς θα είχαμε συγκρούσεις και corrupted εκδόσεις

Version Control System In a VCS: Files cannot be overwritten There is a common repository that holds all the latest files Allows you to revert back to an older version of the file/project if needed Allows you to inspect differences (diff) between versions

Version Control System Benefit from using VCS: Resolution of Conflicts Suppose Alice modifies class A, and Bob modifies class B. They both upload their changes. Most systems will automatically deduce a reasonable course of action: accept and merge their changes, so both Alice’s and Bob’s edits are applied.

Version Control System Now suppose both Alice and Bob have made distinct edits to the same line. Then it is impossible to proceed without human intervention. conflict

Version Control System The second person to upload is informed of a merge conflict, and must choose one edit over another, or revise the line entirely. More complex situations can arise. Version control systems handle the simpler cases themselves, and leave the difficult cases for humans. edits

Git Το Git είναι ένα Κατανεμημένο Σύστημα Ελέγχου Εκδόσεων (distributed version control system DVCS) που σημαίνει ότι επιτρέπει την παράλληλη εργασία πολλαπλών ατόμων σε ένα έργο ακόμα και χωρίς την ύπαρξη σύνδεσης σε κεντρικό δίκτυο. Η εργασία τους μπορεί να καταχωρηθεί (push) στο έργο όταν είναι έτοιμη.

Centralized vs. Distributed each action has to pass through the network  —  leaving a developer unable to work if they happen to have no network connection

Centralized vs. Distributed In distributed systems, each developer has his own full-fledged repository on his computer. In most set-ups there’s an additional central repository on a server that’s used for sharing. However, this is not a requirement; every developer can perform all important actions in his local repository: committing changes, viewing differences between revisions, switching branches, etc

Git vs. other VCSs Τα περισσότερα VCS (CVS, Subversion, Bazaar κλπ) αποθηκεύουν την πληροφορία για την κατάσταση ενός συστήματος ως μια λίστα από αλλαγές σε επίπεδο αρχείων

Git vs. other VCSs Το Git αντιλαμβάνεται τα δεδομένα ως στιγμιότυπα ενός mini filesystem: Κάθε φορά που πραγματοποιείται ένα commit το Git λαμβάνει μια εικόνα του πως «φαίνονται» όλα τα αρχεία του συστήματος και κρατά μια αναφορά προς αυτή την εικόνα (για αρχεία που δεν αλλάζουν αποθηκεύεται μια αναφορά προς ένα προηγούμενο αρχείο)

Δημοφιλία Git GitHub is the largest code host on the planet with over 14 million repositories. Google Trends (07/07/2014) (blue: Git, red: svn)

Git Operations (local)

Git Operations (with remote)

Git Workflow Για την εξέλιξη του λογισμικού επί της βασικής γραμμής, τα μέλη της ομάδας ανάπτυξης ανακαλούν αρχεία από τη βασική γραμμή, τα επεξεργάζονται στον ιδιωτικό τους χώρο εργασίας και τα υποβάλλουν εν συνεχεία στη βασική γραμμή, σχηματίζοντας μια νέα αναθεώρηση (revision) του κώδικα. Ορισμένες από τις αναθεωρήσεις ενδέχεται να σηματοδοτούν συγκεκριμένες εκδόσεις (release) του προϊόντος. Σε πολλές περιπτώσεις οι συνεισφορές των προγραμματιστών εισάγονται σε κλάδο παράλληλο της βασικής γραμμής (development)

Git Workflow - Branching Σε περίπτωση που η ομάδα ανάπτυξης επιθυμεί να εργαστεί επί του συστήματος για τη διόρθωση σφαλμάτων, χωρίς όμως να θέσει σε κίνδυνο την ορθή λειτουργία του συστήματος της βασικής γραμμής, έχει τη δυνατότητα να δημιουργήσει μια διακλάδωση (branch) επί της βασικής γραμμής. Οι τροποποιήσεις του κώδικα (υποβολές) επί της διακλάδωσης δημιουργούν αναθεωρήσεις που δεν επηρεάζουν τη βασική γραμμή. Όταν κάποια στιγμή οι προγραμματιστές βεβαιωθούν για την ορθή επίλυση όλων των σφαλμάτων μπορούν να πραγματοποιήσουν μια συγχώνευση (merging) με τη βασική γραμμή (ή και άλλο κλάδο εφόσον το επιθυμούν), με σκοπό οι τροποποιήσεις της διακλάδωσης να συνενωθούν με τον κώδικα της βασικής γραμμής (ο οποίος στο ενδιάμεσο μπορεί να έχει εξελιχθεί).

Git Workflow Subversion-Style Workflow A centralized workflow is very common, especially from people transitioning from a centralized system. Git will not allow you to push if someone has pushed since the last time you fetched, so a centralized model where all developers push to the same server works just fine.

Git Workflow Integration Manager: single person who commits to the “blessed” repository

Git Workflow Dictator and Lieutenants Workflow For more massive projects, a development workflow like that of the Linux kernel is often effective. In this model, some people ('lieutenants') are in charge of a specific subsystem of the project and they merge in all changes related to that subsystem. Another integrator (the 'dictator') can pull changes from only his/her lieutenants and then push to the 'blessed' repository that everyone then clones from again.

Prerequisites Install EGit (http://download.eclipse.org/egit/updates) Create a project in a remote repository (e.g. GitHub) Put project under version control

Basic Usage Για οτιδήποτε αποθηκεύεται στο Git υπολογίζεται ένα άθροισμα ελέγχου (checksum) μέσω SHA-1 hash κωδικού 40 χαρακτήρων

Basic Usage

Basic Usage

Basic Usage

Basic Usage

Git internally…

Git internally…

Git internally…

Git internally…

Branching Έστω ότι εργαζόμαστε σε ένα έργο και έχουμε ήδη πραγματοποιήσει ορισμένα commit

Branching Αποφασίζουμε να εργαστούμε επάνω στο πρόβλημα #53 και για το λόγο αυτό θέλουμε να δημιουργήσουμε ένα καινούργιο κλάδο (branch) στον οποίο να επιλύσουμε το πρόβλημα

Branching Αφού κάνουμε ορισμένες αλλαγές (σχετικά με το πρόβλημα) πραγματοποιούμε ένα commit. Η ενέργεια αυτή «προχωρά» τον κλάδο iss53 προς τα εμπρός.

Branching Στην πορεία γίνεται γνωστό ότι κάτι πρέπει να διορθωθεί άμεσα στο λογισμικό που υπήρχε. Επειδή οι αλλαγές στο πρόβλημα #53 δεν έχουν ολοκληρωθεί επιστρέφουμε στον κλάδο «master». Στο σημείο αυτό, η δομή του working directory είναι ως είχε

Branching Λύνουμε το υπάρχον πρόβλημα και καταχωρούμε τις αλλαγές πραγματοποιώντας ένα νέο commit προωθώντας το master προς τα εμπρός. master

Branching Επιστρέφουμε (‘switch to’) στον κλάδο “iss53”. Πραγματοποιούμε τις αλλαγές και εκτελούμε commit

Branching Θεωρώντας ότι το πρόβλημα #53 επιλύθηκε, αποφασίζεται η συγχώνευση της λύσης στον κλάδο “master” Η συγχώνευση είναι σχετικά πολύπλοκη (three-way merge)

Branching Αν δεν υπάρχουν συγκρούσεις η συγχώνευση πραγματοποιείται αυτόματα καταλήγοντας στην ακόλουθη εικόνα του συστήματος:

Branching Συγκρούσεις εμφανίζονται αν το ίδιο τμήμα κώδικα έχει τροποποιηθεί από διαφορετικούς προγραμματιστές. Ο προγραμματιστής είναι υπεύθυνος για την επίλυση της σύγκρουσης πραγματοποιώντας προσθήκη (“add”) του σχετικού αρχείου στο index για να δηλώσει την ολοκλήρωση της συγχώνευσης of the merging

Συγγραφή καλών commit messages Ένα commit message θα πρέπει να περιλαμβάνει ένα header και ένα body (διαχωρίζονται με κενή γραμμή) Header < 50 characters Body: should wrap text at 72 Μήνυμα σε ενεστώτα. Περιγράφεται ο λόγος για τον οποίο έγινε η αλλαγή (οι αλλαγές στον κώδικα φαίνονται με την βοήθεια του Git) Δυνατή η χρήση footer, π.χ. Fixes: bug #8089

Συγγραφή καλών commit messages Την επιτάχυνση της εξέτασης του κώδικα Την υποβοήθηση της συγγραφής release notes Την υποβοήθηση μελλοντικών συντηρητών του λογισμικού