συγκρίνοντας τα περιεχόμενα δύο αρχείων στο υψηλό κείμενο
<p>έχω δύο κλωνοποιημένες αποθήκες δύο πολύ παρόμοιων έργων ανοιχτού κώδικα, στα οποία εργάζομαι σε διάφορες περιπτώσεις στο sublime text 2 για να φτάσω στο επιθυμητό αποτέλεσμα. ο κώδικας και από τα δύο αυτά έργα χρησιμοποιήθηκε. έχω χρησιμοποιήσει τον git ως έλεγχο έκδοσης για το έργο μου, αλλά δεν έχω συμπεριλάβει τα αρχικά έργα. έτσι, θα ήθελα να μπορώ να συγκρίνω γρήγορα το περιεχόμενο δύο αρχείων του αρχικού έργου και να συγκρίνω τις διαφορές μεταξύ τους και του έργου μου.</p><p>ελπίζω ότι το υψηλό κείμενο 2 θα έχει ένα χαρακτηριστικό "σύγκριση αρχείου", αλλά δεν μπορώ να βρω κάτι σχετικό με αυτό στις ρυθμίσεις ή στο διαδίκτυο. ένα πακέτο st2 τρίτου μέρους για την εκπλήρωση αυτού του καθήκοντος θα λειτουργούσε επίσης καλά. <strong>είναι δυνατή μια τέτοια εργασία μέσα στον επεξεργαστή κειμένου st2;</strong></p>
<p>μπορείτε στην πραγματικότητα να συγκρίνετε τα αρχεία εγγενώς στο sublime text.</p><ol> <li>μεταβείτε στο φάκελο που περιέχει τους μέσω <code>open folder...</code> ή σε ένα έργο</li> <li>επιλέξτε τα δύο αρχεία (π.χ. κρατώντας το <kbd>ctrl</kbd> σε windows ή <kbd>⌘</kbd> στο macos) που θέλετε να συγκρίνετε στην πλαϊνή γραμμή</li> <li>κάντε δεξί κλικ και επιλέξτε την επιλογή <code>diff files...</code>.</li> </ol><p><img src="https://i.stack.imgur.com/ggzag.png" width="500"></p>
Μπορεί να είμαι ντεμοντέ, αλλά εγώ προτιμώ επεξεργαστή κειμένου μου. 


Χρησιμοποιώ emacs, και έχει μια αρκετά αξιοπρεπή λειτουργία xml. 


Οι περισσότερες καλές συντάκτες κειμένου θα πρέπει hi-φωτισμό και ταιριάζουν ετικέτα εγκαταστάσεις αξιοπρεπή σύνταξη. IDE σας μπορεί να το κάνει ήδη (IntelliJ ιδέα κάνει, και πιστεύω Eclipse κάνει επίσης). Καλή προγράμματα επεξεργασίας κειμένου θα είναι σε θέση να αντιμετωπίσει *τεράστια* αρχεία, αλλά μερικοί συντάκτες του κειμένου δεν μπορεί να είναι σε θέση να τις αντιμετωπίσουν. Πόσο μεγάλη μιλάμε; Μην αμελήσετε το «σύντροφο» εργαλείο της γραμμής εντολών. Μπορείτε να το χρησιμοποιήσετε για την έξοδο του σωλήνα σε TextMate, οπότε αν μπορείτε να κάνετε τα εξής ...



```
diff file1.py file2.py | mate

```

... αυτό δεν θα είναι μόνο ανοικτή σε TextMate, αλλά είναι αρκετά έξυπνος για να ξέρει ότι ψάχνετε σε μια διαφορά και τονίζουν τις γραμμές στην οθόνη.


ενσωμάτωση SVN TextMate είναι μεγάλη? φαίνεται επίσης να έχουν δέσμες για κάποια άλλα συστήματα ελέγχου εκδόσεων, καθώς και.


Προσθέστε GetBundle να περιηγηθείτε στο αποθετήριο πακέτο. Βρήκα το πακέτο jQuery μέσα από αυτό και είναι πολύ βολικό.


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


* Θα πάρετε μόνο τη συναρμολόγηση (χωρίς επιπλέον γυμναστικής ILMerge)
* Είναι πιο εύκολο να θολώνω (επειδή θα έχετε λιγότερες δημόσιες τύπους και μεθόδους, ιδανικά καθόλου)


Ο διαχωρισμός πηγαίο κώδικα σας σε πολλά έργα νόημα μόνο εάν ...


* Έχετε κάποια τμήματα του πηγαίου κώδικα που αποτελούν μέρος του προγράμματος, αλλά όχι να αναπτυχθούν από προεπιλογή ή σε όλα (δοκιμές μονάδα, επιπλέον plugins κλπ)
* Περισσότερα προγραμματιστές που εμπλέκονται και θέλετε να αντιμετωπίζουν την εργασία τους ως αναλώσιμο μαύρο κουτί. (Όχι πολύ συνιστάται)
* Εάν μπορείτε να διαχωρίζονται σαφώς το έργο σας σε απομονώνονται στρώματα / ενότητες και θέλετε να βεβαιωθείτε ότι δεν μπορούν cross-καταναλώνουν **εσωτερικά** μέλη. (επίσης δεν συνιστάται, διότι θα πρέπει να αποφασίσει ποια πλευρά είναι το πιο σημαντικό)


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


***ΑΠΛΑ αρχίσετε να το χρησιμοποιείτε***


Δεν χρησιμοποιούν ελέγχου έκδοσης είναι μια φρικτή ιδέα. Εάν δεν χρησιμοποιείτε έλεγχος έκδοσης, σταματήσετε να διαβάζετε τώρα και να αρχίσετε να το χρησιμοποιείτε.


Είναι πολύ εύκολο να μετατρέψετε από



```
cvs<->svn<->git<->hg

```

Δεν έχει σημασία ποιο θα επιλέξετε. Απλά επιλέξτε το πιο εύκολο για σας να χρησιμοποιήσετε και να αρχίσει την καταγραφή της ιστορίας του κωδικού σας. Μπορείτε πάντα να μεταναστεύσουν σε μια άλλη (Δ) VCS αργότερα.


Αν ψάχνετε για ένα εύκολο στη χρήση γραφικό περιβάλλον ματιά [TortoiseSVN (Windows)](http://tortoisesvn.tigris.org/"TortoiseSVN") και [εκδόσεις (Mac)](http://www.versionsapp.com/) (Προτεινόμενη από [codingwithoutcomments](https://stackoverflow.com/questions/2658?sort=newest#2708) )







Επεξεργασία:



> 
> [pix0r είπε:](https://stackoverflow.com/questions/2658/#2672)
> 
> 
> Git έχει μερικά ωραία χαρακτηριστικά, αλλά δεν θα είναι σε θέση να τις εκτιμήσουν αν δεν έχετε ήδη χρησιμοποιήσει κάτι περισσότερο τυπική, όπως CVS ή Subversion.
> 
> 
> 


Αυτό. Χρησιμοποιώντας το git είναι άχρηστη αν δεν ξέρετε τι έλεγχος έκδοσης μπορεί να κάνει για σας.


Επεξεργασία 2:


Μόλις είδα αυτό το σύνδεσμο στο reddit: [Ανατροπή εξαπατήσει φύλλο](http://www.addedbytes.com/cheat-sheets/subversion-cheat-sheet/) . Καλή γρήγορη αναφορά για την γραμμή εντολών svn. Emacs είναι ένα θαυμάσιο πρόγραμμα επεξεργασίας κειμένου. Έχει τεράστια δύναμη τη στιγμή που θα γίνει ένας χρήστης δύναμη. Μπορείτε να αποκτήσετε πρόσβαση σε ένα κέλυφος, έχουν ως πολλά αρχεία ανοιχτά, όπως θέλετε σε όσες υπο-παράθυρα και ένα εξαιρετικά ισχυρό scripting υποστήριξη που σας επιτρέπει να προσθέσετε όλα τα είδη των τακτοποιημένο χαρακτηριστικά.


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


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


Αν θέλετε να ξεκινήσετε με κάτι πολύ πιο βασικό όμως, gedit είναι ωραία ... που έχει κατασκευαστεί στην επισήμανση σύνταξης, καθώς και για τις περισσότερες γλώσσες με βάση την επέκταση ονόματος αρχείου. Έρχεται με το λειτουργικό σύστημα, καθώς και (αν και ο emacs μπορείτε εύκολα να εγκαταστήσετε με apt get-ή κάποια παρόμοια χρησιμότητα εύρεσης πακέτο).


UPDATE: Νομίζω ότι gedit είναι αποκλειστικά GUI που βασίζεται όμως, γι 'αυτό θα ήταν χρήσιμο να μάθουν emacs σε περίπτωση που είστε κολλημένοι με μόνο ένα κέλυφος (που είναι πλήρως εξοπλισμένο τόσο κέλυφος και γραφικό περιβάλλον).


ΠΕΡΑΙΤΕΡΩ ΕΝΗΜΕΡΩΣΗ: Μόλις FYI, εγώ δεν προσπαθώ να ωθήσει Emacs πάνω Vim, είναι ακριβώς αυτό που μπορώ να χρησιμοποιήσω, και αυτό είναι μια μεγάλη editor (όπως είμαι βέβαιος ότι Vim είναι πάρα πολύ). Είναι δύσκολο στην αρχή (όπως είμαι βέβαιος ότι Vim είναι πάρα πολύ), αλλά το ερώτημα ήταν περίπου επεξεργασίας κειμένου για το Linux, εκτός vi ... Emacs φαίνεται η λογική επιλογή για μένα, αλλά gedit είναι ένα μεγάλο απλό επεξεργαστή κειμένου με μερικά ωραία χαρακτηριστικά αν αυτό είναι το μόνο που αναζητάτε. Δοκιμάστε την `/oc:FILENAME`επιλογή να εξαρτάται, να γράψει ένα κόμμα αρχείο τιμών διαχωρισμένων. Αυτό μοιάζει να είναι πιο εύκολο να αναλύσει από τη μηχανή από την «ελεύθερη μορφή» αρχείο κειμένου που δημιουργείται από την / ot: ΑΡΧΕΙΟ / επιλογή. Πρότυπη βιβλιοθήκη της Python παρέχει πολύ καλές εγκαταστάσεις για τη συνεργασία με την πηγή Python? σημειώστε τις [tokenize](https://docs.python.org/2/library/tokenize.html) και [parser](https://docs.python.org/2/library/parser.html) ενότητες. Υπάρχει ένα [plugin Eclipse σε εξέλιξη](http://www.eclipse.org/egit/) . Eric νεροχύτη έχει μια [εξαιρετική σειρά](http://www.ericsink.com/scm/source_control.html) για τον έλεγχο του πηγαίου κώδικα απευθύνονται σε αρχάριους. Για λεπτομέρειες Subversion, συμπεριλαμβανομένης της καθιέρωσης και της διαχείρισης ενός διακομιστή, το [βιβλίο Subversion](http://svnbook.red-bean.com/) είναι μια μεγάλη πηγή, και περιλαμβάνει ένα τμήμα με παραδείγματα από μια τυπική συνεδρία με το Subversion (checkout, διαπράττουν, συγχώνευση και βασικά ενημέρωση).


**Ενημέρωση:** Ξέχασα να αναφέρω ότι για αρχάριους, θα ήθελα επίσης να συστήσει Messing περίπου σε ένα γραφικό πελάτη, η οποία αφαιρεί την παρενόχληση της γραμμής εντολών από την εμπειρία εκμάθησης. [RapidSVN](http://rapidsvn.tigris.org/) είναι μια λογική πελάτη cross-platform. Θα βρείτε επίσης ότι κοινή IDEs είτε έρχονται με την υποστήριξη Subversion, ή έχουν plugins που μπορούν να εγκατασταθούν, οι οποίες επιτρέπουν περισσότερες λειτουργίες ελέγχου έκδοση που πρέπει να εκτελεστούν μέσα σε αυτό το περιβάλλον.


**@John Millikin:** Ενώ η δημιουργία ενός διακομιστή Subversion μπορεί να είναι περίπλοκη, ανάλογα με τη γενική εμπειρία κάποιου διαχειριστή, μην ξεχνάτε ότι δεν χρειάζεται να το κάνουμε αυτό ακριβώς να χάνω την ώρα μου με ένα αποθετήριο και να ασχοληθούμε με τα βασικά - το πελάτης μπορεί να αλληλεπιδράσει με ένα αποθετήριο στο τοπικό σύστημα αρχείων. Αν χρησιμοποιείτε τάξεις Objective-C, τότε η `[myObject isKindOfClass: [InterestingClass class]]`δοκιμή είναι διαθέσιμη. Αν χρησιμοποιείτε πρωτόγονων τύπων (η οποία ερώτησή σας, αναφέροντας το «διπλό» τύπου, προτείνει), τότε δεν μπορείτε. Ωστόσο, αν κάνετε κάποια πολύ funky πράγματα, ο compiler μπορεί να σας πει πότε πρωτόγονων τύπων ή δεν ταιριάζουν, και όταν δεν θα εκτελέσει έμμεση προώθηση στο επιθυμητό τύπο.


Θα ήταν χρήσιμο να γνωρίζουμε λίγο περισσότερα για το ποιο είναι το συγκεκριμένο πρόβλημα είναι ότι προσπαθείτε να λύσετε, διότι μπορεί να είναι ότι η λύση δεν περιλαμβάνει την ανίχνευση της δημιουργίας διπλασιάζεται σε όλα :-).