۱۳۸۸/۰۹/۱۸

انتقال SVN به يك سيستم جديد


در راستاي مهاجرت به ويندوز 7، كار نصب و راه اندازي SVN و كلاينت‌هاي آن بايد مجددا انجام مي‌شد. اگر براي بار اول است كه به مبحث SVN برخورد مي‌كنيد، مطالعه اين جزوه توصيه مي‌شود. مطالب ذيل براي افرادي مفيد است كه قصد انتقال سيستم SVN موجود خود را به مكان و يا سيستم عامل ديگري در اسرع وقت دارند.

الف) دريافت و نصب Visual SVN server
يا مي‌توان SVN خالص را از سايت آن دريافت كرد و يا جهت سهولت كار و همچنين دسترسي به يك كنسول مديريتي مي‌توان برنامه‌ي رايگان Visual SVN server را از آدرس زير دريافت و نصب كرد:

پس از نصب، ابتدا بايد يا كاربر جديدي را جهت استفاده از منابع آن تعريف كرد و يا از نحوه‌ي اعتبار سنجي يكپارچه با ويندوز هم مي‌توان استفاده كرد كه من از اين روش دوم استفاده مي‌كنم (شكل زير، كليك راست بر روي نود اصلي visual SVN server و سپس انتخاب خواص و مراجعه به برگه‌ي اعتبار سنجي آن):



ب)دريافت و نصب TortoiseSVN

نصب آن نكته‌ي خاصي ندارد. اما يك سري نكته‌ي ريز پس از نصب آن بهتر است رعايت شود كه در ادامه ذكر مي‌شود:

ج) دريافت و نصب برنامه‌ي WinMerge
برنامه‌ي Diff پيش فرض TortoiseSVN آنچنان قوي نيست. به همين جهت مي‌توان برنامه‌ي WinMerge را با آن يكپارچه كرد. براي اين منظور ابتدا آن‌را دريافت نمائيد:

اگر پس از نصب TortoiseSVN آن‌را نصب كنيد، در حين نصب پيشنهاد يكپارچه سازي با TortoiseSVN را نيز مي‌دهد. اگر ابتدا WinMerge را نصب كرده‌ايد و سپس TortoiseSVN بر روي سيستم شما نصب شده، فقط كافي است مطابق شكل زير ابتدا به قسمت Diff viewers آن مراجعه كرده و سپس با انتخاب گزينه‌ي external ، دستور خط فرمان زير را وارد نمائيد:

C:\Program Files (x86)\WinMerge\WinMergeU.exe -e -x -ub -dl %bname -dr %yname %base %mine



بديهي است مسير WinMergeU.exe مطابق مسير نصب در سيستم شما بايد تنظيم شود.

د) تنظيم مسير تحت نظر قرار گرفتن سيستم
TortoiseSVN به صورت پيش فرض كل سيستم را جهت مشاهده‌ي تغييرات تحت نظر قرار مي‌دهد كه گاهي باعث كاهش كارآيي آن خواهد شد. براي رفع اين مشكل مي‌توان مسيرهايي را كه پروژه‌هاي شما در آن قرار دارند را به آن معرفي نمود تا بار كلي سيستم كاهش يابد.



همانطور كه در شكل نيز ملاحظه مي‌كنيد، Include path مقدار دهي شده است.

ه) مشخص سازي پسوندهايي كه بهتر است از آن‌ها صرفنظر شود
به برگه‌ي general تنظيمات TortoiseSVN مراجعه كرده و در قسمت global ignore pattern آن، موارد زير را وارد نمائيد:



اين موارد شامل پروژه‌هاي دات نت، دلفي ، VC و امثال آن است و همچنين يك سري فايل بايناري كه عموما با پروژه‌هاي برنامه نويسي نيازي به ثبت نگارش آن‌ها نيست.

*.dcu *.~* dcu temp *.exe *.zip *.bkm *.ddp *.cfg *.dof *.dsk *.ini *.hlp *.gid *.bmp *.png *.gif ~* *.log bin debug release *.map *.chm *.bkf Thumbs.db *.mdb .obj *.elf *.stat *.ddp *.bpl *.map *.GID *.hlp *.opt *.dll *.raw *.BIN *.obj *.pdb *.scc Debug Release *.xml obj *.~* *.backup *.INI *.ArmLog *.KeyLog *.NanoLog *.Stats *.PreARM *.old *.drc *.*~ *.doc *.pdf *.bmp *.jpg *.MRW *.NEF *.ORF *.psd *.X3F __history *.local *.identcache *.bak Thumbs.db *.ldb *.dex *.rar DllDcu *.lck CVS cvs *.txt *.TXT *.jdbg *.HLP *.KWF *.xls *.cnt *.dsm *.dti *.tmp *.lnk *.cbk *.mes *.suo *.ncb *.user _ReSharper.* [Bb]in obj [Dd]ebug [Rr]elease *.aps *.eto


در همين برگه، اگر هنوز از VS2003 استفاده مي‌كنيد، تيك مربوط به استفاده از _svn بجاي .svn را قرار دهيد تا VS.Net با پوشه‌هاي مديريتي ذكر شده مشكل پيدا نكند.

و) نصب افزونه‌هاي SVN سازگار با VS.Net
يا مي‌توان از افزونه‌ي Visual SVN استفاده كرد (كه رايگان نيست) و يا AnkhSVN كه رايگان و سورس باز است.
ولي در كل يك مورد را بيشتر نصب نكنيد. علت هم كند شدن VS.Net است به دليل فعاليت‌هاي پشت صحنه‌ي هر كدام از اين افزونه‌ها كه زياده روي در تعداد آن‌ها گاها باعث كرش هم مي‌شود. بنابراين همان يك مورد كافي است.

ز) Import مخزن‌هاي قبلي
تا اينجا مقدمات كار فراهم شد. اكنون نوبت به import مخزن‌هاي بجا مانده از سيستم قبلي است. براي اينكار مطابق شكل زير، گزينه‌ي import existing repositories را انتخاب كرده و مسير مخزن‌هاي قبلي خود را بايد معرفي نمود (به ازاي هر كدام يكبار بايد اين عمليات صورت گيرد).



پس از انجام اين مراحل يكبار بايد سيستم reboot شود و اكنون همه چيز مثل قبل خواهد شد!


نكته:
اگر مسير ريشه مخزن‌هاي جديد با مسير آن‌ها در سيستم قبلي متفاوت است، هنگام commit كارهاي خود با خطاي زير متوقف خواهيد شد:
Commit failed (details follow): Unable to open an ra_local session to URL
Unable to open repository 'file:///C:/Repositories/tracking/trunk'




اشكالي ندارد! براي رفع آن بايد از گزينه‌ي relocate مربوط به TortoiseSVN استفاده كرد.
بر روي پوشه كاري پروژه خود كليك راست كرده، انتخاب گزينه‌ي TortoiseSVN و سپس انتخاب گزينه‌ي Relocate آن بايد صورت گيرد. در اينجا مي‌توان مسير جديد ريشه اصلي مخزن را در سيستم جديد معرفي كرد.