Γράφω στο Team Edition forum αν και δεν θέλω να μιλήσω μόνο για το Team System αλλά γενικότερα.
Όταν δουλεύει κανείς ομαδικά μέσω source control (προσωπικά χρησιμοποιώ subversion) υπάρχει το εξής θέμα. Κάποια στιγμή θέλεις να δοκιμάσεις ή να διορθώσεις κάτι στον κώδικα. Ας το ονομάσουμε αυτό task A. Στο μεταξύ προκύπτει κάτι πιο επείγον ή για κάποιο λόγο θέλεις να παγώσεις την δουλειά που έκανες και να πιάσεις κάτι άλλο (task B). Ok, καλό είναι να τελειώνεις κάτι που ξεκινάς, αλλά... συμβαίνει καμιά φορά. Τι κάνεις; Αν απλά αφήσεις un-commited τις αλλαγές του task A και προκύψουν αλλαγές στα ίδια αρχεία για το task B, τότε μπερδεύται η δουλειά. Συνήθως κοινές αλλαγές προκύπτουν στα csproj/vbproj αρχεία. Όταν θα θέλεις να κάνεις commit στο Β θα πρέπει να κάνεις και στο Α το οποίο δεν έχει τελειώσει.
Μια λύση στο subversion είναι να κάνεις ένα patch. Είναι ένα αρχείο που περιλαμβάνει όλες τις αλλαγές στο task A. Μετά κάνεις revert, οπότε χάνεις τις αλλαγές του Α και αρχίζεις να δουλεύεις στο Β. Όταν τελειώνεις κάνεις 'Apply Path' και επαναφέρεις τις αλλαγές του Α.
Να προσθέσω και άλλη μια παράμετρο. Όλα τα παραπάνω γίνονται για να μην μπερδεύεται ο ένας developer με τον άλλο. Όταν μπαίνουν στη μέση και άτομα που ασχολούνται με το building-testing τότε ένα commit είναι πιο σοβαρό. Ακόμα και αν οι developers συμφωνήσουν μεταξύ τους ότι δεν πειράζει να κάνουν commit και κάτι που δεν έχει τελειώσει, ο tester (ο οποίος δεν θεωρείται μέλος της ομάδας) ίσως μπερδευτεί.
Μήπως δεν υπάρχει πρόβλημα με όλα αυτά και είναι απλά ιδέα μου;
Το ερώτημα αποτελεί αφορμή για συζήτηση και ιδέες. Άλλωστε δεν ψάχνω κάποια συγκεκριμένη και άμεση λύση. Απλά θέλω να ακούσω και άλλες απόψεις.
Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.