
Η εταιρεία μου είναι με τη χρήση CVS ως de facto πρότυπο μας για τον έλεγχο της πηγής. Ωστόσο, έχω ακούσει πολλούς ανθρώπους να λένε ότι SVN είναι καλύτερη.


Ξέρω SVN είναι νεότερο, αλλά εκτός από αυτό, είμαι εξοικειωμένος με τα οφέλη της.


Αυτό που ψάχνω είναι μια καλή, σύντομη σύγκριση των δύο συστημάτων, επισημαίνοντας τυχόν πλεονεκτήματα ή μειονεκτήματα του καθενός σε ένα περιβάλλον ανάπτυξης Java / Eclipse.

 
Ποια είναι τα πλεονεκτήματα της χρήσης SVN πάνω CVS;
====================================================



CVS παρακολουθεί μόνο την τροποποίηση με βάση το αρχείο-από-αρχείο, ενώ SVN παρακολουθεί μια ολόκληρη δεσμευτούν ως νέα αναθεώρηση, πράγμα που σημαίνει ότι είναι ευκολότερο να ακολουθήσετε την ιστορία του έργου σας. Προσθέστε το γεγονός ότι όλα τα σύγχρονα λογισμικά ελέγχου προέλευσης χρησιμοποιούν την έννοια της αναθεώρησης και έτσι είναι πολύ πιο εύκολο να μεταναστεύσουν από το SVN ό, τι είναι από το CVS.


Υπάρχει επίσης η ατομική commit πρόβλημα. Αν και συνάντησε μόνο μία φορά, είναι πιθανό ότι 2 άτομα διαπράττουν από κοινού σε CVS μπορεί να έρχονται σε σύγκρουση μεταξύ τους, χάνοντας κάποια δεδομένα και τη θέση του πελάτη σας σε ασυνεπή κατάσταση. Όταν ανιχνεύεται νωρίς, τα προβλήματα αυτά δεν είναι σημαντικά, διότι τα δεδομένα σας είναι ακόμα κάπου εκεί έξω, αλλά μπορεί να είναι ένας πόνος σε ένα αγχωτικό περιβάλλον.


Και τέλος, δεν είναι πολλά εργαλεία που έχουν αναπτυχθεί γύρω από το CVS πια. Ενώ τα νέα και λαμπερά νέα εργαλεία, όπως το Git ή Mercurial δεν έχουν σίγουρα τα εργαλεία ακόμα, SVN έχει μια αρκετά μεγάλη βάση εφαρμογής σε οποιοδήποτε σύστημα.


**EDIT 2015** : Σοβαρά, αυτή η απάντηση είναι 7 χρονών τώρα. Ξεχάστε SVN, πηγαίνετε χρήση Git όπως όλοι οι άλλοι!

 

Μία από τις πολλές συγκρίσεις:


<http://wiki.scummvm.org/index.php/CVS_vs_SVN>


Τώρα αυτό είναι πολύ ειδικά για το έργο, αλλά πολλά πράγματα apllies γενικότερα.


Pro Subversion:



> 
> * Υποστήριξη για το εκδόσεων μετονομάζει / κινήσεις (αδύνατο με CVS): Fingolfin, Ender
> * Υποστηρίζει καταλόγους εγγενώς: Είναι δυνατόν για την άρση τους, και είναι εκδόσεων: Fingolfin, Ender
> * Οι ιδιότητες αρχείου εκδόσεων? όχι περισσότερο «εκτελέσιμο bit» κόλαση: Fingolfin
> * Συνολικά ο αριθμός αναθεώρησης κάνει build εκδόσεων και τις δοκιμές παλινδρόμησης πολύ πιο εύκολο: Ender, Fingolfin
> * Ατομικής δεσμεύεται: Fingolfin
> * Έξυπνο (directory-based) διακλάδωση και ετικέτες: Fingolfin
> * Ευκολότερη σενάρια γάντζο (πριν / μετά τη διάπραξη, κλπ): SumthinWicked (το χρησιμοποιώ για Doxygen μετά commits)
> * Αποτρέπει την τυχαία διάπραξη των σύγκρουση αρχεία: Αλμυρό-άλογο, Fingolfin
> * Υποστήριξη για την εντολή έθιμο «diff»: Fingolfin
> * Εκτός σύνδεσης diffs, και είναι άμεση: ΣΕΒ
> 
> 
> 

 

Το βιβλίο Subversion έχει [ένα παράρτημα](http://svnbook.red-bean.com/en/1.4/svn.forcvs.html) που περιγράφει με λεπτομέρειες σημαντικές διαφορές από το CVS, το οποίο μπορεί να σας βοηθήσει να κάνετε την απόφασή σας. Οι δύο προσεγγίσεις είναι περισσότερο ή λιγότερο η ίδια ιδέα, αλλά SVN σχεδιάστηκε ειδικά για να διορθώσετε μακροχρόνια ρωγμές στο CVS, ώστε, θεωρητικά τουλάχιστον, SVN θα είναι πάντα η καλύτερη επιλογή.

 

SVN έχει 3 κύρια πλεονεκτήματα σε σχέση με CVS


* είναι πιο γρήγορο
* υποστηρίζει εκδόσεων των δυαδικών αρχείων
* και προσθέτει συναλλαγών διαπράττουν (όλα ή τίποτα)

 

Θα πρέπει να ρίξετε μια ματιά στο [Git](http://git-scm.com) αντί SVN. Είναι μια DVCS που είναι απίστευτα γρήγορο και πολύ ισχυρό. Δεν είναι τόσο φιλικό προς το χρήστη και SVN, αλλά είναι η βελτίωση συναφώς, και δεν είναι *ότι* σκληρά για να μάθουν.

 

btw: CVSNT υποστηρίζει ατομική commits

 

Εγώ θα δεύτερη πρόταση Eridius' του Git, αλλά θα ήθελα να επεκταθεί στα άλλα DRCS (Distributed Σύστημα Ελέγχου Αναθεώρηση), όπως [Mercurial](http://www.selenic.com/mercurial/wiki/) και [παζάρι](http://bazaar-vcs.org/) .


Τα προϊόντα αυτά είναι αρκετά πρόσφατη και το επίπεδο των εργαλείων και την ενσωμάτωση τους φαίνεται χαμηλή αυτή τη στιγμή (με βάση την αρχική μου έρευνα). Θα έλεγα ότι ήταν η καταλληλότερη για την εξουσία-developers εκεί έξω (και εδώ ;-)).


Από την άλλη πλευρά, αυτό **δεν** CVS κάνει σήμερα για σας; Από την πρώτη σας ερώτηση, δεν έχετε πραγματικά καμία, «CVS χάλια σε αυτό, ό, τι θα μπορούσα να χρησιμοποιήσει αντ 'αυτού;»


Έχετε το gotta σταθμίσει τα έξοδα οποιασδήποτε πιθανής μετανάστευσης έναντι των οφελών. Για ένα υπάρχον έργο, νομίζω ότι θα ήταν δύσκολο να δικαιολογηθεί.

 

Ένα πράγμα να μην παραβλέψουμε είναι το οικοσύστημα. Δούλευα σε ένα κατάστημα CVSNT, και ήμουν εύρεση εργαλείων όλο και πιο ανοιχτού κώδικα ανατροπή υποστηρίζεται από προεπιλογή.

 

Ως κάποιος που είναι στη μέση της εναλλαγής μεταξύ CVS και SVN (αρχικά αλλάξαμε όλα τα έργα μας με cvs2svn και στη συνέχεια αποφάσισε ότι θα μετάβαση από μόνο χρησιμοποιώντας svn για νέα έργα), εδώ είναι μερικά από τα προβλήματα που είχαμε.


* Η συγχώνευση και η διακλάδωση είναι πολύ διαφορετική, και αν επεκταθούν και να συγχωνεύσει συχνά, αν δεν έχετε SVN 1.5 τρέχει στον server σας πρέπει να ξέρετε όταν διακλαδισμένα (αυτό δεν είναι πολύ σαφής στις διαλόγους Tortoise SVN). Michael λέει η διακλάδωση και η συγχώνευση είναι έξυπνο, θα έλεγα ότι μετά τη χρήση του CVS για 10 χρόνια, δεν είναι.
* Αν σας εκτελείτε στο διακομιστή SVN στο Linux, μπορεί να είναι δύσκολο να πάρει SA σας να κινηθεί προς svn 1.5, όπως η προεπιλεγμένη εγκατάσταση 1.4.x.
* Η συγχώνευση των συγκρούσεων δεν είναι τόσο εύκολο ή τόσο σαφής (τουλάχιστον για μένα και τους συναδέλφους μου) στο TortoiseSVN όπως είναι στην TortoiseCVS. Η προσέγγιση τριών παράθυρο παίρνει κάποιος να συνηθίσει και το WinMerge (προτιμάται εργαλείο συγχώνευση μου) δεν κάνει μια συγχώνευση τριών παράθυρο.
* Προσοχή: πολλά από τα online σεμινάρια και άρθρα περιοδικών που έχω διαβάσει προφανώς δεν διακλαδίζονται και συγχωνεύονται, θα πρέπει να ρυθμίσετε το κύριο repository σας <https://svn.yoursvnserver.com/repos/YourProject/Trunk> και τα υποκαταστήματα στο [https: / /svn.yoursvnserver.com/repos/YourProject/Branches/BranchX](https://svn.yoursvnserver.com/repos/YourProject/Branches/BranchX) . Μπορείτε να καθαρίσει, αν ξεκινήσετε repos σας σε λάθος μέρος, αλλά οδηγεί σε σύγχυση.

 

μπορείτε επίσης να επιλέξετε να μεταναστεύσουν μόνο το πιο πρόσφατο κώδικα από το CVS στο SVN και να παγώσει τις τρέχουσες συμφωνίες επαναγοράς CVS σας. Αυτό θα καταστεί η μετανάστευση ευκολότερη και μπορεί επίσης να οικοδομήσουμε κληρονομιά εκδόσεις σας στην παλιά repo CVS.

 

Λοιπόν, μερικά πράγματα που αισθάνομαι κάνει svn φοβερό.


1. Το χωνευτήριο συνδυασμός SVN-Altassian είναι μία πολύ ανώτερη μέθοδος αξιολογήσεις και τους ελέγχους ποιότητας
2. Καλύτερη διαχείριση των συγκρούσεων και συγχωνεύσεις
3. Είναι προφανώς πιο γρήγορα για τη λήψη ταμεία, την εκτέλεση δεσμεύεται, κ.λπ.
4. Το ατομικό πρόβλημα δεσμευτούν - Είναι πιθανό ότι 2 άτομα διαπράττουν από κοινού σε CVS μπορεί να έρχονται σε σύγκρουση μεταξύ τους, χάνοντας κάποια δεδομένα και τη θέση βάσης κωδικό σας σε ασυνεπή κατάσταση


Η μετανάστευση μπορεί εύκολα να γίνει μέσα σε λίγες ώρες με τη χρήση cvs2svn.

 

CVS (Σύστημα Ταυτόχρονη εκδόσεις) και SVN (Subversion) είναι δύο συστήματα αρχείων ελέγχου έκδοση που χρησιμοποιούνται ευρέως από τις ομάδες που συνεργάζονται σε ένα ενιαίο έργο. Τα συστήματα αυτά επιτρέπουν στους συνεργάτες να παρακολουθείτε τις αλλαγές που γίνονται και ξέρω ποιος αναπτύσσει το οποίο και κατά πόσο ένα υποκατάστημα θα πρέπει να εφαρμοστεί στο κύριο κορμό ή όχι. CVS είναι η πολύ παλαιότερη από τις δύο και ήταν το πρότυπο εργαλείο συνεργασίας για πολλούς ανθρώπους. SVN είναι πολύ νεότερο και εισάγει πολλές βελτιώσεις για την αντιμετώπιση των αιτημάτων των περισσότερων ανθρώπων.

 