יצירת שרת SVN בשרת הפיתוח

התקנת מערכת ניהול גרסאות מסוג SVN על לינוקס (דביאן) והתחברות אליו עם Tortoise

SVN היא שיטת ניהול הגרסאות המובילה בסביבת קוד פתוח. למרות שיש עוד שיטת ניהול גרסאות (כמו Git שתפסה תאוצה בזמן האחרון). SVN לטעמי היא השיטה המוצלחת ביותר לניהול גרסאות. כאשר מקובל להתקין שרת SVN על שרת פיתוח מבוסס לינוקס ולנהל אותו ישירות מה-Shell או באמצעות ה-repo-browser של SVN Tortoise שהוא קליינט מוצלח מאד לחלונות (למי שלא מכיר).

קל להתקין SVN Tortoise על מחשב הפיתוח שעובד על חלונות. קצת פחות קל להתקין שרת SVN על שרת פיתוח מבוסס לינוקס (דביאן). יש כמה סוגים של התקנות, הפופולרית יותר היא התקנה עם SSH לאבטחה יותר טובה. אבל אם עסקינן בשרת פיתוח ביתי, שגם כך לא חשוף בכלל לאינטרנט או שנמצא מאחורי פיירוול טוב, אין סיבה שלא להתקין שרת SVN מאובטח מעט פחות אך קל יותר להתקנה ולתפעול. כל הפקודות במדריך הזה מתאימות להפצת לינוקס מסוג דביאן (אובונטו, centos וכו').

ראשית עלינו להתקין את SVN על שרת הפיתוח שלנו. נכנסים ל-shell של לינוקס ומתקינים גם את ה-SVN וגם את SVN server:


sudo apt-get install subversion libapache2-svn

אחרי כן ניצור תיקיה שבה יהיו ה-repository שלנו. אני בדרך כלל יוצר תיקית SVN ממש מתחת ל-root:


sudo svnadmin create /svn

עכשיו נערוך את קובץ ההגדרות. נכנס עם עורך הטקסט nano לקובץ ההגדרות:


sudo nano /etc/apache2/mods-enabled/dav_svn.conf

ונשנה את מה שמופיע שם למה שמופיע פה. אין הרבה הבדל ביניהם, רק כמה uncomment.


# Note, a literal /svn should NOT exist in your document root.
<location /svn>

  # Uncomment this to enable the repository
  DAV svn

  # Set this to the path to your repository
  #SVNPath /var/lib/svn
  SVNPath /svn

  # Alternatively, use SVNParentPath if you have multiple repositories under
  # under a single directory (/var/lib/svn/repo1, /var/lib/svn/repo2, ...).
  # You need either SVNPath and SVNParentPath, but not both.
  #SVNParentPath /var/lib/svn

  # Access control is done at 3 levels: (1) Apache authentication, via
  # any of several methods.  A "Basic Auth" section is commented out
  # below.  (2) Apache limit and limitexcept, also commented out
  # below.  (3) mod_authz_svn is a svn-specific authorization module
  # which offers fine-grained read/write access control for paths
  # within a repository.  (The first two layers are coarse-grained; you
  # can only enable/disable access to an entire repository.)  Note that
  # mod_authz_svn is noticeably slower than the other two layers, so if
  # you don't need the fine-grained control, don't configure it.

  # Basic Authentication is repository-wide.  It is not secure unless
  # you are using https.  See the 'htpasswd' command to create and
  # manage the password file - and the documentation for the
  # 'auth_basic' and 'authn_file' modules, which you will need for this
  # (enable them with 'a2enmod').
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
  Require valid-user

  # To enable authorization via mod_authz_svn
  #AuthzSVNAccessFile /etc/apache2/dav_svn.authz

  # The following three lines allow anonymous read, but make
  # committers authenticate themselves.  It requires the 'authz_user'
  # module (enable it with 'a2enmod').
  #<limitexcept GET PROPFIND OPTIONS REPORT>
    #Require valid-user
  #</limitexcept>

</location>


שימו לב שבשורה SVNPath /svn ה/svn זה הנתיב שצריך להכניס במידה ולא בחרתם ליצור repository בתיקית svn מתחת ל-root.

עכשיו צריך ליצור user ל-SVN.


sudo htpasswd -c /etc/apache2/dav_svn.passwd 

כאשר במקום ה- אנו רושמים את השם האמיתי של המשתמש (למשל ran). אחרי כן אנו נתבקש להזין סיסמה ואחרי כן שוב סיסמה.

אם אנו רוצים ליצור משתמש נוסף, אנו נשתמש בשורה הבאה:


sudo htpasswd -m /etc/apache2/dav_svn.passwd 

השינוי הוא בין האות c לאות m.

עכשיו, אחרי שסיימנו את כל ההגדרות, נרסט את ה-apache:


sudo /etc/init.d/apache2 restart

אם אין שגיאות (ולא צריכות להיות) אז כדאי לבדוק את השרת. אנו נכניס את ה-ip של המחשב שלנו בתוספת שם התיקיה. בשרת הפיתוח שלי למשל, ה-IP הפנימי של מחשב הפיתוח הוא: 192.168.253.83 ולפיכך הכתובת של שרת ה-SVN היא: http://192.168.253.83/svn
נכניס את הכתובת לדפדפן, אם קופץ לנו פופ-אפ חביב שמבקש שם משתמש וסיסמה, הכל תקין. נזין שם משתמש וסיסמה ונראה את ה-repository שלנו.

עכשיו הגיעה העת לחבר את שרת ה-SVN ל-Tortoise הנאמן שלנו. אבל זה די קל, נכנסים ל-Repo-browser ומכניסים בראשו את הכתובת שלנו, כמו למשל http://192.168.253.83/svn. יקפוץ פופ אפ של שם משתמש וסיסמה, נכניס את שם המשתמש והסיסמה וזה הכל.

במידה וכאשר אנו מנסים ליצור תיקיה באמצעות ה-Tortoise ויש לנו שגיאת access denied, אנחנו צריכים לבדוק את ההרשאות בתיקית svn/.

באופן עקרוני זו ממש לא הדרך ליצור SVN מאובטח, אבל בשביל שרת פיתוח שנמצא מאחורי פיירוול, זה בסדר גמור.

פוסטים נוספים שכדאי לקרוא

גלילה לראש העמוד