SUBVERSION. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Σχετικά έγγραφα
Subversion. Τριγάζη Ελισάβετ. Επιβλέπων: Μηνάς Δασυγένης

Εισαγωγή στα SCM εργαλεία και στο Subversion

Σεμινάριο Git & GitHub. Θέμης Παπαμελετίου Διονύσης Ζήνδρος

ΕΓΧΕΙΡΙΔΙΟ ΥΠΗΡΕΣΙΑΣ ΣΥΛΛΟΓΙΚΗΣ ΕΠΕΞΕΡΓΑΣΙΑΣ ΕΓΓΡΑΦΩΝ

Σεμινάριο Git & GitLab. Γιώργος Τσιάτσιος Δημήτρης Κάσσος

Σεμινάριο Git & GitLab. Τάκης Παναγόπουλος Νικόλας Μπομπέτσης

Πανεπιστήμιο Κρήτης, Τμήμα Επιστήμης Υπολογιστών ΗΥ463 Συστήματα Ανάκτησης Πληροφοριών Χειμερινό Εξάμηνο

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

Εισαγωγή στην εφαρμογή Βασική Σελίδα (Activity) Αναζήτηση Πελάτη... 6 Προβολή Πελάτη... 7 Επεξεργασία Πελάτη... 10

3 η ΕΝΟΤΗΤΑ Συναρτήσεις στο MATLAB

Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης eclass 1.7. Οδηγίες Αναβάθμισης (Upgrade) Αθήνα, 16 Μαρτίου Εισαγωγή

ΕΓΚΑΤΑΣΤΑΣΗ ΕΦΑΡΜΟΓΩΝ ΓΙΑ ΠΡΟΣΩΠΙΚΟ ΥΠΟΛΟΓΙΣΤΗ (MS WINDOWS, LINUX, MACOS)

TasPython. Εισαγωγή στο Mercurial

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Ενσωματωμένα Συστήματα

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Ενημέρωση σε Windows 8.1 από τα Windows 8

Open eclass Πλατφόρμα Ασύγχρονης Τηλεκπαίδευσης

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Ανοικτό Ψηφιακό Μάθημα για την κατάρτιση του προσωπικού υποστήριξης ανάπτυξης ψηφιακών μαθημάτων

Νέες Τεχνολογίες στην Εκπαίδευση

ΔΙΚΤΥΑ. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

DOM. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Τεχνολογία Λογισμικού

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

Dropbox. Τι είναι Dropbox; ΓΕΝΙΚΑ

Αξιολόγηση της επίσημης Moodle Mobile εφαρμογής

Οδηγός γρήγορης εκκίνησης

Οργάνωση Υπολογιστών ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. Εργαστήριο 9: Εισαγωγή στην Ομοχειρία (Pipelining - Διοχέτευση) Μανόλης Γ.Η.

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Λογιστικές Εφαρμογές Εργαστήριο

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

6.2 Υπηρεσίες Διαδικτύου

Περιεχόμενα. Visio / White paper 1

Θερινό Σχολείο, Ιουλίου Εισαγωγή στο. Αχιλλέας Πιπινέλης. Μονάδα Αριστείας ΕΛ/ΛΑΚ ΤΕΙ Αθήνας

Προγραμματισμός Η/Υ. Χειρισμός Αρχείων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στο Outlook Κεφάλαιο 2 Βασικές εργασίες με μηνύματα 31

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ CLASSWEB Εισαγωγή βαθμολογιών από διδάσκοντες μέσω Διαδικτύου

Υπηρεσία διαμοιρασμού αρχείων

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: Εισαγωγή ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

JAVASCRIPT EVENTS. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΠΡΟΣΩΠΙΚΟΙ ΙΣΤΟΧΩΡΟΙ Nα δημιουργήσω/ενεργοποιήσω την προσωπική μου ιστοσελίδα Να προβάλω τις λεπτομέρειες του προφίλ μου...

Εφαρμογές Πληροφορικής στην Τοπογραφία 5η Ενότητα - Δημιουργία διαφανειών (layers) και δημιουργία νέου είδους γραμμών (linetype) στο AutoCAD

Αναλυτικές ο δηγίες χρήσης

Πληροφορική. Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Εισαγωγή στην Πληροφορική

ΠΑΓΚΑΛΟΣ ΙΩΑΝΝΗΣ ΣΙΣΜΑΝΗΣ ΝΙΚΟΣ. File Transfer Protocol

Οδηγός χρήσης Connection Manager

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Ειδικά Θέματα Δικτύων Ι

Εισαγωγή στις Βάσεις Δεδομζνων II

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ηλεκτρονική Υγεία

CSS 3. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Π. Αγγελάτος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Οδηγίες για τη Χρήση του Google Drive

Ενότητα. Σχεδίαση Βάσεων Δεδομένων

Λειτουργικό σύστημα Unix

ΕΝΗΜΕΡΩΤΙΚΟ ΦΥΛΛΑΔΙΟ ΠΡΩΤΟΕΤΩΝ ΦΟΙΤΗΤΩΝ

ΠΡΟΓΡΑΜΜΑ ΑΠΟΜΑΚΡΥΣΜΕΝΗΣ ΕΙΣΑΓΩΓΗΣ ΒΑΘΜΟΛΟΓΙΩΝ ΑΠΟ ΔΙΔΑΣΚΟΝΤΕΣ

Αρχιτεκτονική Υπολογιστών

Χρήση του Office 365 σε τηλέφωνο Android

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στο Outlook Κεφάλαιο 2 Βασικές εργασίες με μηνύματα 33

Ενότητα. Εισαγωγή στη Microsoft Access

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. 4o Εργαστήριο Σ.Α.Ε

Πλατφόρµα Ασύγχρονης Τηλεκπαίδευσης eclass 2.0. Οδηγίες Αναβάθµισης (Upgrade) Αθήνα, 1 Ιουνίου Εισαγωγή

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ηλεκτρονική Υγεία

Πρωτόκολλα Επικοινωνίας και Τείχος Προστασίας

Ασφάλεια Πληροφοριακών Συστημάτων

Σχεδίαση με Ηλεκτρονικούς Υπολογιστές

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Unity Editor #02 Κεντρικό Μενού: File, Build Settings και Build & Run

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

ΟΔΗΓΟΣ ΕΓΚΑΤΑΣΤΑΣΗΣ ΠΙΣΤΟΠΟΙΗΤΙΚΟΥ ΑΣΦΑΛΕΙΑΣ WEBMAIL ΤΕΙ ΚΑΛΑΜΑΤΑΣ

Συστήματα Παράλληλης και Κατανεμημένης Επεξεργασίας

ΕΓΧΕΙΡΙΔΙΟ ΧΡΗΣΗΣ Π.Σ. ΦΟΙΤΗΤΟΛΟΓΙΟΥ- ΓΙΑ ΤΟ ΔΙΔΑΣΚΟΝΤΑ (ClassWeb)

Περιεχόμενα. Εισαγωγή. Οδηγός Χρήστη - Φοιτητή

1 ο ΕΡΓΑΣΤΗΡΙΟ ΣΗΜΑΤΑ & ΣΥΣΤΗΜΑΤΑ

ΠΡΩΤΟΚΟΛΟ HTTP ΕΝΤΟΛΩΝ ΔΙΑΣΥΝΔΕΣΗΣ ΕΚΔΟΣΗ 1.2

Ειδικά Θέματα Δικτύων Ι

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Τεχνολογίες & Εφαρμογές Πληροφορικής Ενότητα 6: Συμπίεση Windows

Εγκατάσταση των απαραίτητων προγραμμάτων για την λειτουργία του WordPress. Δρ. Ματθαίος Πατρινόπουλος

ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΕΣ ΤΕΧΝΙΚΕΣ Σύντομη εισαγωγή στο εργαστήριο

Δίκτυα Υπολογιστών Ενότητα 10: Ethernet και ARP

Οδηγίες εγκατάστασης και λειτουργίας ERPeshop

Υδραυλικά & Πνευματικά ΣΑΕ

Πληροφορική. Εργαστηριακή Ενότητα 2 η : Το βιβλίο εργασίας του MS Excel. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

Vodafone Business Connect

Εισαγωγή στους Υπολογιστές

ΟΔΗΓΙΕΣ ΧΡΗΣΗΣ LIVETRIP TRAVELLER

Τεχνολογίες & Εφαρμογές Πληροφορικής

Διαχείριση Πολιτισμικών Δεδομένων

Πανεπιστήμιο Δυτικής Μακεδονίας. Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών. Ηλεκτρονική Υγεία. Ενότητα: Μηχανοργάνωση Νοσοκομείου

ΕΡΓΑΣΙΑ. (στο µάθηµα: Τεχνολογίες Εφαρµογών ιαδικτύου του Η εξαµήνου σπουδών του Τµήµατος Πληροφορικής & Τηλ/νιών)

Θεωρίες Μάθησης και Εκπαιδευτικό Λογισμικό

Transcript:

SUBVERSION Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναφέρεται ρητώς.

Στόχος της ώρας Το πρόβλημα εκδόσεων Έλεγχος εκδόσεων Subversion Repositories Αμμοδοχεία Check out Commit Update Ιστορικό Διενέξεις Χρήση του subversion ως χρονομηχανή

Χρήσεις subversion Χρησιμοποιούμε subversion ως... «Μηχανή χρόνου» για αρχεία και φακέλους Πλατφόρμα συνεργασίας με άλλους Αλλά όχι αν... Θέλουμε να ανταλλάξουμε αρχεία μία φορά Γι αυτό υπάρχει το Skype, το FTP, το rsync... Διότι υπάρχει ένα κόστος συντήρησης

Χρήσεις subversion Ατομικά Χρονομηχανή Συγχρονισμός κώδικα σε πολλούς υπολογιστές Ομαδικά Όλα τα παραπάνω Ανταλλαγή κώδικα Αυτόματη διαχείριση διενέξεων Ποιος έγραψε ποιον κώδικα; Αντίγραφα ασφαλείας

Server Υπεύθυνος για να αποθηκεύσει τον κώδικά μας Αποθηκεύει όλες τις λεπτομέρειες για τον κώδικά μας Συμπεριλαμβανομένου και του ιστορικού Τρέχει σε έναν υπολογιστή που είναι 24/7 ανοιχτός Χρησιμοποιεί το πρόγραμμα server subversion Ο κάθε client συνδέεται σε αυτόν τον server

Client Αντιστοιχεί σε έναν μηχανικό Είναι εγκατεστημένος σε έναν απλό υπολογιστή Αποθηκεύει ένα αντίγραφο του κώδικα Τρέχει το πρόγραμμα svn

Αμμοδοχείο Το αντίγραφο του κώδικα που έχει ένας μηχανικός Δεν αποθηκεύει πλήρες ιστορικό του κώδικα Είναι μόνο η νεότερη έκδοση του κώδικα

client Ομάδα ανάπτυξης server Μηχανικός #1 Αμμοδοχείο Μηχανικός #2 Αμμοδοχείο Μηχανικός #3 Αμμοδοχείο Διακομιστής Subversion Κώδικας με Κώδικας με ιστορικό ιστορικό Μηχανικός #4 Αμμοδοχείο

Αρχιτεκτονική client-server Το subversion ακολουθεί αρχιτεκτονική client-server Ένας server είναι υπεύθυνος για τον κώδικα Οι clients κρατάνε απλώς αντίγραφα Γι αυτό το subversion είναι κεντρικός έλεγχος εκδόσεων

Εναλλακτικές Υπάρχουν και άλλα συστήματα ελέγχου εκδόσεων CVS Ο «μπαμπάς» του SVN. Δύσχρηστο. Git Αποκεντροποιημένος έλεγχος εκδόσεων, δεν υπάρχει server. Mercurial

Ένα σύστημα αρχείων Το subversion μοιάζει με διακομιστή αρχείων Οι clients γράφουν και διαβάζουν από το repository

Ιστορικό Διαφέρει από ένα σύστημα αρχείων Θυμάται όλες τις αλλαγές: Δημιουργία αρχείων Αλλαγές αρχείων Αλλαγές φακέλων Διαγραφές Μετακινήσεις Τα πάντα

Το πρόβλημα Η ομάδα έχει ένα αρχείο index.php Ο Harry έχει το νεότερο index.php Η Sally έχει επίσης το νεότερο index.php Ο Harry κάνει κάποιες αλλαγές στο αρχείο του Η Sally κάνει επίσης κάποιες αλλαγές στο αρχείο της Πώς ανταλλάσσουν αυτές τις αλλαγές; Πώς δεν διαγράφει ο ένας τις αλλαγές του άλλου;

Το πρόβλημα

Η ιδέα του κλειδώματος Όταν κάποιος πρόκειται να επεξεργαστεί ένα αρχείο, το κλειδώνει ώστε να μην το αλλάξει κάποιος άλλος Στη συνέχεια αλλάζει το αρχείο Όταν στέλνει τις αλλαγές του, ξεκλειδώνει το αρχείο για να το επεξεργαστεί κάποιος άλλος Όταν κάποιος πάει να κλειδώσει ένα αρχείο που είναι ήδη κλειδωμένο, δημιουργείται σφάλμα

Προβλήματα με το κλείδωμα Κάποιος μπορεί να ξεχάσει να ξεκλειδώσει Συχνά μπορούμε δύο άτομα να κάνουμε αλλαγές στο ίδιο αρχείο χωρίς πρόβλημα, αλλά το κλείδωμα μας το απαγορεύει και μας καθυστερεί Το κλείδωμα ενός αρχείου δεν σημαίνει ότι οι αλλαγές μας θα είναι συμβατές με αλλαγές σε άλλα

Η λύση του τοπικού αντιγράφου Το subversion δεν χρησιμοποιεί κλειδώματα Όλοι διαβάζουν τις νεότερες εκδόσεις του αρχείου από το repository Δημιουργούν αντίγραφα στο τοπικό τους αμμοδοχείο Επεξεργάζονται ο καθένας το αντίγραφό του ανεξάρτητα Ανεβάζει ο πρώτος τις αλλαγές του στο repository Όταν ο δεύτερος ανεβάσει αλλαγές, αυτό αποτυγχάνει Θα πρέπει να κατεβάσει πρώτα τις αλλαγές του άλλου Κατά το κατέβασμα αλλαγών, ενώνονται οι δύο αλλαγές Στη συνέχεια μπορεί να ανεβάσει την νέα έκδοση

Επικοινωνία svn client-server Ανάγνωση: Είτε από όλους (δημόσιος/ανοιχτός κώδικας) Είτε από συγκεκριμένη ομάδα Πιστοποίηση για ανάγνωση ή εγγραφή: Με κωδικό πρόσβασης Με RSA κλειδί (ασφαλέστερο) Πρωτόκολλα ανταλλαγής κώδικα: http https (κρυπτογραφημένο) svn svn+ssh (κρυπτογραφημένο)

Repository URL Αντιπροσωπεύει ένα μέρος όπου είναι αποθηκευμένος ο κώδικας Περιλαμβάνει: Το πρωτόκολλο (http://, svn://, https://, κλπ.) Το όνομα χρήστη του μηχανικού Το όνομα του διακομιστή Το όνομα του repository π.χ. svn+ssh://dionyziz@example.com/repository

Checkout Checkout ονομάζεται η διαδικασία δημιουργίας αμμοδοχείου (παράδειγμα)

Commit Οι αλλαγές στο αμμοδοχείο δεν δημοσιεύονται στους άλλους Είναι οι δικές σου, προσωπικές αλλαγές, μέχρι να αποφασίσεις να τις δημοσιεύσεις Η διαδικασία δημοσίευσης με την ομάδα σου ονομάζεται commit (παράδειγμα)

Update Οι αλλαγές που ανέβασαν οι άλλοι λαμβάνονται μόνο όταν το αποφασίσεις Το κατέβασμα αλλαγών λέγεται update (παράδειγμα)

Κρυφός φάκελος.svn Υπάρχει μέσα σε κάθε φάκελο του αμμοδοχείου Αποθηκεύει meta-πληροφορίες που χρειάζεται το svn

Τι μπορεί να συμβεί 1. Το αρχείο στο αμμοδοχείο είναι ίδιο με το αρχείο στο repository. Update και commit δεν κάνουν τίποτα. 2. Το αρχείο στο αμμοδοχείο έχει αλλάξει τοπικά. Update δεν κάνει τίποτα, commit στέλνει τις αλλαγές. 3. Το αρχείο στο repository είναι πιο καινούργιο. Commit δεν κάνει τίποτα, update ενημερώνει το τοπικό αρχείο. 4. Το αρχείο στο repository είναι πιο καινούργιο, αλλά το αρχείο έχει αλλάξει και τοπικά. Το commit αποτυγχάνει, επειδή πρέπει πρώτα να γίνει update. Το update ενώνει τις αλλαγές.

Εκδόσεις Κάθε φορά που συμβαίνει ένα commit, αυξάνεται ο αριθμός έκδοσης Ο αριθμός έκδοσης είναι κοινός για όλα τα αρχεία Ξεκινά από το 1 και αυξάνεται κατά 1 κάθε φορά Αν αλλάξω ένα αρχείο, αυξάνεται ο αριθμός έκδοσης όλων των αρχείων Ο αριθμός έκδοσης αφορά το repository, όχι συγκεκριμένα αρχεία

Το commit και το update ξεχωρίζουν Μπορώ να κάνω commit ένα αρχείο χωρίς να κάνω update τα υπόλοιπα Έτσι, κάποια αρχεία μπορεί να έχουν διαφορετικές εκδόσεις π.χ. μπορεί να κάνω commit το index.php στην έκδοση 315 ενώ δεν έχω κάνει update το download.php και να παραμείνει στην έκδοση 300

Subversion clients svn Client σε κονσόλα για Windows, Linux, Mac TortoiseSVN Client με γραφικό περιβάλλον για Windows Πολλές άλλες επιλογές για εργαλεία με γραφικά και κονσόλα

Δουλεύοντας με το CLI svn svn help εντολή Εξηγεί την σύνταξη μίας εντολής π.χ. svn help commit svn help update

Checkout svn checkout URL

Κύκλος εργασίας με svn (1) Ενημέρωση Κάνε svn update για να πάρεις τις αλλαγές των άλλων

Κύκλος εργασίας με svn (2) Αλλαγές Κάνε τις αλλαγές στον κώδικα που θέλεις και δοκίμασε ανεξάρτητα στο αμμοδοχείο σου. Εκτός από αλλαγές αρχείων μπορεί να περιλαμβάνει και προσθήκες, διαγραφές, αντιγραφές, μετακινήσεις αρχείων. svn add; svn delete; svn copy; svn move

Κύκλος εργασίας με svn (2) Προβολή αλλαγών Δες τις αλλαγές σου πριν τις ανεβάσεις. Αυτό είναι εφικτό με svn status και svn diff.

Κύκλος εργασίας με svn (3) Ακύρωση αλλαγών Αν δεν σου αρέσουν οι αλλαγές που έκανες, μπορείς να τις ακυρώσεις. Αυτό είναι εφικτό με svn revert.

Κύκλος εργασίας με svn (4) Ενημέρωση ξανά Κατέβασε τις αλλαγές που έκαναν οι άλλοι στο μεταξύ με svn update. Αυτό περιλαμβάνει πιθανώς αλλαγές στα αρχεία που άλλαξες κι εσύ. Συνεπώς ενδέχεται να πρέπει να διαχειριστείς διενέξεις.

Κύκλος εργασίας με svn (5) Ανέβασμα αλλαγών Ανέβασε τις αλλαγές σου με svn commit.

Κύκλος εργασίας με svn Συνήθως η διαδικασία περιορίζεται: 1) svn update 2) Επεξεργασία αρχείων 3) svn commit

Αλλαγές δομής αρχείων Όταν χρησιμοποιούμε svn, οι προσθήκες, διαγραφές, αντιγραφές, και μετακινήσεις αρχείων και η δημιουργία φακέλου δεν γίνονται με το συνηθισμένο τρόπο. Πρέπει να γίνονται μέσω του svn Αυτό διότι θέλουμε η ομάδα μας να ενημερωθεί και για αυτές τις αλλαγές. Επιπλέον θέλουμε και αυτές οι αλλαγές να έχουν ιστορικό.

Αλλαγές δομής αρχείων svn add Προσθέτει ένα αρχείο svn rm Διαγράφει ένα αρχείο svn mv Μετακινεί ένα αρχείο svn cp Αντιγράφει ένα αρχείο svn mkdir Δημιουργεί ένα φάκελο

Αλλαγές δομής αρχείων Τα svn add, svn rm, svn mv, svn cp, svn mkdir δρουν τοπικά. Θα πρέπει πάλι να κάνουμε svn commit για να σταλούν οι αλλαγές δομής που κάναμε.

Προβολή αλλαγών Θέλουμε να προβάλλουμε τις αλλαγές που έχουμε κάνει τοπικά πριν τις ανεβάσουμε. svn status Δείχνει τα αρχεία που άλλαξαν. Μας δείχνει με συγκεκριμένο τρόπο τι έχει συμβεί: A = Αρχείο προστέθηκε M = Αρχείο άλλαξε D = Αρχείο διαγράφηκε? = Αρχείο υπάρχει, αλλά δεν έχει προστεθεί svn diff Δείχνει τι άλλαξε μέσα στα αρχεία

Ακύρωση αλλαγών Θέλουμε να ακυρώσουμε αλλαγές που κάναμε τοπικά και τελικά να μην τις ανεβάσουμε. svn revert (παράδειγμα)

Πού θα βρω SVN server? Αν το Project μου είναι ανοιχτού κώδικα... Δωρεάν: SourceForge.net Google Project Hosting Αν το Project μου είναι κλειστού κώδικα... Δωρεάν: Στήνω το δικό μου svn server Εμπορικές λύσεις: Beanstalk, κλπ.

Διενέξεις Ο Α και ο B κάνουν svn update στο αρχείο index.php Ο Α αλλάζει το index.php Ο Β αλλάζει το index.php Ο Α κάνει svn commit το index.php Ο B κάνει svn commit το index.php αλλά αποτυγχάνει

Διενέξεις: Συνήθης περίπτωση Ο Α και ο Β έχουν συμβατές αλλαγές π.χ. Α στην αρχή του αρχείου, Β στο τέλος του αρχείου Τότε το svn ενώνει τις αλλαγές αυτόματα Ο Β κάνει svn update Οι αλλαγές του Α και του Β ενώνονται στην τοπική έκδοση του Β Ο Β κάνει svn commit Πλέον το repository έχει την ενωμένη έκδοση των δύο Ο Α κάνει svn update και κατεβάζει την ενωμένη έκδοση

Διενέξεις: Δύσκολη περίπτωση Ο Α και ο Β έχουν ασυμβίβαστες αλλαγές π.χ. έχουν αλλάξει το ίδιο τμήμα του αρχείου Συνήθως όταν προσπαθούν να λύσουν το ίδιο πρόβλημα Η διένεξη πρέπει να λυθεί από άνθρωπο Ο Β κάνει svn update Το subversion τον ειδοποιεί για μη επιλύσιμη διένεξη (conflict)

Διενέξεις: Δύσκολη περίπτωση Ο Β επιλέγει: Να απορρίψει τις αλλαγές του Β εντελώς και να κρατήσει την έκδοση Α Να απορρίψει τις αλλαγές του Α εντελώς και να κρατήσει την έκδοση Β Να φτιάξει «στο χέρι» μία έκδοση που περιλαμβάνει τις αλλαγές και των δύο Αφού επιλέξει, χρησιμοποιεί το svn resolve για να δηλώσει ότι το πρόβλημα λύθηκε Κάνει svn commit την έκδοση που επέλεξε Ο Α κάνει svn update και κατεβάσει την νέα έκδοση

Μηνύματα commit Δηλώνουν τον λόγο που άλλαξε ένα αρχείο Σύντομο περιγραφικό μήνυμα που βλέπει η ομάδα Χρήσιμο όταν κοιτάμε το ιστορικό π.χ. Resolved password length bug π.χ. Added ability to change password

Χρονομηχανή Το svn λειτουργεί ως χρονομηχανή Μπορούμε να δούμε την λίστα με όλες τις αλλαγές χρησιμοποιώντας svn log Περιλαμβάνει: Ποιος άλλαξε ένα αρχείο Πότε το άλλαξε Την περιγραφή που είχε δώσει Μπορεί να τρέξει σε ένα συγκεκριμένο αρχείο ή σε φάκελο για να δούμε όλο το ιστορικό του

Χρονομηχανή Μπορούμε να «δούμε» μία παλιότερη έκδοση ενός αρχείου Με svn update --revision μεταβαίνουμε σε μία παρελθοντική έκδοση του αρχείου. Όσο είμαστε «στο παρελθόν» δεν μπορούμε να κάνουμε αλλαγές. Με απλό svn update επανερχόμαστε στο παρόν.

Tips για επιτυχία στο λογισμικό Κάντε χρήση version control Κρατήστε μία λίστα με bugs Για αρχή ένα.txt Αργότερα trac, PivotalTracker, mantis, bugzilla, κλπ. Διορθώστε τα bugs πριν γράψετε νέο κώδικα Γράψτε ένα πλάνο με στόχους Για αρχή σε ένα.txt Και κρατήστε το ενήμερο Γράψτε πρώτα το API σας σε κείμενο Πριν αρχίσετε να γράφετε κώδικα

Μάθαμε Το πρόβλημα εκδόσεων Έλεγχος εκδόσεων Subversion Repositories Αμμοδοχεία Check out Commit Update Ιστορικό Διενέξεις Χρήση του subversion ως χρονομηχανή

Συγχαρητήρια! Μπορείτε πλέον να συνεργάζεστε με άλλους μηχανικούς λογισμικού!

Την επόμενη φορά... Workshop ανάπτυξης πλήρους εφαρμογής Εφαρμογή για photo sharing Flickr-style Στις 28 Ιανουαρίου 2011: Παρουσίαση τελικών εργασιών Προσκαλέστε τους φίλους σας! :-)

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα» του ΕΜΠ έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους.