
Θα ήθελα να εφαρμόσουν έναν τρόπο καταγραφής της έκδοσης του έργου στον κωδικό, έτσι ώστε να μπορεί να χρησιμοποιηθεί κατά τη δοκιμή και να βοηθήσει σφάλματα κομμάτι. Φαίνεται ότι ο καλύτερος αριθμό έκδοσης να χρησιμοποιήσετε μόνο θα είναι ο σημερινός αριθμός αναθεώρησης από την ανατροπή. Είναι ένας εύκολος τρόπος για να συνδέσετε τον αριθμό αυτό σε μια (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 ()** μέθοδο.

 

Μπορείτε να χρησιμοποιήσετε την `svn:keywords`ιδιότητα να ενεργοποιήσετε τη `Rev`λέξη-κλειδί.


Στη συνέχεια, μπορείτε να χρησιμοποιήσετε `$Rev$`τον κωδικό σας και SVN θα επεκταθεί αυτόματα κατά την ενημέρωση για `$Rev: 256 $`τα οποία μπορούν στη συνέχεια να αναλύσει ...


[Περισσότερες πληροφορίες σχετικά με το εγχειρίδιο Subversion](http://svnbook.red-bean.com/en/1.0/ch07s02.html#svn-ch-7-sect-2.3.4)

 

Δύο τρόποι:


Ενσωματώστε *$ Id $* ή *$ Αναθεώρηση $* μέσα στον κώδικα. Τότε που *svn: λέξεις-κλειδιά = «Id Αναθεώρηση»* ιδιοκτησίας στο αρχείο. Αυτό θα σας δώσει την τροποποιήθηκε τελευταία αναθεώρηση του εν λόγω αρχείου προέλευσης. Καλό για μικρότερα έργα και σενάρια.


Εναλλακτικά, χρησιμοποιήστε ένα Makefile οδηγείται διαδικασία και το εργαλείο svnversion γραμμής εντολών. (Γλώσσα συγκεκριμένες - αυτό θα πρέπει να εργαστεί για την C / C ++)



```
echo -n "#define VERSION 1.0.1-" > version.h
svnversion -n . >> version.h

```

Ή κάποια πιο πολύπλοκη κατασκευή σενάριο με sed και version.h.in. Στη συνέχεια, μόλις *#include version.h*


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


Σημείωση: Θα χρησιμοποιηθεί επίσης ένα αναγνώσιμο από τον άνθρωπο κορδόνι έκδοση που έχω με το χέρι ενημέρωση. Το παράδειγμα θα δώσει: **Έκδοση: 1.0.1-r13445** 


~ J

 

Μπορείτε επίσης να χρησιμοποιήσετε SubWCRev η οποία αποτελεί μέρος της TortoiseSVN.


*SubWCRev είναι το πρόγραμμα της κονσόλας των Windows που μπορεί να χρησιμοποιηθεί για να διαβάσετε την ιδιότητα του Subversion αντίγραφο εργασίας και, προαιρετικά, να εκτελέσει υποκατάστασης λέξη-κλειδί σε ένα αρχείο προτύπου. Αυτό χρησιμοποιείται συχνά ως μέρος της διαδικασίας κατασκευής ως μέσο για την ενσωμάτωση πληροφοριών αντίγραφο εργασίας στο αντικείμενο χτίζετε. Συνήθως μπορεί να χρησιμοποιηθεί για να συμπεριλάβετε τον αριθμό αναθεώρησης σε «Σχετικά» κουτί.*


<http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-subwcrev.html>

 

στο Makefile σας, προσθέστε:



```
SVNDEV := -D'SVN_REV="$(shell svnversion -n .)"'
CFLAGS := $(SVNDEV) ...

```

τότε μπορείτε να χρησιμοποιήσετε μακρο `SVN_REV`οπουδήποτε στον κώδικά σας, όπως:



```
printf ("Version: SVN %s\n", SVN_REV);

```
 

Μια καλή up-to-ημερομηνία λύσης:


Δημιουργήστε μια `Makefile`που περιέχει την ακόλουθη γραμμή (στον ίδιο φάκελο `YourFile.dox`):



```
sed "s~RevNumber~$(shell svnversion ../)~g" YourFile.dox > YourFileDummy.dox; doxygen YourFileDummy.dox

```

Και `YourFile.dox`θα πρέπει να περιέχει το εξής:



```
...
PROJECT_NUMBER         = "Revision RevNumber"
...

```

Τώρα:


1. `sed`αντικαθιστά `RevNumber`το .dox με την έξοδο του `svnversion`(που εκτελούνται στο κεντρικό φάκελο του αποθετηρίου σας) και να αποθηκεύει το τροποποιημένο αρχείο να`YourFileDummy.dox`
2. `doxygen`εκτελείται για `YourFileDummy.dox`να δημιουργήσει την τεκμηρίωση
3. τεκμηρίωση σας θα περιέχει πλέον τον αριθμό αναθεώρησης!

 