از تاریخ جولای ۲۰۱۲، FreeBSD از برنامه Subversion برای کنترل کدمنبع و نسخهبندی استفاده میکند و تمامی کدهای منبع این سیستمعامل به همراه مستندات و سیستم پورت ها توسط برنامه Subversion مدیریت و نگهداری میشوند.
نصب Subversion
قبل از انجام هر کاری، ابتدا باید برنامه Subversion را نصب کنید. اگر در حال حاضر درخت پورت ها در سیستم شما وجود دارد، میتوانید svn را به این طریق نصب کنید:
# cd /usr/ports/devel/subversion # make install clean
اما اگر درخت پورت ها در سیستم شما وجود ندارد می توانید svn را از طریق بستههای باینری نصب کنید:
# pkg_add -r subversion
در صورتی که از pkgng برای مدیریت بستهها استفاده میکنید:
# pkg install devel/subversion
استفاده
با استفاده از دستور svn میتوانید به یک مخزن راه دور متصل شوید و کدهای منبع را دریافت کرده و آنها را در یک دایرکتوری محلی ذخیره کنید. اگر در حال حاضر نسخهای از کدهای منبع در سیستم شما وجود دارد که توسط svn دریافت نشده، جهت جلوگیری از بروز مشکل آن را تغییر نام داده و یا پاک کنید.
نحوه استفاده از دستور svn برای دریافت کدهای منبع به صورت زیر است:
svn checkout svn-mirror/repository/branch lwcdir
در دستور بالا:
- svn-mirror: آدرس سرور راه دور جهت دریافت کدهای منبع را مشخص میکند. برای پیدا کردن سرورها میتوانید اینجا را ببینید.
- repository: مشخص کننده مخزنی است که قصد دانلود آن را دارید. برای دریافت کدمنبع سیستمعامل از base، برای دریافت مستندات از doc و برای دریافت درخت پورت ها از ports استفاده کنید.
- branch: این فیلد نسخه مخزن مورد نظر را مشخص میکند. برای دریافت نسخه -CURRENT از head و برای دریافت نسخه -STABLE، بسته به ورژن FreeBSD، از stable/8 (برای ۸٫x) و stable/9 (برای ۹٫x) استفاده کنید. معمولاً برای دریافت مستندات و درخت پورت ها از نسخه head استفاده میشود.
- lwcdir: مشخص کننده یک دایرکتوری محلی برای ذخیره کدهای منبع میباشد. مرسوم است که مستندات را در /usr/doc و درخت پورتها را در /usr/ports و کدمنبع سیستمعامل را در /usr/src ذخیره میکنند.
با ذکر چند مثال مطالب بالا را روشن میکنیم. در اولین مثال میخواهیم درخت پورت ها را با استفاده از پروتکل HTTPS از سرور svn0.us-west.FreeBSD.org دریافت کرده و در مسیر /usr/ports قرار دهیم. اگر در حال حاضر شاخه /usr/ports در سیستم شما وجود دارد و قبلاً از نرمافزار دیگری به غیر از svn برای دریافت آن استفاده کردهاید، حتماً این شاخه را تغییر نام داده و یا پاک کنید.
# svn checkout https://svn0.us-west.FreeBSD.org/head/ports /usr/ports
همین طور برای دریافت کدمنبع FreeBSD 9-STABLE میتوانید به صورت زیر عمل کنید:
svn checkout https://svn0.us-west.FreeBSD.org/base/stable9 /usr/src
دستور بالا بعد از دانلود کدهای منبع، آنها را در مسیر /usr/src ذخیره میکند. باز هم تکرار میکنیم در صورتی که این شاخه از قبل در سیستم شما وجود دارد و با استفاده از نرمافزار دیگری غیر از svn آن را دریافت کردهاید، حتما آن را تغییر نام داده و یا پاک کنید.
بعدها اگر قصد آپدیت درخت پورته ا را داشتید، میتوانید به صورت زیر عمل کنید:
# svn update lwcdir
برای مثال برای آپدیت درخت پورت ها میتوانیم به صورت زیر عمل کنیم (در مرحله قبل درخت پورت ها را واکشی کردیم):
# svn update /usr/ports
عمل به روز رسانی زمان خیلی کمی به طول خواهد انجامید. چون فقط فایلهایی که تغییر کردهاند دریافت خواهد شد.
روش دوم برای به روزرسانی، استفاده از Makefile است. کافی است وارد یکی از شاخههای /usr/src، /usr/ports یا /usr/doc شده و دستور زیر را اجرا کنید:
# make update SVN_UPDATE=yes