κρασάρισμα δίσκου και μερικό χάσιμο svn repository

Giorgos Keramidas keramida at ceid.upatras.gr
Tue Sep 23 22:31:36 EEST 2008


On Tue, 23 Sep 2008 22:08:23 +0300, Harris Kosmidhs <hkosmidi at laboratorium.gr> wrote:
> Giorgos Keramidas wrote:
>>> Γίνεται να διορθωθεί αυτό;
>>
>> Με restore από backup, όταν υπάρχει.  Αν δεν υπάρχει backup, ``it's
>> dead Jim''.
>
> Ok είναι dead :-(
>
> Το θέμα είναι ότι δεν μπορώ να κάνω commit επειδή δεν υπάρχει το
> συγκεκριμένο αρχείο.

Ακριβώς :-(

Το repository corruption είναι κάτι για το οποίο δεν έχει ιδιαίτερα καλό
support το svn.  Για την ακρίβεια δεν έχει καν support, και βασίζεται στην
ύπαρξη εξωτερικού backup για έξτρα ασφάλεια.

> Η ερώτηση γίνεται τώρα:
> Μπορώ να χρησιμοποιήσω το ίδιο repository απο εδώ και πέρα και ας
> πούμε ότι δεν μ' ενδιαφέρει η ιστορικότητα(revisions) των προηγούμενων
> data.  Ή πρέπει να κάνω νεό repository και import;

Πρέπει να κάνεις import σε νέο repository.  Έτσι χάνεις όλο το ιστορικό,
αλλά μην πετάξεις το παλιό repository.  Πάρε ένα αντίγραφο όσο μπορείς,
μήπως στο μέλλον το svn μπορεί να κάνει recover με κάπως αυτόματο τρόπο από
semi-corrupted repositories.

Για να αποφύγεις παρόμοια περιστατικά στο μέλλον μπορείς:

  * Να κρατάς regular backups από το svn repository και να *δοκιμάζεις*
    στο τέλος από το svn backup ότι όντως μπορεί να γίνει dump & restore
    το full repository χωρίς errors.

  * Να χρησιμοποιήσεις κάποιο SCM που είναι πιο «ανθεκτικό» σε single
    point of failure προβλήματα, όπως το Git ή το Mercurial (Hg).

Το πρώτο σημαίνει πως μπορείς να συνεχίσεις να χρησιμοποιείς το υπάρχον
infrastructure, που προφανώς είναι βασισμένο στο svn (π.χ. τα backup
scripts, web interfaces, bug tools & integration που έχεις σήμερα, κλπ.).
Αν έχεις ήδη επενδύσει αρκετά στο Subversion, και υπάρχει μια ομάδα ατόμων
που είναι εκπαιδευμένοι σε αυτό, έχουν μάθει τη χρήση του και θα είναι
χρονοβόρο να μάθουν κάτι διαφορετικό, τότε αυτή είναι, με διαφορά, η πιο
καλή λύση από τις δύο.

Το δεύτερο σημαίνει ότι θα μπορείς να έχεις ένα πιο laissez faire μοντέλο
δουλειάς, όπου κάθε workspace είναι ένα πλήρες, functional repository, με
ολοκληρωμένο ιστορικό, και αυτόματο backup για κάθε ξεχωριστό κλώνο του
αρχικού workspace.  Αν είσαι μόνος σου, και πρόκειται να ξεκινήσεις από ένα
«καθαρό» snapshot του svn κώδικα, τότε η δική μου πρόταση είναι 100% η
δεύτερη.  Τα κρυπτογραφικά ασφαλή SHA-256 checksums που κρατάνε το Git και
το Mercurial για κάθε commit, η δυνατότητα offline δουλειάς, η ταχύτητα σε
σχέση με το Subversion, και το γεγονός ότι αν ένα workspace χαθεί μπορείς
να το αγνοήσεις και να φτιάξεις από την αρχή ένα «κεντρικό» tree με βάση
ένα οποιοδήποτε υπάρχον κλώνο/workspace είναι αρκετά ως λόγοι για να ρίξεις
_τουλάχιστον_ μια ματιά σε Git & Hg.

  * Git references:

    http://git.or.cz/
    http://www-cs-students.stanford.edu/~blynn/gitmagic/

  * Mercurial references:

    http://www.selenic.com/mercurial/
    http://hgbook.red-bean.com/



More information about the Linux-greek-users mailing list