Nothing tastes like the original

Christos Ricudis ricudis at paiko.net
Sun Mar 25 16:33:45 EEST 2012


On 03/25/2012 04:00 PM, Thanasis wrote:
>> http://penicuik.lala.gr/~ricudis/software/Mosaic/
>>
>> Και μην ξεχνατε την εκπληκτικη μας προσφορα: Στους πρωτους 10 που θα το
>> κατεβασουν, ΔΩΡΟ ενα account στο geocities με ΑΚΡΙΒΩΣ ΜΗΔΕΝ ΕΥΡΩ!
>>
>>
>>      
> Πώς βάζουμε τα patches (diffs);
>    

Οπως οπουδηποτε αλλου (απανταω γιατι αυτο ειναι χρησιμη πληροφορια για 
οσους μπορει να μην ξερουν).

Συνηθως, η διαδικασια του diff γινεται καπως ετσι :

diff -ruN dirA dirB

οπου dirA το original source tree, και το dirB το source tree με τις 
αλλαγες που θελεις να τις περασεις σε patch.

Το diff αρχειο που παραγεται, εχει τα αναλογα pathnames embedded :

...
...
diff -ruN dirA/koko/lala.c dirB/koko/lala.c
--- dirA/koko/lala.c      1996-07-18 10:49:26.000000000 +0300
+++ dirB/koko/lala.c      2012-03-24 18:02:23.059747200 +0200
@@ -54,6 +54,7 @@
  mpla
  mpla
  mpla
+kati ti tou leipei, ti tou leipei ti tou leipei
  mpla
  mpla
  mpla
...
...

Το θεμα εδω ειναι οτι πρεπει να προσεξεις ωστε η patch να καταφερει να 
βρει τα αρχεια στα οποια θελει να κανει apply το diff.

Αν πας να περασεις το patch με τον προφανη τροπο (patch < file.diff), 
κανει strip ολα τα pathnames, και ψαχνει το lala.c στο current working 
directory, πραγμα που συνηθως αποτυγχανει οικτρα.

Αυτο το αναλαμβανει η παραμετρος -pX οπου X ο αριθμος των pathname 
components που θα κανει strip απο την αρχη ψαχνοντας να βρει τα αρχεια. 
Ειναι απο τις περιπτωσεις στο unix που η default συμπεριφορα ενος 
utility ειναι εντελως ηλιθια, και πρεπει να του δωσεις μια μυστηρια 
παραμετρο για να παιξει.

Ετσι, αν κανουμε patch -p0 < file.diff, θα ψαξει να βρει το 
dirA/koko/lala.c ενω αν κανουμε patch -p1 < file.diff θα ψαξει να βρει 
το koko/lala.c.

Συνηθως το σωστο ειναι το patch -p0 < file.diff. Μερικες φορες ομως 
προκυπτουν προβληματακια του ειδους "το original dirA δεν ταιριαζει 
μ'αυτο που εχουμε εμεις", οποτε μπαινουμε μεσα στο dirA μας και κανουμε 
patch -p1 < file.diff.

(Οποτε μετα μας γκρινιαζει στην περιπτωση που το patch θελει να 
δημιουργησει καινουρια αρχεια ΚΑΤΩ απο την ιεραρχια στην οποια 
βρισκομαστε (π.χ. ενα dirC/), κτλ κτλ)



More information about the Linux-greek-users mailing list