svn logo

μετακίνηση του subversion σε νέο windows server

by

in

Το subversion έχει αποδειχτεί αξιόπιστο version control system και φαίνεται να είναι το πιο δημοφιλές vcs, με το git να ακολουθεί από κοντά, ανεπίσημα μεν, ενδεικτικά δε, δείτε εδώ σχετικά. Όσο πιο δημοφιλές είναι, τόσο περισσότεροι χρήστες το εμπιστεύονται και το χρησιμοποιούν στους server τους για να στεγάσουν τα αρχεία τους. Όμως, κι αν το svn παραμένει αξιόπιστο, το hardware του συστήματος που το φιλοξενεί παλιώνει και φτάνει η στιγμή για τη μετακόμιση του. Ας δούμε πως γίνεται στα Windows.

Σενάριο 1: ομαλή, προγραμματισμένη μετακίνηση

Αυτό είναι το καλό σενάριο, όπου ο διαχειριστής του svn καλείται να ακολουθήσει τα εξής βήματα:

  • εγκαθιστά το svn service στο νέο server,
  • σχηματίζει το dump του repository στον παλιό server (svnadmin dump /path/to/repository > repository-name.dmp),
  • αντιγράφει το dump στο νέο server,
  • δημιουργεί το repos στο νέο server (svnadmin create repository-name),
  • κάνει import το dump στο νέο repos (svnadmin load repository-name< repository-name.dmp)
  • ρυθμίζει περιοδικό backup του νέου repos (svnadmin dump -q c:/repository-name > c:\backups\repository-name.dmp)

…και η ζωή συνεχίζεται κανονικά.

Σενάριο 2: αιφνίδια, απρογραμμάτιστη μετακίνηση

Αυτό είναι το κακό σενάριο, ο δίσκος έχει χτυπήσει, ο server έχει πέσει, κατά τύχη βρίσκεται ένα πρόσφατο backup του repos που asap πρέπει να επανέλθει στο νέο server και όλη η ομάδα περιμένει τον admin του svn να κάνει τα μαγικά βήματα:

  • αντιγράφει το διασωθέν file system του repos στο νέο server,
  • επιτρέπει στον χρήστη που θα τρέχει το svn service να έχει πλήρη δικαιώματα στο φάκελο του repos,
  • εγκαθιστά το svn service στο νέο server.

Ειδικά το βήμα καθορισμού δικαιωμάτων είναι βασικό. Στο σενάριο 1, το repos δημιουργείται εκ νέου, συνεπώς το service έχει πλήρη δικαιώματα πάνω του. Αντίθετα, στο σενάριο 2, το file system έχει αρχικά σχηματιστεί στον παλιό server, με αποτέλεσμα ο νέος svn server να μην έχει δικαιώματα στο repos και στο πρώτο commit να προκύψει το σφάλμα:

Can’t open file ‘C:\test_repos\db\txn-current-lock’: Access is denied

Αν για παράδειγμα δημιουργήσατε το service με την παρακάτω εντολή, το service θα τρέχει κάτω από το λογαριασμό LocalService:

sc create svnserve binpath= "C:\Program Files\Subversion\bin\svnserve.exe --service --root c:\test_repos" displayname= "Subversion" depend= tcpip start= auto obj= "NT AUTHORITY\LocalService"

Άρα το account LocalService θα πρέπει να έχει πλήρη δικαιώματα στο directory  c:\test_repos.

 


Comments

Αφήστε μια απάντηση

Η ηλ. διεύθυνση σας δεν δημοσιεύεται. Τα υποχρεωτικά πεδία σημειώνονται με *