Ενσωμάτωση αλλαγών - isaar/MSolve GitHub Wiki
Ορολογία
Στα επόμενα θα χρησιμοποιώ τους εξής όρους για τα 3 βασικά repositories του καθενός:
- local: προσωπικό repository στον υπολογιστή σας. Αν εργάζεστε σε πολλούς φακέλους ή πολλούς υπολογιστές θα έχετε ένα local repository σε κάθε τοποθεσία.
- origin: προσωπικό repository στο Github σας. Λογικά το url του είναι μια παραλλαγή του https://github.com/SerafeimBakalakos/MSolve. Κάθε local repository σας πρέπει να ξέρει ένα remote repository που να λέγεται origin και έχει το URL αυτό. Πληροφοριακά, το origin υποδηλώνει απο πιο repository κατεβάστηκε αρχικά το local repository σας, δηλαδή το repository σας στο github, οπότε μην ονομάζετε τα άλλα remote repositories π.χ. originISAAR.
- isaar: το κεντρικό repository με url: https://github.com/isaar/MSolve. Κάθε local repository σας πρέπει να ξέρει ένα remote repository που να λέγεται isaar και έχει το URL αυτό. Στο repository αυτό μας ενδιαφέρει το branch isaar/development, που περιέχει τις τελευταίες αλλαγές του κώδικα.
Workflow
Ένα καλό workflow για να έχει ο καθένας στο repository του είναι το Gitflow, που μπορείτε να δείτε εδώ:
- Ο καθένας έχει ένα "develop" branch που ανανεώνεται με τις δικές του αλλαγές και όσες αλλαγές έχουν γίνει αποδεκτές στο isaar/development. To branch αυτό υπάρχει στον υπολογιστή του (develop) και στο github του (origin/develop).
- Για κάθε task στο οποίο δουλεύει, δημιουργεί ένα νέο μικρό feature branch στο local repo του. Π.χ. feat/nonlinear_cell (για προσθήκη νέου functionality), fix/newton_raphson (για επίλυση bugs). Μπορείτε να έχετε ίδια branches στο Github σας (π.χ. origin/fix/newton_raphson). Δεν είναι απαραίτητο, αλλά θα σας βοηθήσει σαν backup και για μεταφορά του κώδικα μεταξύ υπολογιστών.
- Μόλις τελειώνει την δουλειά σε ένα feature branch:
- Το κάνει merge στο local develop.
- Κάνει push το local develop στο origin/develop.
- Έπειτα μπορεί να διαγράψει ή να αφήσει το feature branch (δεν πιανει χώρο), αλλά δεν το συνεχίζει ποτέ ξανά.
- Για να πάρετε τις αλλαγές από το κεντρικό repository της ομάδας:
- Κάνετε merge από isaar/development σε local develop.
- Κάνετε push από local develop σε origin/develop.
- Για να ανεβάσετε τις δικές σας αλλαγές στο κεντρικό repository της ομάδας:
- Κάνετε push από local develop σε origin/develop.
- Κάνετε pull request από origin/develop σε isaar/development.
Πριν ξεκινήσετε
- Κάντε backup την δουλειά σας. (π.χ commit όλες τις αλλαγές σας και push στο origin).
- Κατεβάστε και εγκαταστήστε το Visual Studio 2017, Community edition. Μπορείτε να το έχετε ταυτόχρονα με προηγούμενες εκδόσεις και λογικά δεν θα υπάρξει πρόβλημα αν ανοίξετε ένα παλιό solution με το VS2017.
Ρύθμιση remotes
Βεβαιωθείτε ότι το local repo σας βλέπει τα σωστά remotes.
- Στο VS2017, ανοίξετε ένα solution που να έχει γίνει version controlled (git):
- Ανοίξτε το Team Explorer. Αν δε το βρίσκετε, ανοίξτε το ως εξής: Main toolbar -> View -> Team Explorer
- Πηγαίνετε στο Home -> Settings -> Git -> Repository Settings -> Remotes
- Εκεί πρέπει να βλέπετε τα 2 remotes: origin, isaar με τα Fetch και Pull url τους.
- Αν δε βλέπετε π.χ. το isaar προσθέστε το ως εξής:
- Πατήστε Add και στο νέο παράθυρο: Name = isaar, Fetch = https://github.com/isaar/MSolve, Push = https://github.com/isaar/MSolve
- Καλό είναι και στο origin να έχετε: Fetch url = Push url = https://github.com/MyName/MSolve
Κατέβασμα αλλαγών
Κατεβάστε τις τελευταίες αλλαγές από το isaar στο local repo σας:
- Πηγαίνετε στο Team Explorer -> Home -> Sync -> Fetch (το drop down menu).
- Στο νέο drop down menu θα πρέπει να βλέπετε τουλάχιστον origin και isaar. Επιλέξτε το isaar και πατήστε το κουμπί Fetch.
- Επαναλάβετε, αλλά τώρα επιλέξτε origin.
Δημιουργία ένα "develop" branch στο local repo σας
Αν έχετε ήδη πηγαίνετε απευθείας σε αυτό το βήμα:
- Πηγαίνετε στο Team Explorer -> Home -> Branches -> New Branch
- Aπό το drop down menu επιλέξτε isaar/development (από που θα ξεκινήσει το νέο branch).
- Δώστε το όνομα develop.
- Τo check box: Checkout branch ΠΡΕΠΕΙ ΝΑ ΕΧEI tick.
- Τo check box: Track remote branch... ΠΡΕΠΕΙ ΝΑ ΕΧEI tick.
- Πατήστε το κουμπί Create Branch
Δοκιμή νέου κώδικα
- Βεβαιωθείτε ότι βρίσκεστε στο local develop branch. Λογικά στην κάτω δεξιά γωνία του Visual Studio γράφει το τρέχον branch.
- Αλλιώς πηγαίνετε Team Explorer -> Home -> Branches
- Στο δέντρο με τα branches θα έχει με bold το τρέχον. Επίσης στη ρίζα του δέντρου θα πρέπει να γράφει MSolve(develop)
- Αν δεν είναι το develop τρέχον: right click πάνω στο develop branch -> Checkout.
- Δοκιμάστε ότι μπορεί να γίνει build. Πιθανώς να χρειαστεί να κατεβάσετε κάποια nuget packages στα σωστα projects. Αν υπάρχουν προβλήματα αναφέρετέ το στην επόμενη συνάντηση.
Ανέβασμα αλλαγών στο δικό σας Github repository
Καντε push το local develop branch στο origin/develop:
- Στο Team Explorer -> Home -> Sync -> Push:
- Επιλέξτε origin, develop και πατήστε Push
Μελλοντικά
Στο εξής για να κατεβάζετε τις νέες εκδόσεις του MSolve:
- Team Explorer -> Home -> Sync -> Fetch -> isaar
- Team Explorer -> Home -> Branches -> right click στο develop -> checkout
- Team Explorer -> Home -> Branches -> right click στο develop -> Merge From...
- Merge from branch: isaar/development
- Into current branch: develop
- Τo check box: Commit changes after merging ΔΕΝ ΠΡΕΠΕΙ ΝΑ ΕΧEI tick.
- Μαλλον θα υπάρχουν conflicts, επειδή έχετε πειράξει αρχεία που έχουν αλλαχθεί και στο isaar/development.
- Λύστε τα (καλή τύχη) και βεβαιωθείτε ότι κάνει compile ο κώδικας.
- Κάντε stage + commit τα πάντα. Σαν commit message μπορείτε να δώσετε: Merge commit "isaar/development" into "develop" ή κατι πιο αντιπροσωπευτικό.
- Team Explorer -> Home -> Sync -> Push. Επιλέξτε origin, example και πατήστε Push