انتقال 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 آن باید صورت گیرد. در اینجا می‌توان مسیر جدید ریشه اصلی مخزن را در سیستم جدید معرفی کرد.



  • #
    ‫۱۴ سال و ۱۰ ماه قبل، پنجشنبه ۱۹ آذر ۱۳۸۸، ساعت ۱۲:۴۸
    آیا تا به حال بانک SourceSafe را در SVN ایمپورت کرده‌اید؟ یا راه مطمئنی برای آن سراغ دارید؟
  • #
    ‫۱۴ سال و ۱۰ ماه قبل، پنجشنبه ۱۹ آذر ۱۳۸۸، ساعت ۱۳:۵۷
    سلام
    شخصا تجربه‌ی این انتقال را نداشتم ولی یک سری ابزار برای اینکار هست:
    http://www.pumacode.org/projects/vss2svn
    و همچنین
    http://www.poweradmin.com/SOURCECODE/VSSMIGRATE.ASPX
  • #
    ‫۱۴ سال و ۱۰ ماه قبل، شنبه ۲۱ آذر ۱۳۸۸، ساعت ۰۳:۵۶
    سلام!

    آقای نصیری من آموزش شما در مورد SVN رو خوندم و نصب کردم و الان دارم ازش استفاده میکنم.

    فقط چند تا سوال دارم:

    اول اینکه چه طور میتونم برای هر ورژن یه خروجی بگیرم.یعنی بعد از تغییر مثلا web.config ورفع مشکل کلا یک فولدر جدید براش تهیه بشه.

    و دوم اینکه زمانی که توی vs یه پروژه جدید اضافه میکنم زمانی که میخواد کارهای SVN انجام بشه از من یک URL میخواد که باید اول توی کنسول بسازم بعد اینور وارد کنم تا درست بشه.راهی نداره خودش این بخش رو بسازه ؟
  • #
    ‫۱۴ سال و ۱۰ ماه قبل، شنبه ۲۱ آذر ۱۳۸۸، ساعت ۱۲:۴۴
    سلام
    1 - اساس کار متداول SVN بر اساس فولدر سازی به ازای هر تغییر نیست. به ازای هر تغییر شما می‌تونید موارد اصلاحی را commit‌ کنید. بعد می‌شود بر اساس comment نوشته شده برای این commit‌ گزارش گرفت و نگارش جاری را مثلا با 5 نگارش قبل مقایسه کرد. با همین ابزار diff ایی که معرفی کردم. ضمنا امکان export کامل پروژه به ازای هر نگارش commit شده وجود دارد.
    البته مباحث انعشابات و غیره هم وجود دارد که در فصلی جداگانه به آن پرداخته شده.
    می‌شود برچسب یا tag ایجاد کرد و کل پروژه را تا یک نگارش خاص در آن قرار داد. عموما برای ارائه نگارش‌های عمومی این روش توصیه می‌شود.
    یا می‌شود یک انعشاب درست کرد و جدا از خط اصلی کاری یا همان trunk کار کرد (مثلا آزمایش یک قابلیت جدید) و سپس این انعشاب تکمیل شده را با trunk و خط اصلی کاری یکی کرد.
    هر کدام از این موارد (برچسب یا انشعاب) هم بر اساس پوشه‌ها هستند البته در مخزن کد.

    2 - افزونه Visual SVN این مورد را ساده‌تر کرده. خودش گزینه‌ی ایجاد خودکار مخزن و افزودن به آن‌را دارد و از این لحاظ در وقت صرفه جویی می‌شود.
  • #
    ‫۱۴ سال و ۹ ماه قبل، شنبه ۳ بهمن ۱۳۸۸، ساعت ۲۱:۵۶
    سلام
    من سالها قبل تجربه استفاده از visual source safe را داشتم. ولی همانطور که میدانید این نرم افزار مشکلات بسیاری دارد.
    هم اکنون برای پروژه های شخصی خود به دنبال یک نرم افزار Source Controller میگردم. Team Foundation server میتواند گزینه مناسبی باشد ولی آنهم نیاز به نصب یک Windows server و Active Directory دارد.
    آیا SVN یا Subversion میتواند پاسخگوی نیاز های شخصی باشد؟
    شما از کدامیک از این دو استفاده می کنید؟
    زمزمه هائی درباره وجود یک نرم افزار Source Control بر روی Visual Studio 2010 وجود دارد.
    آیا باید منتظر تولد نرم افزاری جدید در این زمینه بود؟
  • #
    ‫۱۴ سال و ۹ ماه قبل، شنبه ۳ بهمن ۱۳۸۸، ساعت ۲۳:۰۴
    SVN برای کارهای شخصی هم بسیار خوب و ساده، جوابگو است و من از آن استفاده می‌کنم.
    مطالب ارسالی را که ملاحظه کردید در کمتر از یک ربع می‌توان پیاده سازی و راه اندازی کرد.
  • #
    ‫۱۴ سال و ۷ ماه قبل، پنجشنبه ۱۲ فروردین ۱۳۸۹، ساعت ۰۲:۳۸
    اگر تصاویر این مطلب را مشاهده نمی‌کنید به علت تغییرات گوگل است.
    لطفا فایل "خلاصه وبلاگ" را دریافت کنید که تمام تصاویر را هم دارد. (در منوی سمت راست سایت، بالا)