Να πάρει τον αριθμό ανατροπή αποθετήριο σε κώδικα




Θα ήθελα να εφαρμόσουν έναν τρόπο καταγραφής της έκδοσης του έργου στον κωδικό, έτσι ώστε να μπορεί να χρησιμοποιηθεί κατά τη δοκιμή και να βοηθήσει σφάλματα κομμάτι. Φαίνεται ότι ο καλύτερος αριθμό έκδοσης να χρησιμοποιήσετε μόνο θα είναι ο σημερινός αριθμός αναθεώρησης από την ανατροπή. Είναι ένας εύκολος τρόπος για να συνδέσετε τον αριθμό αυτό σε μια (C ++ στη δική μου περίπτωση) αρχείο κεφαλίδας ή κάτι, το οποίο στη συνέχεια μπορώ να πάρω σε το κωδικό εκεί; Υποθέτω ότι αυτό είναι μια θέση διαπράξει γάντζο ή κάτι άλλο;


Υπάρχει κάποιος που έχει εμπειρία από την εφαρμογή αυτή (με τον κωδικό για να μοιραστείτε, παρακαλώ;), ή μπορεί να προτείνει μια καλύτερη εναλλακτική λύση; Ευχαριστώ.
Ενώ μόδας, η λέξη-κλειδί κόλπο αναθεώρηση ενημερώνει μόνο το αρχείο όταν έχει αλλάξει σε αυτή την αναθεώρηση - αν δεν αλλάξει το αρχείο, τότε θα συνεχίσει να αντικατοπτρίζει την παλιά αναθεώρηση.


Αν θέλετε το λογισμικό να αντανακλά πάντα το συνολικό αριθμό αναθεώρησης, τότε θα πρέπει να σκαλίζω το [σχετικό SVN καταχωρήσεις αρχείο](http://svnbook.red-bean.com/en/1.1/ch08s03.html) και αποσυμπιέστε το, το οποίο δεν είναι πάρα πολύ δύσκολο (αυτό είναι ένα αρχείο XML).


Wikipedia το κάνει αυτό στη [σελίδα τους εκδοχή](https://en.wikipedia.org/wiki/Special:Version) για να δείξει την αναθεώρηση του λογισμικού που τρέχει ζωντανά? [ο κώδικας είναι εδώ](https://svn.wikimedia.org/svnroot/mediawiki/trunk/phase3/includes/specials/SpecialVersion.php) - αναζητήστε το **getSvnRevision ()** μέθοδο.
Διακλάδωση σε ανατροπή διευκολύνεται από ένα πολύ πολύ ελαφριά και αποτελεσματική εγκατάσταση αντιγραφή.


Διακλάδωση και tagging είναι ουσιαστικά η ίδια. Απλά αντιγράψτε ολόκληρο το φάκελο στο χώρο αποθήκευσης κάπου αλλού στο αποθετήριο χρησιμοποιώντας την `svn copy`εντολή.


Βασικά, αυτό σημαίνει ότι είναι κατά συνθήκη τι αντιγραφή ενός φακέλου σημαίνει - είτε πρόκειται για ένα αντίγραφο ασφαλείας, ετικέτα, υποκατάστημα ή whater. Ανάλογα με το πώς θέλετε να σκεφτείτε για τα πράγματα (συνήθως ανάλογα με το ποιο εργαλείο SCM έχετε χρησιμοποιήσει στο παρελθόν) θα πρέπει να δημιουργηθεί μια δομή φάκελο μέσα αποθήκευσης σας για να υποστηρίξει το στυλ σας.


Κοινή στυλ είναι να έχουμε ένα σωρό φακέλους στην κορυφή του χώρου αποθήκευσης σας ονομάζεται `tags`, `branches`, `trunk`, κλπ - που σας επιτρέπει να αντιγράψετε όλη σας `trunk`(ή υπο-ομάδες) στους `tags`ή / και `branches`φακέλους. Αν έχετε περισσότερα από ένα έργο μπορεί να θέλετε να αναπαράγουν αυτό το είδος της δομής κάτω από κάθε έργου:


Μπορεί να πάρει λίγο χρόνο για να συνηθίσουν στην ιδέα - αλλά δουλεύει - απλά φροντίστε να (και την ομάδα σας) είναι σαφείς σχετικά με τις συμβάσεις που πρόκειται να χρησιμοποιήσετε. Είναι επίσης μια καλή ιδέα να έχουμε μια καλή σύμβαση ονοματοδοσίας - κάτι που εξηγεί γιατί το υποκατάστημα / tag έγινε και κατά πόσο εξακολουθεί να είναι σκόπιμο - να εξετάσει τρόπους κλάδους αρχειοθέτησης που είναι παρωχημένες. > 
> Μου αρέσει η ιδέα ότι δεν χρειάζεται για την κατάρτιση των προγραμμάτων κάθε φορά που κάνετε μια αλλαγή. Καταλαβαίνω ότι οι ερμηνεύεται γλώσσες πιθανότατα συνηθισμένος χτυπήσει την ίδια απόδοση αυτή τη στιγμή να πάρει.
> 
> 
> 


Αυτό είναι το μεγαλύτερο πρόβλημα? μπορεί να ζείτε με το χτύπημα απόδοση. Θα μπορούσατε να δοκιμάσετε να χρησιμοποιήσετε την Python και την [επέκτασή του με την τρέχουσα C ++ σας modules](http://www.python.org/doc/ext/intro.html) για τα βαρέα τμήματα των επιδόσεων. Παρόλα αυτά, η αλλαγή ολόκληρου του συστήματός σας φαίνεται σαν μια μεγάλη προσπάθεια, αν ο μόνος λόγος είναι η έλλειψη της C ++ ταλέντο. Πρόσληψη ανθρώπους που ξέρουν C ++ φαίνεται να είναι η φθηνότερη επιλογή. Ήμουν στην ευχάριστη θέση να βρουν [μια καλή συζήτηση](http://coding.derkeiler.com/Archive/C_CPP/comp.lang.c/2004-02/1382.html) για το θέμα αυτό, όπως δεν είχα πραγματικά δοθεί πολλή σκέψη πριν.


Εν ολίγοις, η οποία υπεγράφη είναι μια καλή γενική επιλογή - ακόμα και όταν είστε νεκροί βέβαιοι ότι όλοι οι αριθμοί είναι θετικές - αν πρόκειται να κάνετε αριθμητικές πράξεις με τη μεταβλητή (όπως σε ένα τυπικό για την περίπτωση loop). 


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


Προσωπικά, μου αρέσει να υπογραφεί γιατί δεν εμπιστεύομαι τον εαυτό μου να μείνει συνεπής και να αποφευχθεί η ανάμειξη των δύο τύπων (όπως το άρθρο προειδοποιεί). <p>απλά χρησιμοποιήστε <a href="http://ruby-doc.org/core-1.9.3/array.html#method-i-sample"><code>array#sample</code></a> :</p><pre><code>[:foo, :bar].sample # =&gt; :foo, or :bar :-) </code></pre><p>διατίθεται σε ruby 1.9.1+. για να μπορέσετε να το χρησιμοποιήσετε με μια προηγούμενη έκδοση του ruby, θα μπορούσατε <a href="https://github.com/marcandre/backports"><code>require "backports/1.9.1/array/sample"</code></a> .</p><p>σημειώστε ότι στο ruby 1.8.7 υπάρχει κάτω από το ατυχές όνομα <code>choice</code>; μετονομάστηκε σε μεταγενέστερη έκδοση, επομένως δεν πρέπει να το χρησιμοποιήσετε.</p><p>παρόλο που δεν είναι χρήσιμη σε αυτή την περίπτωση, το <code>sample</code> δέχεται ένα όρισμα αριθμού σε περίπτωση που θέλετε μια σειρά διακριτών δειγμάτων.</p> Το πιο σημαντικό πράγμα για τον έλεγχο έκδοσης είναι:


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


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


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



```
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. Δημιουργήστε ένα έργο βάσης δεδομένων χρησιμοποιώντας το Visual Studio Edition βάση δεδομένων, το βάζουμε σε έλεγχο πηγή και αφήστε τους προγραμματιστές κάνουν check-in κωδικό τους. Έχω κάνει αυτό και λειτουργεί καλά με την καθημερινή κατασκευάζει και προσφέρει μια μεγάλη υποστήριξη για τη διάρθρωση κώδικα της βάσης δεδομένων σας. Δείτε αυτό το blog post για τα χαρακτηριστικά


<http://www.vitalygorn.com/blog/post/2008/01/Handling-Database-easily-with-Visual-Studio-2008.aspx> Θα:


* Γράψτε τον έλεγχο ασφάλειας με τέτοιο τρόπο που να μπορεί να εφαρμοστεί σε οποιοδήποτε μέρος θέλετε. Με αυτό τον τρόπο μπορείτε να refactor οι απαιτήσεις αλλάζουν.
* Εάν ο έλεγχος ασφαλείας στην πραγματικότητα θα *είναι πάντα* ισχύει, τοποθετήστε το στο αποθετήριο στρώμα (ή καλύτερα, σε μια πτυχή αν η γλώσσα σας υποστηρίζει), έτσι ώστε πολλαπλές υπηρεσίες θα έχουν όλοι την κοινή ασφάλεια, εάν χρησιμοποιούν τον ίδιο χώρο αποθήκευσης. Διαφορετικά τοποθετήστε το στην υπηρεσία (ή μια πτυχή που ενεργεί για την υπηρεσία).
* να περάσει ολόκληρο το αντικείμενο χρήστη με το μηχανισμό ελέγχου ασφαλείας:


	+ εάν ο έλεγχος ασφαλείας αργότερα γίνεται πιο σύνθετη (εξαρτάται από τις άλλες ιδιότητες του χρήστη) το API δεν θα αλλάξει?
	+ καθιστά πιο σημασιολογικό νόημα - είστε έλεγχο ο χρήστης έχει την άδεια να κάνει κάτι, δεν είναι ότι η λίστα με τις χώρες κάνει. Επιστροφή με .Net 1.1 συσκότιση ήταν απαραίτητη: Κωδικός μεταγλώττιση ήταν εύκολο, και θα μπορούσε να πάει από το συγκρότημα, με την IL, με C # κώδικα και έχουν συνταχθεί και πάλι με πολύ λίγη προσπάθεια.


Τώρα με .Net 3.5 δεν είμαι καθόλου σίγουρος. Δοκιμάστε μεταγλώττιση ένα συγκρότημα 3.5? αυτό που παίρνετε είναι μια μακρά μακριά από τη σύνταξη.


Προσθέστε τις βελτιστοποιήσεις από 3,5 (πολύ καλύτερα από 1,1) και τον τρόπο ανώνυμο τύπων, αντιπροσώπους και ούτω καθεξής αντιμετωπίζονται με αντανάκλαση (που είναι ένας εφιάλτης να ξαναμεταγλωττίσετε). Προσθέστε λάμδα εκφράσεις, compiler «μαγεία», όπως Linq-σύνταξη και `var`, και C # 2 λειτουργίες, όπως `yield`(η οποία οδηγεί σε νέες κατηγορίες με δυσανάγνωστο όνομα). Decompiled κωδικό σας καταλήγει σε μεγάλο μακριά από μεταγλωττιστεί.


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


Θα ήθελα να συστήσω-κλειδιά υπογραφή συνελεύσεις σας (που σημαίνει ότι αν οι χάκερ μπορούν να μεταγλωττίσετε ένα που πρέπει να ξαναμεταγλωττίσετε όλα), αλλά δεν νομίζω ότι συσκότιση της αξίζει τον κόπο. Αμφιβάλλω πολύ ότι η «μετατροπή» που βλέπετε είναι μια πραγματική διαφορά στις δύο αντίγραφα του αρχείου. OS X δεν αποθηκεύει οποιοδήποτε είδος της αξίας κωδικοποίηση για το περιεχόμενο ενός αρχείου, έτσι είναι πολύ πιο πιθανό ότι είναι ό, τι εργαλείο που χρησιμοποιείτε για να προβάλλετε / επεξεργαστείτε αρχεία σας που ερμηνεύουν το περιεχόμενο με διαφορετικό τρόπο, είτε πρόκειται για Xcode, TextWrangler, ή οτιδήποτε άλλο πρόγραμμα επεξεργασίας που χρησιμοποιείτε. Κάνοντας μια ευθεία αντίγραφο του αρχείου, είτε είναι από το Finder, Path Finder ή την γραμμή εντολών, δεν θα αλλάξει ποτέ τα πραγματικά δεδομένα στο αρχείο κατά τη διαδικασία της αντιγραφής.


UTF-8 και Mac OS ρωμαϊκή είναι στην πραγματικότητα το ίδιο, αν δεν έχετε κανένα χαρακτήρα παραπάνω 0x7F, γι 'αυτό είναι πολύ πιθανό ότι ένα έγκυρο αρχείο UTF-8 χωρίς BOM θα μπορούσε να ερμηνευθεί ως ένα αρχείο Ρωμαϊκή Mac OS. Σε κάθε περίπτωση, θα ήθελα να εξετάσουμε ό, τι πρόγραμμα είναι αυτό που είναι που δείχνει ότι η κωδικοποίηση για να βρουν τη λύση, δεν τη διαδικασία αντιγραφής αρχείων της ίδιας OS X. **Καλύτερο που έχετε να κάνετε:**


* Η μίσθωση ενός άντρα ασφαλείας για την ανάλυση του πηγαίου κώδικα
* Δεύτερο καλύτερο πράγμα που κάνει την πρόσληψη ενός / pentesting εταιρεία τύπος ασφαλείας για την ανάλυση μαύρο κουτί


**Μετά τα εργαλεία θα βοηθήσουν:** 


* Στατική Εργαλεία Ανάλυσης οχυρώσουν Εργαστήρια / ουγγιά - Κωδικός κριτική
* Σκεφτείτε λύσεις όπως είναι η ασφαλής αντικείμενο (VS.NET addon) WebInspects της HP
* Αγοράζοντας ένα σαρωτή εφαρμογή blackbox όπως Netsparker, AppScan, WebInspect, Hailstorm, Acunetix ή δωρεάν έκδοση του [Netsparker](http://www.mavitunasecurity.com/communityedition/)


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